網(wǎng)上搜羅了一大堆關(guān)于數(shù)據(jù)庫范式理解的文章,都是千律一篇的復(fù)制粘貼,連例子都是一模一樣,拜托有點創(chuàng)意好不,實在看不下去,自己寫一篇個人理解三范式的文章。如果有理解上的不正確之處,請聯(lián)系我:279537592#qq.com (#=>@)
官方定義:第一范式(1NF):數(shù)據(jù)庫表中的字段都是單一屬性的,不可再分。
我的理解:第一范式這個不用說了,只要是關(guān)系數(shù)據(jù)庫都滿足第一范式
官方定義:第二范式(2NF):數(shù)據(jù)庫表中不存在非關(guān)鍵字段對任一候選關(guān)鍵字段的部分函數(shù)依賴
我的理解:在第二范式中組合主鍵(AB)【注明:也叫做復(fù)合主鍵】里面的A或者B 與其他字段不能存在組合重復(fù),為解決這個問題,通常的做法是咱們不用組合主鍵,添加一個ID,做為單一主鍵即可滿足第二范式。如果不想添加ID,請滿足組合主鍵(AB)里面的A或者B 與其他字段不能存在組合重復(fù)。
如:不滿足第二范式,復(fù)合主鍵中的A與字段C組合重復(fù)
+------------+-----------+-------------------+
pk pk row
+------------+-----------+-------------------+
A B C
+------------+-----------+-------------------+
A D C
+------------+-----------+-------------------+
A E C
+------------+-----------+-------------------+
改為這樣滿足第二范式(但是不滿足第三范式,字段A與字段C是組合重復(fù)):
+---------+------------+-----------+-------------------+
pk row row row
+---------+------------+-----------+-------------------+
1 A B C
+---------+------------+-----------+-------------------+
2 A D C
+---------+------------+-----------+-------------------+
3 A E C
+---------+------------+-----------+-------------------+
官方定義:第三范式(3NF):在第二范式的基礎(chǔ)上,數(shù)據(jù)表中如果不存在非關(guān)鍵字段對任一候選關(guān)鍵字段的傳遞函數(shù)依賴則符合第三 范式。
我的理解:在第三范式中字段與字段之間不能存在組合重復(fù)
如:不滿足第三范式,字段A與字段C組合重復(fù)
+---------+------------+-----------+-------------------+---------------+
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
+---------+-------------------+------------+
原則:當(dāng)出現(xiàn)字段與字段的組合重復(fù),如上的A和C的組合重復(fù),首先要考慮的就是把他們拆分為2個表,具體是C拆到表1, 還是A拆到表1,看情況而定.
關(guān)鍵要理解定義這種范式標(biāo)準(zhǔn)的主要目的是為了減少數(shù)據(jù)冗余,數(shù)據(jù)冗余產(chǎn)生的本質(zhì)就是在一個表中存在字段與字段之間的一對多,或者多對多關(guān)系。解決這個幾對幾的關(guān)系問題,就能輕易實現(xiàn)滿足第三范式的數(shù)據(jù)庫設(shè)計。