數據庫三範式,輕鬆理解
網上搜羅了一大堆關於數據庫範式理解的文章,都是千律一篇的複製粘貼,連例子都是一模一樣,拜託有點創意好不,實在看不下去,自己寫一篇個人理解三範式的文章。如果有理解上的不正確之處,請聯繫我:279537592#qq.com (#=>@)
官方定義:第一範式(1NF):數據庫表中的字段都是單一屬性的,不可再分。
我的理解:第一範式這個不用說了,只要是關係數據庫都滿足第一範式
官方定義:第二範式(2NF):數據庫表中不存在非關鍵字段對任一候選關鍵字段的部分函數依賴
我的理解:在第二範式中組合主鍵(AB)【註明:也叫做複合主鍵】裏面的A或者B 與其他字段不能存在組合重複,爲解決這個問題,通常的做法是咱們不用組合主鍵,添加一個ID,做爲單一主鍵即可滿足第二範式。如果不想添加ID,請滿足組合主鍵(AB)裏面的A或者B 與其他字段不能存在組合重複。
如:不滿足第二範式,複合主鍵中的A與字段C組合重複
+------------+-----------+-------------------+
pk pk row
+------------+-----------+-------------------+
A B C
+------------+-----------+-------------------+
A D C
+------------+-----------+-------------------+
A E C
+------------+-----------+-------------------+
改爲這樣滿足第二範式(但是不滿足第三範式,字段A與字段C是組合重複):
+---------+------------+-----------+-------------------+
pk row row row
+---------+------------+-----------+-------------------+
1 A B C
+---------+------------+-----------+-------------------+
2 A D C
+---------+------------+-----------+-------------------+
3 A E C
+---------+------------+-----------+-------------------+
官方定義:第三範式(3NF):在第二範式的基礎上,數據表中如果不存在非關鍵字段對任一候選關鍵字段的傳遞函數依賴則符合第三 範式。
我的理解:在第三範式中字段與字段之間不能存在組合重複
如:不滿足第三範式,字段A與字段C組合重複
+---------+------------+-----------+-------------------+---------------+
pk row row row row
+---------+------------+-----------+-------------------+---------------+
1 A B C F
+---------+------------+-----------+-------------------+---------------+
2 A D C G
+---------+------------+-----------+-------------------+---------------+
3 A E C K
+---------+------------+-----------+-------------------+---------------+
改爲這樣滿足第三範式:
表1
+---------+------------+-----------+
pk row row
+---------+------------+-----------+
1 A B
+---------+------------+-----------+
2 A D
+---------+------------+-----------+
3 A E
+---------+------------+-----------+
和表2
+---------+-------------------+------------+
pk row row
+---------+-------------------+------------+
1 C F
+---------+-------------------+------------+
2 C G
+---------+-------------------+------------+
3 C K
+---------+-------------------+------------+
原則:當出現字段與字段的組合重複,如上的A和C的組合重複,首先要考慮的就是把他們拆分爲2個表,具體是C拆到表1, 還是A拆到表1,看情況而定.
關鍵要理解定義這種範式標準的主要目的是爲了減少數據冗餘,數據冗餘產生的本質就是在一個表中存在字段與字段之間的一對多,或者多對多關係。解決這個幾對幾的關係問題,就能輕易實現滿足第三範式的數據庫設計。
官方定義:第一範式(1NF):數據庫表中的字段都是單一屬性的,不可再分。
我的理解:第一範式這個不用說了,只要是關係數據庫都滿足第一範式
官方定義:第二範式(2NF):數據庫表中不存在非關鍵字段對任一候選關鍵字段的部分函數依賴
我的理解:在第二範式中組合主鍵(AB)【註明:也叫做複合主鍵】裏面的A或者B 與其他字段不能存在組合重複,爲解決這個問題,通常的做法是咱們不用組合主鍵,添加一個ID,做爲單一主鍵即可滿足第二範式。如果不想添加ID,請滿足組合主鍵(AB)裏面的A或者B 與其他字段不能存在組合重複。
如:不滿足第二範式,複合主鍵中的A與字段C組合重複
+------------+-----------+-------------------+
pk pk row
+------------+-----------+-------------------+
A B C
+------------+-----------+-------------------+
A D C
+------------+-----------+-------------------+
A E C
+------------+-----------+-------------------+
改爲這樣滿足第二範式(但是不滿足第三範式,字段A與字段C是組合重複):
+---------+------------+-----------+-------------------+
pk row row row
+---------+------------+-----------+-------------------+
1 A B C
+---------+------------+-----------+-------------------+
2 A D C
+---------+------------+-----------+-------------------+
3 A E C
+---------+------------+-----------+-------------------+
官方定義:第三範式(3NF):在第二範式的基礎上,數據表中如果不存在非關鍵字段對任一候選關鍵字段的傳遞函數依賴則符合第三 範式。
我的理解:在第三範式中字段與字段之間不能存在組合重複
如:不滿足第三範式,字段A與字段C組合重複
+---------+------------+-----------+-------------------+---------------+
pk row row row row
+---------+------------+-----------+-------------------+---------------+
1 A B C F
+---------+------------+-----------+-------------------+---------------+
2 A D C G
+---------+------------+-----------+-------------------+---------------+
3 A E C K
+---------+------------+-----------+-------------------+---------------+
改爲這樣滿足第三範式:
表1
+---------+------------+-----------+
pk row row
+---------+------------+-----------+
1 A B
+---------+------------+-----------+
2 A D
+---------+------------+-----------+
3 A E
+---------+------------+-----------+
和表2
+---------+-------------------+------------+
pk row row
+---------+-------------------+------------+
1 C F
+---------+-------------------+------------+
2 C G
+---------+-------------------+------------+
3 C K
+---------+-------------------+------------+
原則:當出現字段與字段的組合重複,如上的A和C的組合重複,首先要考慮的就是把他們拆分爲2個表,具體是C拆到表1, 還是A拆到表1,看情況而定.
關鍵要理解定義這種範式標準的主要目的是爲了減少數據冗餘,數據冗餘產生的本質就是在一個表中存在字段與字段之間的一對多,或者多對多關係。解決這個幾對幾的關係問題,就能輕易實現滿足第三範式的數據庫設計。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.