點(diǎn)擊查看:2015計(jì)算機(jī)等級(jí)考試四級(jí)數(shù)據(jù)庫(kù)工程師復(fù)習(xí)匯總
第五章 關(guān)系數(shù)據(jù)庫(kù)邏輯設(shè)計(jì)
5.1 概述
5.2 基本概念
5.2.1 關(guān)系模型
1、 關(guān)系模型采用一個(gè)二維表格在計(jì)算機(jī)中組織、存儲(chǔ)、處理和管理數(shù)據(jù)。
(1) 關(guān)系名(數(shù)據(jù)庫(kù)名):由字母數(shù)字組成;
(2) 屬性名;
(3) 關(guān)系模式和關(guān)系:描述模式描述關(guān)系的靜態(tài)結(jié)構(gòu),由模式名、關(guān)系模式所包含的屬性及屬性值所滿足的條件組成模式定義。
(4) 元組:描述關(guān)系中的行;
(5) 域:它定義關(guān)系的每個(gè)屬性取值的類型;
(6) 主碼:能夠惟一標(biāo)識(shí)關(guān)系中每一個(gè)元組的屬性或?qū)傩越M;
(7) 關(guān)系的數(shù)學(xué)定義:關(guān)系模式是建立在集合集論的基礎(chǔ)上的,用數(shù)學(xué)的概念定義關(guān)系有;
(A) 定義一:域是值的集合,同一個(gè)域中的值具有相同的數(shù)據(jù)類型;
(B) 定義二:
(C) 定義三:
(D) 當(dāng)關(guān)系引用了屬性名后關(guān)系具有以下屬性:
[1] 不能有重復(fù)的元組;
[2] 元組上下無序;
[3] 按屬性名引用時(shí)屬性左右無序;
[4] 所有屬性值都是原子項(xiàng)(不可再分);
(8) 總結(jié):關(guān)系是一張二維表,表中的一行被稱為一個(gè)元組,一列稱為屬性,由一組域值組成。關(guān)系是元組的集合,關(guān)系中的每個(gè)元組在數(shù)學(xué)上被定義為這個(gè)關(guān)系所涉及的全部域值中笛卡兒積的一個(gè)元素。
5.2.2 關(guān)系數(shù)據(jù)庫(kù)
1、 關(guān)系數(shù)據(jù)庫(kù)是按照二維表組織和存儲(chǔ)的相互關(guān)聯(lián)的關(guān)系的集合,關(guān)系數(shù)據(jù)庫(kù)模式是關(guān)系模式的集合;
5.2.3 關(guān)系的完整性
1、 關(guān)系的完整性(完整性約束):是對(duì)關(guān)系的某種約束規(guī)則和關(guān)系滿足的定義。通常這組約束規(guī)則用來限定和檢查數(shù)據(jù)庫(kù)所含實(shí)例的合法性和正確性;
2、 完整性約束分靜態(tài)和動(dòng)態(tài)兩種,靜態(tài)完整性約束是基于關(guān)系模式的,主要有主碼、外碼約束和域約束組成;動(dòng)態(tài)完整性約束是基于企業(yè)的業(yè)務(wù)規(guī)則的。
3、 靜態(tài)完整性約束規(guī)則:
(1) 主碼約束:主碼必須滿足:
(A) 惟一性:在一個(gè)關(guān)系中不存在兩個(gè)元組,它們具有相同的主碼值;
(B) 最小性:不存在從組成主碼的屬性集中去掉一個(gè)屬性,還仍能保持?jǐn)?shù)據(jù)的惟一性;
(2) 外碼約束:
(3) 用戶定義的完整性:
5.3 關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)理論
5.3.1 問題的提出
究竟一個(gè)關(guān)系數(shù)據(jù)庫(kù)包含哪些屬性是合理的,如何評(píng)價(jià)一個(gè)關(guān)系模式設(shè)計(jì)的優(yōu)劣?
5.3.2 函數(shù)依賴
函數(shù)依理論利用一個(gè)關(guān)系中屬性之間的依賴關(guān)系評(píng)價(jià)和優(yōu)化關(guān)系模式,以保證存儲(chǔ)到數(shù)據(jù)庫(kù)中的關(guān)系具有較好特性;
1、 函數(shù)依賴:
(1) 設(shè)R(U)為一關(guān)系模式,X和Y為屬性全集U的子集,若對(duì)于R(U)的任意一個(gè)可能的關(guān)系r,r中不可能存在兩個(gè)元組在X上的屬性值相等,而在Y上的屬性值不等,則稱“X函數(shù)決定Y”或“Y函數(shù)依賴于X”,并記作X
Y,其中X稱為決定因素,因?yàn)楦鶕?jù)函數(shù)依賴定義,給定一個(gè)X,就能惟一決定一個(gè)Y。
(2) 這里討論的函數(shù)關(guān)系與數(shù)學(xué)上的不同,是不能計(jì)算的,是一個(gè)關(guān)系中屬性之間存在的依賴關(guān)系;它是一種語(yǔ)義范疇的概念,只能根據(jù)兩個(gè)屬性之間的語(yǔ)義來確定一個(gè)函數(shù)依賴是否存在。
2、 完全與部分函數(shù)依賴:
(1) 在關(guān)系模式R(U)中,如果XàY成立,并且對(duì)X的任何真子集X’不能函數(shù)決定Y,則稱Y對(duì)X是完全函數(shù)依賴,被記作X---f---àY。
(2) 若XàY,但Y不完全函數(shù)依賴于X,則稱Y對(duì)X是部分函數(shù)依賴,記作X--pàY;
3、 傳遞函數(shù)依賴:
在關(guān)系R(U)模式中,如果X決定Y,(Y不屬于X),Y不決定X,Y決定Z,則稱Z對(duì)X傳遞函數(shù)依賴。
4、 平凡與非平凡函數(shù)依賴:
(1) 若X決定Y,但Y屬于X,則稱XàY是平凡函數(shù)依賴,否則稱非平凡函數(shù)依賴;
(2) 即平凡函數(shù)依賴,僅當(dāng)其右邊的屬性集是左邊屬性集的子集時(shí)成立;
(3) 非平凡函數(shù)依賴,僅當(dāng)其右邊的屬性集至少有一個(gè)屬性不屬于左邊有集合時(shí)成立;
(4) 完全非平凡函數(shù)依賴:僅當(dāng)其右邊的屬性集中屬性都不在左邊的集合時(shí)成立;
5、 碼:
(1) 在關(guān)系模式R(U)中,K為R的屬性或?qū)傩越M,若K函數(shù)決定A1.A2….An,則K為關(guān)系模式R的候選碼,包含在候選碼中的屬性稱為主屬性,否則為非主屬性;
(2) 若一個(gè)關(guān)系的候選碼不止一個(gè),則選定其中一個(gè)作為關(guān)系R的主碼;
(3) 關(guān)系的碼屬性除了必須完全函數(shù)決定關(guān)系的所有其他屬性外,還必須滿足最小化規(guī)則,即在關(guān)系模式R(U)中,不存在一個(gè)K的真子集能夠函數(shù)決定R的其他屬性。
6、 函數(shù)依賴的推理規(guī)則:
(1) 自反律:若Y(包含于)X(包含于)U,則XàY成立;
(2) 增廣律:若XàY,且Z(包含于)U,則XZàYZ成立;
(3) 傳遞律:若XàY,YàZ,則XàZ成立;
(4) 合并規(guī)則:若XàY,XàZ成立,則XàYZ;
(5) 分解規(guī)則:若XàY和Z(包含于)Y成立,則XàZ也成立;
(6) 偽傳遞規(guī)則:若XàY,YWàZ,則XWàZ成立;
7、 屬性集閉包:
(1) 設(shè)F是屬性集U上的函數(shù)依賴集,X為U的一個(gè)子集,那么對(duì)于F,屬性集X關(guān)于F的閉包(用X+表示)為:X+={A|XàA}
(2) 由屬性集團(tuán)包的定義可知,若想判斷函數(shù)依賴XàY是否成立,只要計(jì)算X關(guān)于函數(shù)依賴集F的閉包,若Y是X閉包中的一個(gè)元素則XàY成立;
8、 確定關(guān)系的碼:
(1) 利用迭代算法計(jì)算X+,步驟如下:
(A) 選X作為閉包X+的初值X(0);
(B) 由X(i)計(jì)算X(i+1)時(shí),它是由X(0)并上屬性集合A所組成,其中A滿足下列條件:Y(包含于)X(i),且F中存在函數(shù)依賴YàZ,而A(包含于)Z。因?yàn)閁是有窮的,所以會(huì)得到X(i)=X(i+1),此時(shí)X(i)為所求的X+。
5.3.3 規(guī)范化設(shè)計(jì)方法
1、 第一范式:
(1) 定義:設(shè)關(guān)系模式R(F,U),如果R的每一個(gè)屬性都是不可分的數(shù)據(jù)項(xiàng),則此關(guān)系模式為第一范式;
(2) 一個(gè)給定關(guān)系和第一范式(1NF)的區(qū)別:
(A) 一個(gè)關(guān)系中的數(shù)據(jù)按照行和列的形式組織,每個(gè)元組具有相同數(shù)目的屬性個(gè)數(shù),且每一個(gè)元組的屬性值具有統(tǒng)一的數(shù)據(jù)類型和長(zhǎng)度;元組或?qū)傩缘呐帕信c順序無關(guān),每個(gè)元組必須通過一個(gè)屬性或?qū)傩越M惟一識(shí)別;
(B) 第一范式實(shí)際上對(duì)關(guān)系增加了一個(gè)約束,即關(guān)系中元組的每個(gè)屬性都只取一個(gè)值,第一范式是對(duì)關(guān)系模式的基本要求,不滿足第一范式的數(shù)據(jù)庫(kù)就不是關(guān)系數(shù)據(jù)庫(kù)。
2、 第二范式:
(1) 定義:若關(guān)系模式R(F,U)是1NF,且每個(gè)非主屬性完全函數(shù)依賴于碼,則稱R為第二范式,即在2NF中不存在非主屬性對(duì)碼的部分依賴;
(2) 僅滿足第一范式關(guān)系會(huì)存在種種問題,要消除必須用更高級(jí)的范式標(biāo)準(zhǔn)來設(shè)計(jì),稱為標(biāo)準(zhǔn)化;
(3) 具體做法是將大的關(guān)系分解成多個(gè)小的關(guān)系,使分解后的關(guān)系滿足更高級(jí)范式的要求。
(4) 第二范式實(shí)際上對(duì)關(guān)系增加了一個(gè)約束,就是關(guān)系中的每一個(gè)屬性必須完全依賴于主碼,即在第一范式的基礎(chǔ)上,消除非主屬性對(duì)主碼的部分函數(shù)依賴可達(dá)到2NF;
3、 第三范式:
(1) 定義:若關(guān)系R(U,F(xiàn))為第一范式,且不存在非主屬性對(duì)主碼的傳遞函數(shù)依賴,則稱R為第三范式;
(2) 第三范式是在第二范式的基礎(chǔ)上對(duì)關(guān)系又增加了一個(gè)約束,就是關(guān)系中的每一個(gè)非主屬性必須只依賴于主碼。即2NF的基礎(chǔ)上,消除非主屬性對(duì)主碼的傳遞函數(shù)依賴可達(dá)到3NF。
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ù)庫(kù)規(guī)范化的程序越高,其關(guān)系表就越多,從而增加了表之間連接運(yùn)算的代價(jià),影響了數(shù)據(jù)庫(kù)的執(zhí)行速度和性能。所以通常關(guān)系模式規(guī)范化工作僅做到3NF,這樣既使關(guān)系中不合理的屬性基本消除,規(guī)范化程度也不太高,保證數(shù)據(jù)庫(kù)有較好的性能。
5.4 數(shù)據(jù)庫(kù)模式設(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ù)庫(kù)設(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ù)庫(kù)性能比較起來是可以忽略的,因?yàn)樵跀?shù)據(jù)庫(kù)設(shè)計(jì)過程中通過增加一些數(shù)據(jù)約束,就可以解決3NF引起的數(shù)據(jù)問題了。
3、 優(yōu)化屬性:確定各字段的類型和長(zhǎng)度;
4、 確認(rèn)模式滿足需要:
5.4.3 數(shù)據(jù)完整性設(shè)計(jì)
1、 指定義數(shù)據(jù)庫(kù)中存儲(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ù)庫(kù)存取特點(diǎn)定義相關(guān)的外模式;
相關(guān)推薦:
各地2015年計(jì)算機(jī)等級(jí)考試報(bào)名時(shí)間匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |