Database-Design

關係設計是否會阻止不必要的拆分錶?

  • March 7, 2021

我學習關係設計已經有很長時間了,但我有一個模糊的記憶,它鼓勵不要不必要地拆分錶。例如,給定函式依賴

K -> A
K -> B
K -> C

我的假設是,“最佳”模式是公正的{KABC},而不是類似{KAB, KC}或什至{KA, KB, KC}. 至少在實踐中,這是我看到數據庫設計人員實現該表的方式。

然而,維基百科上的快速復習表明規範化形式主義

  • 沒有在獲得“最小模式”的方向上發表任何聲明,
  • 6NF 甚至需要{KA, KB, KC}. 由於 6NF 暗示了其他範式,這意味著它們甚至不可能做出這樣的最小要求。

我有點困惑,我一直都錯了。“獲得最少數量的表”的概念在正式的關係設計中真的沒有任何作用嗎,它只是一種常見的做法?

“Normal Forms”被狹義地定義為消除冗餘數據和“更新異常”。修復其他模式設計問題是否算作“規範化”可能存在爭議,但一般來說,規範化只是意味著確保數據庫符合某種規範形式。

在此處輸入圖像描述

無論是在設計理論中還是在實踐中,減少表的數量都不是目標。減少表可以幫助或損害性能,這就是為什麼人們在實踐中增加或減少表(不管重複數據)。

粗略地說,當你有很少結合使用的數據時,增加表的數量是有幫助的,當你有經常結合使用的數據時,減少表的數量是有幫助的。關係理論並不關心某事有多快或多慢。理論讓你不會陷入無效狀態,實際上,一些無效狀態可能是可以接受的,只要最後一切順利。

引用自:https://dba.stackexchange.com/questions/286567