資料庫三正規化通俗說法,書上說的太蛋疼
阿新 • • 發佈:2019-02-03
簡單來說三句話:
1NF、列不可分;
2NF、不存在部分依賴;
3NF、不存在傳遞依賴。
解釋:
1NF:原子性,即欄位不可以再分。
2NF:唯一性,不可以把多種資料儲存在同一張表中,即一張表只能儲存“一種”資料。
不符合第二正規化的表:學號, 姓名, 年齡, 課程名稱, 成績, 學分;
可能會存在問題:
資料冗餘,每條記錄都含有相同資訊;
刪除異常:刪除所有學生成績,就把課程資訊全刪除了;
插入異常:學生未選課,無法記錄進資料庫;
更新異常:調整課程學分,所有行都調整。
正確做法:
學生:Student(學號, 姓名, 年齡);
課程:Course(課程名稱, 學分);
選課關係:StudentCourse(學號, 課程名稱, 成績)。
3NF:直接性,每一列都和主鍵直接相關,而不能間接相關。(依賴不準傳遞)
不符合第三正規化的表: 學號,
姓名, 年齡, 學院名稱, 學院電話,因為存在依賴傳遞: (學號) → (學生)→(所在學院) → (學院電話) 。
可能會存在問題:
資料冗餘:有重複值;
更新異常:有重複的冗餘資訊,修改時需要同時修改多條記錄,否則會出現資料不一致的情況
正確做法:
學生:(學號, 姓名, 年齡, 所在學院);
學院:(學院, 電話)。