Sql-Server
在數據庫圖中表示多對一關係
我有兩張桌子
loadingDetail
,並且stowageDetail
:loadingDetail | stowageDetail [PK] loadingID (int) | [PK] StowageID (int) [PK] transactionID (in) | [PK] room (int) | [UNIQUE] transactionID (int)
transactionID
inloadingDetail
可以在loadingID
值不同時重複。transactionID
instowageDetail
是唯一的。- 許多
transactionID
值 inloadingDetail
只能有一個transactionID
instowageDetail
。transactionID
沒有inloadingDetail
時可以刪除transactionID
instowageDetail
(No Action)我如何在數據庫圖中表示它?
附加資訊
我真的在尋找一個數據庫圖可能的答案。但是我試圖在數據庫圖中找到有關多對一關係的資訊,但似乎找不到。這種關係就像許多容器放在大盒子裡一樣。如果 Big Box 已經被移除,容器就可以被移除。支持的數據庫圖“我知道”是一對多的,在我的情況下不適合,因為首先刪除了 Box,然後是 Containers。
當loadingID不同時,loadingDetail中的transactionID可以重複
這是您的要求。表複合鍵已經在處理這個問題。
stowageDetail 中的 transactionID 是唯一的
這是你的要求
•loadingDetail 中的許多transactionID 在stowageDetail 中只能有1 個transactionID
這是你的要求。這個可以
Unique index
。或者它可以通過程式碼/觸發器來處理。這永遠不能是 FK 約束。您不能定義部分 FK 約束。•loadingDetail中的transactionID可以在stowageDetail中沒有transactionID時刪除(No Action)
因為您無法定義部分 FK 約束。您必須通過程式碼處理此問題。
**Instead of Trigger**
非常適合這種情況。我假設由於您的要求,您不能在 stowageDetail 表中將 transactionID 和 loadingID 定義為 FK。
根據您的要求,您的設計已經可以了。添加任何其他候選鍵都是無用的。你不能通過 PK-FK 約束來做到這一點。