連接/連接表是否總是必要的
我已經嘗試過尋找其他答案,到目前為止,我還沒有完全找到我所追求的。雖然關於聯結表有多個問題,但似乎沒有一個問題可以解決在一個表和其他 2 個具有多對多關係的表之間是否需要有一個聯結表,或者為什麼它是必要的。
例如,我有一個數據庫來儲存系統的路徑規範化數據。系統中有多個路徑,並且隨著時間的推移有多次標準化執行。
所以一個特定
Normalisation Run
的規範化多個不同Paths
的,一個特定Path
的規範化多個Normalisation Runs
。Normalisation Runs
和之間的多對多關係Paths
。
Normalisation Data
需要引用特定的,Normalisation Run
但是可以將多個Normalisation Data
記錄關聯到單個Normalisation Run
,因此是一對多的關係。
Normalisation Data
還需要引用特定的,Path
但是可以將多個Normalisation Data
記錄關聯到單個Path
,因此又是一對多關係還要澄清 2 個不同
Normalisation Data
的記錄可能指的是相同的 (Normalisation Run-Path
) 對以下哪項是數據庫的最佳設計?
選項 1:使用接線表
(或者)
選項 2:沒有連接表
以下是該
Normalisation Data
表的範例:
Path Runs
在這種情況下,連接表真的有必要嗎,因為Normalisation Data
沒有它,表仍將包含完全相同的數據。如果有必要,為什麼必須這樣做?
你不需要一個橋桌。
正如你所寫
Normalization Data 需要參考特定的 Normalization Run 和特定的 Path
所以你在規範化數據和規範化執行之間有 1:1 的關係並且你在規範化數據和路徑之間有 1:1 的關係
僅當標準化數據與其他兩個之間存在 m:n 關係時,您才需要一個。
Norm_Runs 和 Paths 之間存在多對多關係,對嗎?因此
Normalisation Data
(在選項 2 中)是必要的橋接表。或者,您可以擺脫表格
Paths
並簡單地Path
用Normalisation Data
. 如果 中的列確實更多Paths
,則應忽略此建議。我認為選項 1 中的符號是錯誤的,因此令人困惑。看起來
Path Runs
和Normalization Data
將會是 1:1。此時,請遵循以下一般規則:永遠不要有兩個表以 1:1 的關係;將它們結合起來。(也有例外,在某些情況下應該為了性能而進行拆分。)