Database-Design
關係設計是否會阻止不必要的拆分錶?
我學習關係設計已經有很長時間了,但我有一個模糊的記憶,它鼓勵不要不必要地拆分錶。例如,給定函式依賴
K -> A K -> B K -> C
我的假設是,“最佳”模式是公正的
{KABC}
,而不是類似{KAB, KC}
或什至{KA, KB, KC}
. 至少在實踐中,這是我看到數據庫設計人員實現該表的方式。然而,維基百科上的快速復習表明規範化形式主義
- 沒有在獲得“最小模式”的方向上發表任何聲明,
- 6NF 甚至需要
{KA, KB, KC}
. 由於 6NF 暗示了其他範式,這意味著它們甚至不可能做出這樣的最小要求。我有點困惑,我一直都錯了。“獲得最少數量的表”的概念在正式的關係設計中真的沒有任何作用嗎,它只是一種常見的做法?
“Normal Forms”被狹義地定義為消除冗餘數據和“更新異常”。修復其他模式設計問題是否算作“規範化”可能存在爭議,但一般來說,規範化只是意味著確保數據庫符合某種規範形式。
無論是在設計理論中還是在實踐中,減少表的數量都不是目標。減少表可以幫助或損害性能,這就是為什麼人們在實踐中增加或減少表(不管重複數據)。
粗略地說,當你有很少結合使用的數據時,增加表的數量是有幫助的,當你有經常結合使用的數據時,減少表的數量是有幫助的。關係理論並不關心某事有多快或多慢。理論讓你不會陷入無效狀態,實際上,一些無效狀態可能是可以接受的,只要最後一切順利。