一惕蹄、關(guān)系數(shù)據(jù)理論
1.關(guān)系模式的形式化定義
? ? ? ? R(U, D, DOM, F)
R:關(guān)系名,是符號(hào)化的元組語(yǔ)義
U:該關(guān)系的屬性集合
D:屬性組U中屬性所來(lái)自的域
DOM:屬性向域的映象集合
F:屬性間數(shù)據(jù)的依賴關(guān)系集合
2.關(guān)系模式的簡(jiǎn)化表示
? ? ? R<U, F>
將關(guān)系模式簡(jiǎn)化為一個(gè)三元組矗钟,影響數(shù)據(jù)庫(kù)模式設(shè)計(jì)的主要是U和F.
當(dāng)且僅當(dāng)U上的一個(gè)關(guān)系r滿足F時(shí)茶凳,r稱為關(guān)系模式R(U, F)的一個(gè)關(guān)系匿辩。
3.如何解決關(guān)系模式中存在的問(wèn)題?
規(guī)范化理論:找出關(guān)系模式中不合適的數(shù)據(jù)依賴阳准,消除它們芳悲,可以在不同程度上解決插入異常、刪除異常边坤、更新異常和數(shù)據(jù)冗余問(wèn)題名扛。
二、函數(shù)依賴
1.函數(shù)依賴
*定義:設(shè)R(U)是一個(gè)屬性集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稱為這個(gè)函數(shù)依賴的決定屬性組,也稱為決定因素(Determinant)耸峭。
例: S(Sno, Sname, Ssex, Sage, Sdept)
F= {Sno-→Sname, Sno →Ssex, Sno →Sage桩蓉,Sno →Sdept}
? ? ? 若Y不函數(shù)依賴于X,則記為X→Y,箭頭上加一斜杠劳闹。
*注意事項(xiàng)
(1)函數(shù)依賴是語(yǔ)義范疇的概念院究。只能根據(jù)數(shù)據(jù)的語(yǔ)義來(lái)確定函數(shù)依賴。
? ? ? ■如Sname→Sno函數(shù)依賴只有在“學(xué)生不允許有重名”的條件下成立本涕。
(2)數(shù)據(jù)庫(kù)設(shè)計(jì)者可以對(duì)現(xiàn)實(shí)世界作強(qiáng)制的規(guī)定业汰。
? ? ? ■例如設(shè)計(jì)者可以強(qiáng)行規(guī)定不允許學(xué)生有重名,因而使函數(shù)依賴
? ? ? Sname→Sno, Sname→Ssex菩颖,Sname→Sage, Sname→Sdept成立样漆。
(3)函數(shù)依賴是指關(guān)系模式R在任何時(shí)刻的關(guān)系實(shí)例均要滿足的約束條件。
? ? ? ■不是指某個(gè)或某些關(guān)系實(shí)例r滿足的約束條件晦闰,而是指R的所有關(guān)系實(shí)例r均要滿足的約束條件放祟。
2.平凡函數(shù)依賴與非平凡函數(shù)依賴
(1) X→Y,Y不包含于X呻右,則稱X→Y是非平凡的函數(shù)依賴跪妥。
(2) X→Y,但Y包含于X声滥,則稱X→Y是平凡的函數(shù)依賴眉撵。
例:在關(guān)系SC(Sno, Cno, Grade)中,
非平凡函數(shù)依賴: (Sno, Cno)→Grade
平凡函數(shù)依賴:
(Sno, Cno) →Sno? ? (Sno, Cno)→Cno
對(duì)于任一關(guān)系模式落塑,平凡函數(shù)依賴都是必然成立的纽疟,它不反映新的語(yǔ)義,因此若不特別聲明芜赌,我們總是討論非平凡函數(shù)依賴仰挣。
3.完全函數(shù)依賴與部分函數(shù)依賴
(1)在關(guān)系模式R(U)中,如果X→Y,并且對(duì)于X的任何一個(gè)真子集X'缠沈,都有X'→Y,則稱Y完全函數(shù)依賴于X,記作X→Y,箭頭上加F(Full)洲愤。
(2)若X→Y,但Y不完全函數(shù)依賴于X颓芭,則稱Y部分函數(shù)依賴于X,記作X→Y柬赐,箭頭上加P(Part)亡问。
在關(guān)系STUDENT(Sno ,Sdept,Mname,Cno,Grade)中,
(Sno, Cno)→(F) Grade是完全函數(shù)依賴
(Sno, Cno)→ (P)Sdept是部分函數(shù)依賴肛宋,因?yàn)镾no→ Sdept
4.傳遞函數(shù)依賴
(1)定義:在R (U)中州藕,如果X→Y, (Y 不包含于X) ,? Y不依賴于X,Y→Z, 則稱Z對(duì)X傳遞函數(shù)依賴(transitive functional dependency)酝陈。記為:X→(傳遞)Z
注意:如果Y→X,即X←→Y,則Z直接依賴于X床玻。
例:在關(guān)系STUDENT (Sno ,Sdept, Mname,Cno,Grade)中,
Sno→Sdept, Sdept→Mname, Sno→(傳遞)Mname
三沉帮、碼
1. 設(shè)K為關(guān)系模式R<U,F>中的屬性或?qū)傩越M合锈死。若K→(F)U,則K稱為R的一個(gè)候選碼(Candidate Key)穆壕。
■如果U部分函數(shù)依賴于K,即K →(P) U待牵,則K稱為超碼(Surpkey)
■候選碼是最小的超碼,即K的任意一個(gè)真子集都不是候選碼
[例] S(Sno, Sdept, Sage)
Sno→ (Sno, Sdept, Sage) 喇勋,Sno是碼
(Sno, Sdept)缨该、(Sno, Sage)、(Sno, Sdept, Sage)是超碼
SC(Sno, Cno, Grade)中川背,(Sno, Cno)是碼
2. 若關(guān)系模式R有多個(gè)候選碼贰拿,則選定其中的一個(gè)做為主碼(Primary key)。
[例] S(Sno, Sname, Sdept, Sage)渗常,假設(shè)學(xué)生無(wú)重名
Sno壮不、Sname是候選碼,選擇Sno為主碼皱碘。
3. 主屬性與非主屬性
■包含在任何一個(gè)候選碼中 的屬性询一,稱為主屬性( Prime attribute )
■不包含在任何碼中的屬性稱為非主屬性( Nonprime attribute)或非碼屬性 ( Non-key attribute )
[例] S(Sno, Sdept, Sage), Sno是碼,Sno是主屬性癌椿,Sdept, Sage是非主屬性健蕊。
SC(Sno, Cno, Grade)中,(Sno, Cno)是碼踢俄,Sno, Cno是主屬性缩功,Grade是非主屬性
4.? 全碼:整個(gè)屬性組是碼,稱為全碼(All-key)
[例]關(guān)系模式R(P,w,A)? P:演奏者? W:作品? A:聽(tīng)眾
? ? ? 語(yǔ)義:一個(gè)演奏者可以演奏多個(gè)作品都办,某作品可被多個(gè)演奏者演奏嫡锌,聽(tīng)眾可以欣賞不同演奏者的不同作品
? ? ? R (P, W, A)碼為(P, W, A)虑稼,即全碼,All-Key势木。
關(guān)系模式R<U,F>, U中屬性或?qū)傩越MX并非R的碼蛛倦,但X是另一個(gè)關(guān)系模式的碼,則稱X是R的外部碼(Foreign key)也稱外碼啦桌。
SC (Sno, Cno, Grade) 中溯壶,Sno不是碼,但Sno是關(guān)系模式
S (Sno, Sdept, Sage) 的碼甫男,則Sno是關(guān)系模式SC的外部碼且改。
主碼與外部碼起提供了表示關(guān)系間聯(lián)系的手段
四、范式
1.范式:是符合某一種級(jí)別的關(guān)系模式的集合。
(1)關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系必須滿足一定的要求,滿足不同程度要求的為不同范式咳胃。
(2)范式的種類:
第一范式(1NF)、第二范式(1NF)效扫、第三范式(1NF)、BC范式直砂、第四范式(1NF)菌仁、第五方式(1NF)。
(3)各范式之間的聯(lián)系
某一關(guān)系模式R為第n范式静暂,可簡(jiǎn)記為:R∈nNF
一個(gè)低一級(jí)范式的關(guān)系模式济丘,通過(guò)模式分解可轉(zhuǎn)化為若干個(gè)高一級(jí)范式的關(guān)系模式的集合,這種過(guò)程叫做規(guī)范化洽蛀。
2.第一范式 ( 1NF )
(1)定義:如果一個(gè)關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng)摹迷,則R∈1NF。
第一范式是對(duì)關(guān)系模式的最起碼的要求郊供,不滿足第一范式的數(shù)據(jù)庫(kù)模式不能稱為關(guān)系數(shù)據(jù)模式峡碉。
(2)滿足第一范式的關(guān)系模式并不一定是一個(gè)好的關(guān)系模式,比如:
關(guān)系模式S-L-C(Sno驮审,Cno鲫寄,Sdept,Sloc疯淫,Grade)地来,其屬性依次為學(xué)生學(xué)號(hào),學(xué)生課程號(hào)熙掺,學(xué)生所屬系未斑,學(xué)生住處,學(xué)生成績(jī)币绩。假設(shè)每個(gè)系的學(xué)生住在同一個(gè)樓蜡秽。
那么有以下關(guān)系:
存在問(wèn)題:插入異常费就,刪除異常诉瓦,數(shù)據(jù)冗余度大,修改復(fù)雜等力细。為了解決這些問(wèn)題睬澡,需要將其轉(zhuǎn)化為第二范式
3.第二范式(2NF)
(1)定義:關(guān)系模式R∈1NF,并且每一個(gè)非主屬性都完全函數(shù)依賴于R的碼眠蚂,則R∈2NF煞聪。
(2)舉例:上述S-L-C(Sno,Cno逝慧,Sdept昔脯,Sloc,Grade)∈1NF笛臣,不屬于2NF云稚。
轉(zhuǎn)化為第二范式:
由于關(guān)系模式SLC中,Sdept沈堡、Sloc部分函數(shù)依賴于碼静陈,SLC的碼為(Sno,Cno)诞丽。
采用投影分解法鲸拥,把SLC分解成兩個(gè)關(guān)系模式,消除這些部分函數(shù)依賴僧免。
關(guān)系模式SC的碼為(Sno刑赶,Cno),關(guān)系模式S-L的碼為Sno懂衩。
轉(zhuǎn)化后撞叨,非主屬性對(duì)碼都是完全函數(shù)依賴,且都是2NF勃痴。
4.第三范式(3NF)
(1)定義:關(guān)系模式R<U谒所,F(xiàn)>∈1NF,若R中【不存在】這樣的碼X沛申,屬性組Y及非主屬性Z ( Z不包含于Y) 劣领,使得X→Y,Y→Z铁材,Z→X尖淘,成立奕锌,則R<U,F(xiàn)>∈3NF村生。
(2)上述例子惊暴,關(guān)系模式S-L中,不存在部分函數(shù)依賴趁桃,但是存在傳遞函數(shù)辽话,所以S-L(Sno,Sdept卫病,Sloc)∈2NF油啤,不屬于第三范式。
將其轉(zhuǎn)化為第三范式蟀苛,可得:
關(guān)系模式S-D(Sno益咬,Sdept),關(guān)系模式D-L(Sloc)
在分解后的關(guān)系模式中帜平,既沒(méi)有非主屬性對(duì)碼的部分函數(shù)依賴幽告,也沒(méi)有非主屬性對(duì)碼的傳遞函數(shù)依賴,進(jìn)一步解決了存在的插入裆甩,刪除冗锁,更新異常,數(shù)據(jù)冗余度大等問(wèn)題淑掌。