4、 改進(jìn)的第三范式:
(1) 定義:如果關(guān)系模式R是1NF,且每個(gè)屬性既不相存在部分函數(shù)依賴也不存在傳遞函數(shù)依賴于候選碼,則稱R是改進(jìn)的第三范式(BCNF)。
5、 多值依賴與4NF:
(1) 多值依賴:表示關(guān)系中屬性(如A、B、C)之間的依賴,對(duì)于A的每個(gè)值,都存在一個(gè)B或C的值的集合,而且B和C的值相互獨(dú)立,記為:AààB、AààC
(2) 第四范式:如果關(guān)系模式R屬于1NF,對(duì)于R的每個(gè)非平凡的多值依賴XàY(Y不屬于X),X含有候選碼,則R是第四范式。即是從BCNF范式中消除主碼內(nèi)的獨(dú)立依賴集(非平凡多值依賴)可達(dá)4NF;
6、 連接依賴與5NF
(1) 連鎖依賴:設(shè)關(guān)系模式R,R的屬性子集為R1、R2、R3、R4、R5、R6、R7….,當(dāng)且僅當(dāng)R的每個(gè)合法值等于R1、R2、R3、R4、R5、R6、R7…的投影連接時(shí),稱R滿足連接依賴;
(2) 第五范式:設(shè)R是一個(gè)滿足5NF的關(guān)系模式,當(dāng)且僅當(dāng)R的每一個(gè)非平凡連接依賴都被R的候選碼所蘊(yùn)含,即從4NF中消除非候選碼所蘊(yùn)含的連接依賴為5NF;
7、 總結(jié):
(1) 范式表達(dá)了關(guān)系模式滿足的條件,也是衡量關(guān)系模式設(shè)計(jì)優(yōu)劣的標(biāo)準(zhǔn);
(2) 利用范式進(jìn)行規(guī)范化設(shè)計(jì)的目的是消除數(shù)據(jù)冗余,避免出現(xiàn)異常,使結(jié)構(gòu)更合理;
(3) 規(guī)范化設(shè)計(jì)的基本過程是對(duì)關(guān)系進(jìn)行的分解,消除屬性間不合理的數(shù)據(jù)依賴,用一組等價(jià)的子關(guān)系代替原有的關(guān)系;
(4) 數(shù)據(jù)庫規(guī)范化的程序越高,其關(guān)系表就越多,從而增加了表之間連接運(yùn)算的代價(jià),影響了數(shù)據(jù)庫的執(zhí)行速度和性能。所以通常關(guān)系模式規(guī)范化工作僅做到3NF,這樣既使關(guān)系中不合理的屬性基本消除,規(guī)范化程度也不太高,保證數(shù)據(jù)庫有較好的性能。
5.4 數(shù)據(jù)庫模式設(shè)計(jì)
5.4.1 初始關(guān)系模式的設(shè)計(jì)
1、 把ER圖轉(zhuǎn)換成關(guān)系模式:
(1) 把ER模型中的每個(gè)實(shí)體集轉(zhuǎn)換成一個(gè)同名的關(guān)系,實(shí)體集的屬性就是關(guān)系的屬性,實(shí)體集的碼就是關(guān)系的碼;
(2) 把ER模型中的每個(gè)聯(lián)系轉(zhuǎn)換成一個(gè)關(guān)系,與該聯(lián)系相連的各實(shí)體集的碼以及聯(lián)系的屬性轉(zhuǎn)換成為關(guān)系的屬性。
(A) 若聯(lián)系為1:1,則每個(gè)實(shí)體集的碼均是該關(guān)系的候選碼;
(B) 若聯(lián)系為1:n,則關(guān)系的碼為n端實(shí)體集的碼;
(C) 若聯(lián)系為m:n,則關(guān)系的碼為各實(shí)體集碼的組合;
(3) 合并具有相同碼的關(guān)系
2、 檢查確認(rèn)對(duì)象:檢查轉(zhuǎn)換后的每個(gè)關(guān)系名和屬性名是否符合數(shù)據(jù)庫設(shè)計(jì)關(guān)于統(tǒng)一命名的約定;
5.4.2 優(yōu)化關(guān)系模式
1、 模式分解原則:
(1) 分解具有無損連接性:分解后的關(guān)系能夠恢復(fù)成原來的關(guān)系;
(2) 分解保持函數(shù)依賴:
(A) 無損連接和保持函數(shù)依賴是用于衡量一個(gè)模式分解是否導(dǎo)致原有模式中部分信息丟失的兩個(gè)標(biāo)準(zhǔn);
(B) 當(dāng)一個(gè)關(guān)系被分解后會(huì)出現(xiàn)幾種結(jié)果,既有無損連接,又能保持函數(shù)依賴是較理想的分解結(jié)果,意味著在分解的過程中沒有丟失原有模式的任何信息;
(C) 一般情況下,分解到3NF就足夠了,但在3NF關(guān)系下,仍存在一定程度上的更新異;虿灰恢碌碾[患,但與數(shù)據(jù)庫性能比較起來是可以忽略的,因?yàn)樵跀?shù)據(jù)庫設(shè)計(jì)過程中通過增加一些數(shù)據(jù)約束,就可以解決3NF引起的數(shù)據(jù)問題了。
3、 優(yōu)化屬性:確定各字段的類型和長度;
4、 確認(rèn)模式滿足需要:
5.4.3 數(shù)據(jù)完整性設(shè)計(jì)
1、 指定義數(shù)據(jù)庫中存儲(chǔ)的數(shù)據(jù)值滿足的約束條件,通過對(duì)存儲(chǔ)的數(shù)據(jù)值的約束維護(hù)關(guān)系的完整性。
2、 數(shù)據(jù)值滿足條件分為:
(1) 域約束:限制指定列的取值及范圍;
(2) 主碼約束:定義每個(gè)關(guān)系的主碼值不空,且惟一;
(3) 引用完整性約束:定義不同模式的屬性間滿足的條件,及一個(gè)關(guān)系模式中屬性間可能滿足的條件;
5.4.4 安全模式和外模式的設(shè)計(jì)
1、 根據(jù)選定的DBMS支持的安全控制特征來確定;
2、 根據(jù)不同用戶對(duì)數(shù)據(jù)庫存取特點(diǎn)定義相關(guān)的外模式;
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |