關係正規化詳解

2021-09-27 08:01:46 字數 2375 閱讀 8788

函式依賴:若 y=f(x) ,則稱x函式決定y,或y函式依賴於x,記為:x->y。在資料庫中,通常將x置為關鍵字將y置為非主屬性

1nf定義:關係的所有分量都必須是不可分的最小資料項

如日期可以拆分為年、月、日三項。

2nf定義:滿足1nf,且每個非主屬性都完全依賴於關鍵字,即不存在非主屬性部分依賴於關鍵字

單關鍵字中非主屬性一定是完全依賴於關鍵字,所以所有單屬性關鍵字關係都是2nf關係。

案例:存在關係(a,b,c,d,e,f)(下劃線表示關鍵字,下同),具體依賴關係如下:(藍色表示關鍵字,橙色表示非主屬性,下同)

a、b為關鍵字,但是d、f都只依賴於b,所以不是2nf,可以將其拆分為兩個關係,使其滿足2nf:

(a,b,c,e)、(b,d,f),具體關係如下:

3nf定義:滿足2nf,且每個非主屬性都不傳遞依賴於關鍵字,即不存在非主屬性傳遞依賴於關鍵字

案例:存在關係(a,b,c,d,e),具體依賴關係如下:

a、b為關鍵字,但是e傳遞依賴於a、b,所以不是3nf,可以將其拆分為兩個關係,使其滿足3nf:

(a,b,c,d)、(d,e),具體關係如下:

bcnf定義:滿足3nf,且不存在主屬性依賴於非主屬性(關係圖中不存在迴路

特別的,滿足1nf的全關鍵字關係一定是bcnf(因為全關鍵字關係沒有非主屬性)

案例:存在關係(a,b,c,d),具體依賴關係如下:

a、b為關鍵字,但是主屬性a依賴於非主屬性d(即存在迴路),所以不是bcnf,可以破壞迴路,使其滿足bcnf:

從3nf到bcnf的分解不能保證保持函式依賴,但可以保證無損連線。

3nf和bcnf只是在函式依賴的前提下對模式分解程度的乙個測度,乙個關係關係模式如果屬於bcnf,那麼在函式範疇內已實現了徹底的分解;3nf分解不徹底的原因是由於存在主屬性對非主屬性的函式依賴。

多值依賴:設有關係模式 r(u) ,x、y、z是u的子集,z=u-x-y,如果對於x的乙個給定值,存在一組y值與其對應,而y又不與z相關,則稱y多值依賴於x,記為x->->y

注意:「依賴」前沒有「函式」二字,函式依賴是指非主屬性與關鍵字之間的關係。

平凡的多值依賴:若z為空,則將多值依賴x->->y稱為平凡的多值依賴

非平凡多值依賴:若z非空,則將多值依賴x->->y稱為非平凡多值依賴

4nf定義:滿足bcnf,且不存在非平凡多值依賴

消除bcnf中的非平凡多值依賴,使其變為平凡的多值依賴,即可得到4nf。

案例:存在關係(a,b,c),具體依賴關係如下:ab

cwh1

e1e2

p1p2

p3wh2

e1e3

p2p4

顯然有a->->b,a->->c,它們都是非平凡的多值依賴,可以將其拆分為兩個表:(a,b)、(a,c),在表(a,b)中,a->->b是平凡的多值依賴,在表(a,c)中,a->->c是平凡的多值依賴,所以分解後的關係滿足4nf。分解圖如下(虛線表示多值依賴):

關係模式正規化

資料庫的關係模式正規化就是資料庫設計要滿足的規範,滿足這些規範的資料庫是簡潔的,結構清晰的。第一正規化 1nf 所有的列不可再分 第一正規化就是指所有的列都是不可再分的基本資料項,即表中的每一列都不能有多個值。說明 在任何乙個關聯式資料庫中,第一正規化是對關係模式的基本要求,不滿足第一正規化的資料庫...

全碼與關係正規化

最近複習資料庫原理,中國人民大學慕課 現了這樣一道思考題 如果乙個關係模式r的主碼是全碼,則r至少可以達到第幾正規化?思考過後,我覺得答案應當是 bcnf 而網上的很多答案是 3nf 我覺得這是錯誤的。首先,如果r是全碼,意味著所有的屬性都是主屬性,沒有非主屬性,因此符合3nf。其次,主屬性不可能對...

MySQL 正規化詳解

正規化 normal format,它是英國人 e.f.codd 關聯式資料庫的老祖宗 在上個世紀70年代提出關聯式資料庫模型後總結出來的,正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法。正規化是一種離散數學知識,目的是為了解決一種資料的儲存與優化的問題 儲存...