數據庫三大范式通俗理解

數據庫三大范式通俗理解

數據庫三大范式通俗理解

1、原子性,要求屬性具有原子性,不可再分解。

表:字段1、?字段2(字段2.1、字段2.2)、字段3?......

如學生(學號,姓名,性別,出生年月日),如果認為最后一列還可以再分成(出生年,出生月,出生日),它就不是一范式了,否則就是;

2、唯一性,一個表只能說明一個事物,即實體的惟一性。

表:學號、課程號、姓名、學分;

這個表明顯說明了兩個事務:學生信息, 課程信息;由于非主鍵字段必須依賴主鍵,這里學分依賴課程號,姓名依賴與學號,所以不符合二范式。

可能會存在問題:

  • 數據冗余:,每條記錄都含有相同信息;

  • 刪除異常:刪除所有學生成績,就把課程信息全刪除了;

  • 插入異常:學生未選課,無法記錄進數據庫;

  • 更新異常:調整課程學分,所有行都調整。

正確做法:

  • 學生:Student(學號, 姓名);

  • 課程:Course(課程號, 學分);

  • 選課關系:StudentCourse(學號, 課程號, 成績)。

3、冗余性,每列都與主鍵都有直接關系,不存在傳遞依賴。

表:?學號,?姓名,?年齡,?學院名稱,?學院電話

因為存在依賴傳遞: (學號) → (學生)→(所在學院) → (學院電話) 。

可能會存在問題:

  • 數據冗余:有重復值;

  • 更新異常:有重復的冗余信息,修改時需要同時修改多條記錄,否則會出現數據不一致的情況 。

正確做法:

學生:(學號, 姓名, 年齡, 所在學院);

學院:(學院, 電話)。

推薦教程:《MySQL教程

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享