主頁 > 知識庫 > 網絡編程 > PHP >

PHP

數據庫三范式,輕松理解

來源:互聯網 作者:古嗣小井 發表于:2009-09-29 10:59  點擊:
網上搜羅了一大堆關于數據庫范式理解的文章,都是千律一篇的復制粘貼,連例子都是一模一樣,拜托有點創意好不,實在看不下去,自己寫一篇個人理解三范式的文章。如果有理解上的不正確之處,請聯系我:279537592#qq.com (#[email protected]) 官方定義:第一范式(1NF):數

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

關鍵要理解定義這種范式標準的主要目的是為了減少數據冗余,數據冗余產生的本質就是在一個表中存在字段與字段之間的一對多,或者多對多關系。解決這個幾對幾的關系問題,就能輕易實現滿足第三范式的數據庫設計。

    有幫助
    (138)
    63.3%
    沒幫助
    (80)
    36.7%
    黑龙江体彩6十1开奖号