【DAO】資料庫三範式說明,dao資料庫範式
************************************************************************ ****原文:blog.csdn.net/clark_xu 徐長亮的專欄************************************************************************
第一範式: 概況為列的值唯一性,不能有重複的列值(必須遵守);
反面例子:
名字 連絡方式(字串類型)
xxx 12345;abc@163.com
xxx bcd@163.com
xxx 12345;67890;def@163.com
危害性:為垃圾資料,無法刪除,無法修改;
正確的設計方法:
名字 電話1 電話2 電話3 電話4 郵箱
第二範式, 屬性完全依賴於主鍵(必須遵守)
n 必須滿足第一範式
n 必須有主鍵
n 其他列必須完全依賴於主鍵
錯誤的建表方法:
編號 姓名 性別 專業 專業課時
100 xxx m java 600
200 xxx f java 700
違反範式2的是另外一種含義,將兩個實體放在同一個表中,不方便其中一個實體資料的單獨維護。
編號 姓名 性別 專業 專業課時
100 xxx m java 600
200 xxx f java 700
表2
專業編號 專業 專業課時
001 java 600
002 java 700
3) 第三範式:屬性不依賴其他非主屬性
n 必須遵守第二範式
n 去除傳遞依賴
正確的設計方法為:
編號 姓名 性別 專業編號
100 xxx m 001
200 xxx f 002
表2
專業編號 專業 專業課時
001 java 600
002 java 700
概況為:
範式2:一個表中不能含有兩個實體的資訊,必須含有一個實體
範式3:一個實體中不能引用其他實體的屬性,只能引用其他實體的主鍵
注意:
在某些情況下,出於查詢效率的考慮,可能會違反範式3,此時增加了冗餘,查詢的時候,不需要表串連,增加了表的執行效率,但是可維護性下降,一般為不建議經常維護的表違反第三範式。