Database-Design
是否可以強制執行相應的層次結構?
我建構了以下玩具範例來說明我的問題。
模式的左側描述了一個由其部分組成的抽象產品。
模式的右側描述了這些產品/零件的實際生產實例。水平關係表明實例是從哪個“模板”建構的。請注意,
part_instance
最初可能尚未將 a 分配給 aproduct_instance
。這是挑戰:
僅當建構 a 的基礎實際上是建構基礎的基礎的一部分時,才可以將a 分配
part_instance
給 a 。因此,右側的(可選)層次結構應強制對應於左側的層次結構。product_instance``part``part_instance``product``product_instance
或者作為一個例子:假設part1屬於product1並且part2屬於product2。現在讓我們創建連結到product1的**productInstance1 ,連結到product2的productInstance2,連結到part1的partInstance1和連結到part2的**partInstance2。應該允許將partInstance1分配給productInstance1,但不能分配給productInstance2。同樣,應該允許將partInstance2分配給productInstance2但不是productInstance1。
問題:
是否可以在數據庫中強制執行此規則?
根據對我的問題的評論,看起來解決方案是添加
product_id
到表的主鍵part
中product_instance
。