假设您有以下型号。
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 :(得分:1)
完美的方式是不要有这种关系,因为它打破了数据规范化规则https://en.wikipedia.org/wiki/Database_normalization
如果出于性能原因需要它,那么它不会产生很多意义:外键上的索引无论如何都会在3个表中进行快速查找。这种方案仅适用于不应修改任何内容的静态表。在这种情况下,它肯定会为您节省一些时间。
答案 1 :(得分: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
文章。