Database-Design
為具有多個指向其他表的連結的表設計
我正在設計一個數據庫來跟踪我們的網路設備。我的數據庫有 2 個表:
站點和電路
(電路 = 電纜)&(場地 = 物業位置)
每個電路在兩個站點之間執行,所以它應該與兩個站點有關,是嗎?電路表有以下列:
ID_circuit (PK), circuit_number, site1, site2
。我以為我可以將我的ID_site
領域與site1
和聯繫起來site2
,但我做不到。我會更好地創建一個完整的其他表來保存電纜兩端的位置嗎?
Site1 和 site2 都可以是 FK,連結到 ID_site PK。這適用於我知道的任何 rdbms。
範例查詢:
SELECT CT.site1, CT.site2, S1.site_description, S2.site_description FROM circuit_table AS CT INNER JOIN site_table as S1 ON CT.site1 = S1.ID_site INNER JOIN site_table as S2 ON CT.site2 = S2.ID_site
是的,您最好創建一個完整的單獨表來保存電纜兩端的位置,除非您可以在行創建期間強制執行約束。Michael Green在評論中提到的模棱兩可,關於如何確保 AB 被認為與 BA 相同,這是關鍵問題。
如果您能夠在行建構期間對站點強制執行排序約束,那麼問題就不那麼重要了,您可以安全地使用單個表的快捷方式。
如果您需要單獨的 Site 表,您可能希望在其 Key 中添加一個位欄位,例如IsSource,作為確保每個 Circuit 只能有 2 個端點的最簡單方法。