11 數據庫的設計三範式
一、什麼數據庫範式
- 設計關係數據庫時,遵從不同的規範要求,設計出合理的關係型數據庫,這些不同的規範要求被稱爲不同的範式,各種範式呈遞次規範,越高的範式數據庫冗餘越小。
- 目前關係數據庫有六種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、巴斯-科德範式(BCNF)、第四範式(4NF)和第五範式(5NF,又稱完美範式)。
- 滿足最低要求的範式是第一範式(1NF)。在第一範式的基礎上進一步滿足更多規範要求的稱爲第二範式(2NF),其餘範式以次類推。一般來說,數據庫只需滿足第三範式(3NF)就行了。
二、第一範式(1NF):
- 任何一張表都應該有主鍵,並且每一個字段原子性不可再分。即每個字段的數據不能的集合、數組等。
三、第二範式(2NF)
-
建立在第一範式基礎上,所有非主鍵字段完全依賴主鍵,
不能產生部份依賴
。 -
解決
多對多
問題- 三張表,關係表加外鍵
t_student學生表
sno(pk) sname 1 張三 2 李四 3 王五 t_teacher教師表
tno(pk) tname 1 張老師 2 李老師 3 王老師 t_student_teacher_relation學生教師關係
id(pk) sno(fk) tno(fk) 1 1 3 2 1 2 3 2 1 4 2 3 5 3 1 6 3 2 - 三張表,關係表加外鍵
四、第三範式(3NF)
-
建立在第二範式的基礎上,所有非主鍵字段直接依賴主鍵,不能產生傳遞依賴。
-
解決
一對多
問題- 兩張表,多的表加外鍵
t_class班級表
cno(pk) cname 101 一班 102 二班 103 三班 t_student學生表
sno(pk) sname cno(fk) 1001 張三 101 1002 李四 101 1003 王五 102
五、注意
在實際開發中,爲了滿足客戶的要求,有時候會拿冗餘換執行速度。