MySql:三範式

目錄

1. 第一範式(1NF:每一列保持原子特徵)

2、第二範式(2NF):

解決方案:只要不存在複合主鍵

3、第三範式(3NF):

解決方案:實體單獨建表

範式總結:1NF:確保每列保持原子性2NF:確保表中的每列都和主鍵相關3NF:確保每列都和主鍵列直接相關,而不是間接相關


1. 第一範式(1NF:每一列保持原子特徵)

列是基本數據項,不能在進行拆分,否則設計成一對多的關係,不滿足第一範式,不能稱之爲 關係型數據庫。

學生表(學號、姓名、性別、年齡,地址)

例:陝西省西安市西安郵電大學

例:陝西省西安市長安區子午大道西安郵電大學

地址信息包括:省市區,可以拆分

拆分改造後:

學生表(學號、姓名、性別、年齡、地址ID)

地址表(地址ID、省、市、區)

2、第二範式(2NF):

屬性完全依賴於主鍵(針對聯合主鍵 → 消除部分依賴),

1NF基礎上,非主屬性完全依賴於主鍵,如果不是完全依賴主鍵,應該拆分成新的主體,拆分成一對多的關係

這裏的(學生,課程)是一個碼

一個課程,一定指定了某個教材,一年級語文肯定用的是《小學語文1》,那麼就有課程->教材

(學生,課程)->教材,(學生,課程)是個碼,課程可以決定教材,是部分依賴

出現這樣的情況,就不滿足第二範式。解決:將一個表分解成兩個或若干個表。

解決方案:只要不存在複合主鍵

3、第三範式(3NF):

2NF基礎上、屬性(某一列)不依賴於其他非主屬性(消除依賴傳遞);

解決方案實體單獨建表

將存在傳遞依賴的字段,以及依賴的字段本身單獨取出,形成一個單獨的表,然後在需要對應的信息的時候,將對應的實體表的主鍵加進來。

 

範式總結
1NF:確保每列保持原子性
2NF:確保表中的每列都和主鍵相關
3NF:確保每列都和主鍵列直接相關,而不是間接相關
 

數據庫範式的作用:
進行數據庫設計時字段、庫表劃分的依據
數據庫範式的優點:
減少數據冗餘(最主要的好處、其他好處因此而附帶)
消除異常(插入異常、更新異常、刪除異常)
讓數據組織的更加和諧

數據庫範式的缺點:

應用範式越高、表越多、表越多帶來的問題:

查詢時需要連接多個表,增加了查詢的複雜性
查詢時需要連接多個表,降低了數據庫查詢的性能

範式不是越高越好,一般滿足3NF即可。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章