5.3 關(guān)系數(shù)據(jù)庫設(shè)計理論
5.3.1 問題的提出
究竟一個關(guān)系數(shù)據(jù)庫包含哪些屬性是合理的,如何評價一個關(guān)系模式設(shè)計的優(yōu)劣?
5.3.2 函數(shù)依賴
函數(shù)依理論利用一個關(guān)系中屬性之間的依賴關(guān)系評價和優(yōu)化關(guān)系模式,以保證存儲到數(shù)據(jù)庫中的關(guān)系具有較好特性;
1、 函數(shù)依賴:
(1) 設(shè)R(U)為一關(guān)系模式,X和Y為屬性全集U的子集,若對于R(U)的任意一個可能的關(guān)系r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱“X函數(shù)決定Y”或“Y函數(shù)依賴于X”,并記作X
Y,其中X稱為決定因素,因為根據(jù)函數(shù)依賴定義,給定一個X,就能惟一決定一個Y。
(2) 這里討論的函數(shù)關(guān)系與數(shù)學(xué)上的不同,是不能計算的,是一個關(guān)系中屬性之間存在的依賴關(guān)系;它是一種語義范疇的概念,只能根據(jù)兩個屬性之間的語義來確定一個函數(shù)依賴是否存在。
2、 完全與部分函數(shù)依賴:
(1) 在關(guān)系模式R(U)中,如果XàY成立,并且對X的任何真子集X’不能函數(shù)決定Y,則稱Y對X是完全函數(shù)依賴,被記作X---f---àY。
(2) 若XàY,但Y不完全函數(shù)依賴于X,則稱Y對X是部分函數(shù)依賴,記作X--pàY;
3、 傳遞函數(shù)依賴:
在關(guān)系R(U)模式中,如果X決定Y,(Y不屬于X),Y不決定X,Y決定Z,則稱Z對X傳遞函數(shù)依賴。
4、 平凡與非平凡函數(shù)依賴:
(1) 若X決定Y,但Y屬于X,則稱XàY是平凡函數(shù)依賴,否則稱非平凡函數(shù)依賴;
(2) 即平凡函數(shù)依賴,僅當(dāng)其右邊的屬性集是左邊屬性集的子集時成立;
(3) 非平凡函數(shù)依賴,僅當(dāng)其右邊的屬性集至少有一個屬性不屬于左邊有集合時成立;
(4) 完全非平凡函數(shù)依賴:僅當(dāng)其右邊的屬性集中屬性都不在左邊的集合時成立;
5、 碼:
(1) 在關(guān)系模式R(U)中,K為R的屬性或?qū)傩越M,若K函數(shù)決定A1.A2….An,則K為關(guān)系模式R的候選碼,包含在候選碼中的屬性稱為主屬性,否則為非主屬性;
(2) 若一個關(guān)系的候選碼不止一個,則選定其中一個作為關(guān)系R的主碼;
(3) 關(guān)系的碼屬性除了必須完全函數(shù)決定關(guān)系的所有其他屬性外,還必須滿足最小化規(guī)則,即在關(guān)系模式R(U)中,不存在一個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的一個子集,那么對于F,屬性集X關(guān)于F的閉包(用X+表示)為:X+={A|XàA}
(2) 由屬性集團包的定義可知,若想判斷函數(shù)依賴XàY是否成立,只要計算X關(guān)于函數(shù)依賴集F的閉包,若Y是X閉包中的一個元素則XàY成立;
8、 確定關(guān)系的碼:
(1) 利用迭代算法計算X+,步驟如下:
(A) 選X作為閉包X+的初值X(0);
(B) 由X(i)計算X(i+1)時,它是由X(0)并上屬性集合A所組成,其中A滿足下列條件:Y(包含于)X(i),且F中存在函數(shù)依賴YàZ,而A(包含于)Z。因為U是有窮的,所以會得到X(i)=X(i+1),此時X(i)為所求的X+。
5.3.3 規(guī)范化設(shè)計方法
1、 第一范式:
(1) 定義:設(shè)關(guān)系模式R(F,U),如果R的每一個屬性都是不可分的數(shù)據(jù)項,則此關(guān)系模式為第一范式;
(2) 一個給定關(guān)系和第一范式(1NF)的區(qū)別:
(A) 一個關(guān)系中的數(shù)據(jù)按照行和列的形式組織,每個元組具有相同數(shù)目的屬性個數(shù),且每一個元組的屬性值具有統(tǒng)一的數(shù)據(jù)類型和長度;元組或?qū)傩缘呐帕信c順序無關(guān),每個元組必須通過一個屬性或?qū)傩越M惟一識別;
(B) 第一范式實際上對關(guān)系增加了一個約束,即關(guān)系中元組的每個屬性都只取一個值,第一范式是對關(guān)系模式的基本要求,不滿足第一范式的數(shù)據(jù)庫就不是關(guān)系數(shù)據(jù)庫。
2、 第二范式:
(1) 定義:若關(guān)系模式R(F,U)是1NF,且每個非主屬性完全函數(shù)依賴于碼,則稱R為第二范式,即在2NF中不存在非主屬性對碼的部分依賴;
(2) 僅滿足第一范式關(guān)系會存在種種問題,要消除必須用更高級的范式標準來設(shè)計,稱為標準化;
(3) 具體做法是將大的關(guān)系分解成多個小的關(guān)系,使分解后的關(guān)系滿足更高級范式的要求。
(4) 第二范式實際上對關(guān)系增加了一個約束,就是關(guān)系中的每一個屬性必須完全依賴于主碼,即在第一范式的基礎(chǔ)上,消除非主屬性對主碼的部分函數(shù)依賴可達到2NF;
3、 第三范式:
(1) 定義:若關(guān)系R(U,F(xiàn))為第一范式,且不存在非主屬性對主碼的傳遞函數(shù)依賴,則稱R為第三范式;
(2) 第三范式是在第二范式的基礎(chǔ)上對關(guān)系又增加了一個約束,就是關(guān)系中的每一個非主屬性必須只依賴于主碼。即2NF的基礎(chǔ)上,消除非主屬性對主碼的傳遞函數(shù)依賴可達到3NF。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |