三大範式
數據庫設計原則也就是指數據庫的三大範式
.
作用:是用來指導數據庫設計人員的一種設計思想,保證數據庫的設計是具備可拓展性,無數據的冗餘,結構清晰簡單明瞭.
-
1NF:原子性,也就是說表中任何一個列都是唯一的,不可再拆分的
R(id,name,age),此關係中name可以分爲first_name和last_name,
所以,此設計不符合1NF,應該重新設計爲:
R(id,first_name,last_name,age) -
2NF:在1NF的基礎上,不存在非關鍵列部分依賴於關鍵列,也就是說所有的非關鍵列都必須完全依賴於關鍵列.
R(sno,sname,cno,cname,score)
由於以上不管是以哪一列作爲關鍵列,都存在其他非關鍵列部分依賴
於關鍵列,所以此設計不符合2NF,應該重新設計爲:
R1(sno,sname),存放學生信息的表
R2(cno,cname),存放課程信息的表
R3(sno,cno,score),存放學生與課程考試成績的中間表 -
3NF:在2NF的基礎上,不存在非關鍵列傳遞函數依賴於關鍵列,也就是說,所有的非關鍵列都必須直接依賴於關鍵列
如果A依賴於B,B依賴於C,我們就說A傳遞函數依賴於C
學生考入某所大學的信息表:
R(sno,sname,uno,uname,phone,address)
如果以sno作爲關鍵列,sanme,uno是直接依賴於sno,但是uname,phone,
address這三列都是直接依賴於uno,間接依賴於sno,所以此設計不符合
3NF,應該重新設計爲:
R1(sno,sname,uno),存放學生信息的表R2(uno,uname,phone,address);//存放學校的表