2015-09-18 37 views
0

假設你有以下模型。當外鍵指向別的東西時,移動其他數據以及

Book has Articles (Article has foreign key to Book) 

Article has Images (Article has upto #max number of images) 

Image also has a foreign key to Book. 

編輯某些圖像都包含在這本書而不是文章中擁有)

說你感動的文章從BOOK1到Book2。

您希望文章中的圖像也指向book2。

處理此問題的首選方式是什麼?

回答

0

數據模型是不必要的複雜。你應該避免這種解決方案。但是,如果您必須忍受這種情況,您可以在更新articles之前使用觸發器,例如

create function trigger_before_update_on_articles() 
... 
    if new.book_id <> old.book_id then 
     update images set book_id = new.book_id 
     where article_id = new.article_id 
... 

爲了標準化模型,你可以使用只包含一本書的圖像dummy文章。

1

最完美的方式將不會有這樣的關係,因爲它打破了數據的規範化規則https://en.wikipedia.org/wiki/Database_normalization

如果你需要它的性能的原因,除了它沒有費很大的精力:外鍵索引無論如何都會在3張桌子上查找。這種方案僅適用於你不應該修改任何內容的靜態表。在這種情況下,它肯定會爲你節省一些時間。

+0

對不起,我做了一個編輯,可以解釋爲什麼我需要圖像 - >圖書關係。你可能仍然會說我還在違反某些事情,請告訴我如何讓它變得更好。 – eugene

+0

也許,做兩個單獨的關係:book_image和article_image將是最好的方法。 –

相關問題