網上搜羅了一大堆關於數據庫范式理解的文章,都是千律一篇的復制粘貼,連例子都是一模一樣,拜托有點創意好不,實在看不下去,自己寫一篇個人理解三范式的文章。如果有理解上的不正確之處,請聯系我: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
+---------+--