我附上了舊數據庫的簡單圖。
在這種設計中
- 有兩個表Ť和P由表TP表示之間的多對多的關係。
- 的關係表TP有一個一對多與表d關係現在
,沒有在規定的一些變化,即牛逼本身也有很多(d)秒。
如何在除舊(TP到d)使這些新的外鍵條件表d。
我的意思是,是否有可能鏈接T. [ID]到D. [T]除了鏈接TP。[T,P]到D. [T,P]?
如何解決我的新要求?
我附上了舊數據庫的簡單圖。
在這種設計中
,沒有在規定的一些變化,即牛逼本身也有很多(d)秒。
如何在除舊(TP到d)使這些新的外鍵條件表d。
我的意思是,是否有可能鏈接T. [ID]到D. [T]除了鏈接TP。[T,P]到D. [T,P]?
如何解決我的新要求?
是的,您可以將表T中的外鍵引用放入表D中。它將是表T與表TP之間的一對多關係。
我不明白你爲什麼想要表D中的表T的FK引用。目前,您可以加入T到TP到D,以獲得表D中與表T中的行相關的行。
看起來這很簡單。只需添加一個新的列到D連接到T.請注意,如果我有這個權利,則來自D [T,P]的T可能不同於來自D的T. [T]
我通過以下方式解決了這個問題:
現在,
如果新行插入d表,以便P成分值設置爲NULL ,則只是約束噸至d將被檢查。
如果新行都有它的P組件設置爲從NULL,延遲值,那麼這兩個約束噸至d和目標價至d將被檢查。
如果我只是將T添加到D關係。然後,向D插入新行可能會將TP切換爲D狀態。這是錯的嗎? – Lio
@Lio - 是的,這是正確的,但是這也會破壞你的數據庫表設計,以及如果你要添加T到D的關係。如果你在D中放置一個新的行,你會打破目前的TP到D的關係,並與我建議的額外的FK關係。 – GWines
如果我只是讓D [P]爲空,你覺得怎麼樣?這有道理嗎? 我在說,因爲sql-sever似乎正在接受它。 我現在很困惑。 – Lio