2014-10-01 68 views
0

早上好, 在設計一個數據庫時,我有一個表(TabA的調用它)可能與其他四個表有關係。從這個意義上說,這張桌子可以同時與四個第一個,第二個,第三個到第四個連接,但不能與他們聯繫;或者它可以有一個(與任何表)或兩個鏈接(總是與其中任何兩個),等等。設計表SQL Server

表格TabA我添加了四個字段,這四個字段引用了四個表格,當它們沒有任何連接時它們可以是「null」。想知道是這種最佳設計(比如TabA中的四個字段),或者你可以爲這種類型的情況做出更好的設計嗎?

非常感謝您的回覆。

戴夫

+0

您能否爲我們提供更多信息,以及關於您的表格和其中的字段的示例。 – Arun 2014-10-01 12:45:47

+2

如果我理解正確,那麼你提出的建議聽起來是正確的。如果你有一個有四個關係的表到四個獨立的表,那麼你應該有4列,每個列都是相關表的外鍵。如果需要,您可以使用檢查約束來管理關係的最小/最大數量(例如,如果「Column1」爲空,則「Column2」不能爲空)。 – GarethD 2014-10-01 12:51:47

+0

然後,這個例子是:http://i.imgur.com/gW8uRhD.jpg,我有關係,但他們甚至可能不在那裏;我的問題是:設計是最好的,或者也許會有另一個,也許我可能沒有表中的四個領域,也許不知何故編纂和簡化數據庫。再次感謝你 – 2014-10-01 13:05:06

回答

1

在回答您的評論的問題和澄清,得到的答案是,你的設計不能外鍵的列數方面得到改善。針對每個潛在的外鍵關係具有特定的外鍵列是最佳實踐設計。

但是,架構設計本身似乎有問題。我沒有足夠的信息來判斷「Distributori_ [N] _Livello」表是否是真正的分層結構。如果是這樣,通常可以使用自參數表作爲分層結構而不是一組N個表格,因爲您鏈接的圖表似乎使用了。如果能夠以這種方式重構設計,可能會減少所需的外鍵列數量。

鑑於所提供的數據,這是否可能與我無關。

+0

我的錯誤:http://i.imgur.com/tYZRgfk.jpg。發佈圖片時出錯了:名稱「Distributori_1_Livello」等,並不代表分層結構,而只是名稱的數量。假設我們有TBL_AMMINISTRAZIONE,TBL_DISTRIBUTORI,TBL_RIVENDITORI,TBL_VENDITORI和TBL_CLIENTI。 – 2014-10-01 14:04:17

+0

在這種情況下,如果該設計是您所需要的,則您擁有的外鍵應該是正確的。 – mwigdahl 2014-10-01 14:09:24