目錄
範式總結:1NF:確保每列保持原子性2NF:確保表中的每列都和主鍵相關3NF:確保每列都和主鍵列直接相關,而不是間接相關
1. 第一範式(1NF:每一列保持原子特徵)
列是基本數據項,不能在進行拆分,否則設計成一對多的關係,不滿足第一範式,不能稱之爲 關係型數據庫。
學生表(學號、姓名、性別、年齡,地址)
例:陝西省西安市西安郵電大學
例:陝西省西安市長安區子午大道西安郵電大學
地址信息包括:省市區,可以拆分
拆分改造後:
學生表(學號、姓名、性別、年齡、地址ID)
地址表(地址ID、省、市、區)
2、第二範式(2NF):
屬性完全依賴於主鍵(針對聯合主鍵 → 消除部分依賴),
1NF基礎上,非主屬性完全依賴於主鍵,如果不是完全依賴主鍵,應該拆分成新的主體,拆分成一對多的關係
這裏的(學生,課程)是一個碼
一個課程,一定指定了某個教材,一年級語文肯定用的是《小學語文1》,那麼就有課程->教材
(學生,課程)->教材,(學生,課程)是個碼,課程可以決定教材,是部分依賴。
出現這樣的情況,就不滿足第二範式。解決:將一個表分解成兩個或若干個表。
解決方案:只要不存在複合主鍵
3、第三範式(3NF):
2NF基礎上、屬性(某一列)不依賴於其他非主屬性(消除依賴傳遞);
解決方案:實體單獨建表
將存在傳遞依賴的字段,以及依賴的字段本身單獨取出,形成一個單獨的表,然後在需要對應的信息的時候,將對應的實體表的主鍵加進來。
範式總結:
1NF:確保每列保持原子性
2NF:確保表中的每列都和主鍵相關
3NF:確保每列都和主鍵列直接相關,而不是間接相關
數據庫範式的作用:
進行數據庫設計時字段、庫表劃分的依據
數據庫範式的優點:
減少數據冗餘(最主要的好處、其他好處因此而附帶)
消除異常(插入異常、更新異常、刪除異常)
讓數據組織的更加和諧
數據庫範式的缺點:
應用範式越高、表越多、表越多帶來的問題:
查詢時需要連接多個表,增加了查詢的複雜性
查詢時需要連接多個表,降低了數據庫查詢的性能
範式不是越高越好,一般滿足3NF即可。