Database-Design

是否可以強制執行相應的層次結構?

  • March 20, 2020

我建構了以下玩具範例來說明我的問題。

模式的左側描述了一個由其部分組成的抽象產品。

模式的右側描述了這些產品/零件的實際生產實例。水平關係表明實例是從哪個“模板”建構的。請注意,part_instance最初可能尚未將 a 分配給 a product_instance

在此處輸入圖像描述

這是挑戰:

僅當建構 a 的基礎實際上是建構基礎的基礎的一部分時,才可以將a 分配part_instance給 a 。因此,右側的(可選)層次結構應強制對應於左側的層次結構。product_instance``part``part_instance``product``product_instance

或者作為一個例子:假設part1屬於product1並且part2屬於product2。現在讓我們創建連結到product1的**productInstance1 ,連結到product2productInstance2,連結到part1partInstance1和連結到part2的**partInstance2。應該允許將partInstance1分配給productInstance1,但不能分配給productInstance2。同樣,應該允許將partInstance2分配給productInstance2但不是productInstance1

問題:

是否可以在數據庫中強制執行此規則?

根據對我的問題的評論,看起來解決方案是添加product_id到表的主鍵partproduct_instance

在此處輸入圖像描述

引用自:https://dba.stackexchange.com/questions/262335