前言
“學長,SqlServer資料庫三范式可以簡單幫我理解一下嗎?”,
學妹的一句話把我問蒙了,因為三范式的概念早就丟到外太空去了,
但是呢,我不能直接說我忘記了,為了不影響在學妹心目中的形象(你懂的),我還特意去百度查了一下,

然后整理了一下,大家如果有和我一樣忘記了的可以看一下(概念+舉例),淺顯易懂,
資料庫三范式
- 第一范式(1NF):第一范式(1NF)是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即物體中的某個屬性不能有多個值或者不能有重復的屬性,
- 第二范式(2NF):第二范式(2NF)是在第一范式(1NF)的基礎上建立起來的,即滿足第二范式(2NF)必須先滿足第一范式(1NF),第二范式(2NF)要求資料庫表中的每個實體或行必須可以被惟一的區分,
- 第三范式(3NF):滿足第三范式(3NF)必須先滿足第二范式(2NF),簡而言之,第三范式(3NF)要求一個資料庫表中不包含已在其它表中已包含的非主關鍵字資訊,
一般地,在進行資料庫設計時,應遵循三大原則,也就是我們通常說的三大范式,即第一范式要求確保表中每列的原子性,也就是不可拆分;
第二范式要求確保表中每列與主鍵相關,而不能只與主鍵的某部分相關(主要針對聯合主鍵),主鍵列與非主鍵列遵循完全函式依賴關系,也就是完全依賴;
第三范式確保主鍵列之間沒有傳遞函式依賴關系,也就是消除傳遞依賴,
1. 必須保證資料庫設計的合理性
- 資料庫設計關系整個系統的架構,關系到后續的開發效率和運行效率
- 資料庫的設計主要包含了設計表結構和表之間的聯系
2. 如何是合理的資料庫
- 結構合理
- 冗余較小
- 盡量避免插入洗掉修改例外
3. 如何才能保證資料庫設計水平
- 遵循一定的規則
- 在關系型資料庫中這種規則就稱為范式
4. 什么是范式(NF,NormalForm)
- 范式是符合某一種設計要求的總結
- 要想設計一個結構合理的關系型資料庫,必須滿足一定的范式
- 各個范式是依次嵌套包含的
- 范式超高,設計質量超高,在現實設計中也越難實作
- 一般資料庫設計,只要達到第三范式,即可避免例外的出現

舉例說明
第一范式(概念+舉例)
1. 要求
- 最基本的范式
- 資料庫表每一列都是不可分割的基本資料,同一列中不能有多個值
- 簡單說就是要確保每列保持原子性
- 第一范式的合理遵循需要根據系統的實際需求來定
2. 示例

第二范式(概念+舉例)
1. 要求
- 第二范式需要確保資料庫表中的每一列都和主鍵相關,而不能只與主鍵的某一部分相關(主要針對聯合主鍵而言)
- 即在一個資料庫表中只能保存一種資料,不可以把多種資料保存在同一張資料庫表中
2. 示例
在上面第一范式示例表中的資料看出,這不符合第二范式,所以進行拆分如下,
第一張主鍵相關為(學號、課程名稱),第二張表為(學號),它們都是完全依賴的,因此符合第二范式,

第三范式(概念+舉例)
1. 要求
- 確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關
- 屬性不依賴于其他非主屬性(消除依賴)
2. 示例
注意看第二范式的學生表:存在系主任依賴于系名 (系名---> 系主任),所以不符合第三范式,繼續進行拆分如下:

總結
我們看到,第三范式規則查找以消除沒有直接依賴于第一范式和第二范式形成的表的主鍵的屬性,
我們為沒有與表的主鍵關聯的所有資訊建立了一張新表,
每張新表保存了來自源表的資訊和它們所依賴的主鍵,
資料庫設計規范化能讓我們更好地適應變化,使你能夠改變業務規則、需求和資料而不需要重新構造整個系統,
參考文獻
三范式:百度百科
三大范式:https://zhuanlan.zhihu.com/p/28528655
資料庫設計三大范式:https://www.cnblogs.com/linjiqin/archive/2012/04/01/2428695.html#undefined
|
歡迎關注訂閱微信公眾號【熊澤有話說】,更多好玩易學知識等你來取 作者:熊澤-學習中的苦與樂 公眾號:熊澤有話說 出處: https://www.cnblogs.com/xiongze520/p/15433197.html 您可以隨意轉載、摘錄,但請在文章內注明作者和原文鏈接,
|

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/330068.html
標籤:SQL Server
上一篇:一文講清MySQL四種隔離級別
下一篇:你還記得資料庫三范式嗎?
