所謂數據庫設計范式(NF),就是在設計關系型數據庫時所遵循的規范要求,以設計出結構簡潔,清晰合理的數據庫,同時,在操作數據庫時不會發生異常。
在實際開發過程中我們只需要滿足的三個范式:
第一范式是最基本的范式,要求數據庫表中的字段都是單一屬性,且不可再分。
例如下表中的學生信息,每項屬性必須是單一的,分到不可分為止。
第二范式,數據庫表中不存在非關鍵字段對任一候選關鍵字段的部分函數依賴。
具體操作就是確保數據庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關。也就是說一個表中只保存一種數據。
例如上表中,卡和學生是不同的類,就需要把卡和學生的信息分開。
卡信息表:
學生信息表:
通過這樣設計,在很大程度上減小了數據庫的冗余。
建立外鍵的約束關系:
第三范式:確保每列都和主鍵列直接相關,而不是間接相關。也就是在滿足2NF的基礎上,任何非主屬性不得傳遞依賴於主屬性。例如表中的UserID
數據庫范式的主要目的是為了減少數據冗余,數據冗余產生的本質就是在一個表中存在字段與字段之間的一對多,或者多對多關系。解決這個幾對幾的關系問題,就能輕易實現滿足第三范式的數據庫設計。這並意味着不符合范式要求的設計一定是錯誤的,在數據庫表中存在1:1或1:N關系這種較特殊的情況下,合並導致的不符合范式要求反而是合理的。
在我們設計數據庫的時候,一定要時刻考慮范式的要求。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。