MySQL數據庫設計三大範式

1. 第一範式 1NF

設R爲任一給定關係, 如果R中每個列與行的 交點處的取值都是不可再分的基本元素,則R爲第一範式。

2. 第二範式 2NF 

由於第一範式冗餘高,插入操作異常,刪除操作異常,於是便有了第二範式。

設R爲任一給定關係,若R爲1NF, 且其所有非主屬性都完全函數依賴於候選關鍵字,則R爲第二範式。

在上表中,在沒有拆分之前,學生上課信息表的主鍵爲(SN0,CNO),但其中的課程信息卻不依賴於SNO,所以要將學生上課信息表拆分爲學生上課成績表與課程表,這兩張表通過課程編號CNO進行關聯,即實現第二範式。

3. 第三範式 3NF

設R爲任一給定關係,若R爲2NF, 且其每一個非主屬性都不傳遞函數依賴於候選關鍵字,則R爲第三範式。
 
 
在上圖未折分之前,通過課程編號CNO推出授課名稱CTITLE,而通過授課名稱CTITLE又可以分別推出授課老師INAME和授課地點IPLACE,這樣就造成了傳遞依賴,所以要拆分成兩張表,通過授課老師INAME關聯起來,即實現第三範式。
 

4. 第三範式的特殊形式 BCNF

設R爲任一給定關係,X、Y爲其屬性集,F爲其函數依賴集,若R爲3NF,且其F中所有函數依賴X→Y(Y 不屬於X)中的X必包含候選關鍵字,則R爲BCNF。

在上圖未拆分之前,候選關鍵字爲(SNO,CTITLE)和(SNO,INAME),同時在上表中可以通過授課老師INAME推斷出課程名稱CTITLE,但授課老師INAME卻不包含候選關鍵字,所以要拆分成右邊的形式,即滿足BC範式。

 

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