《關(guān)系數(shù)據(jù)理論 課后答案》由會(huì)員分享,可在線閱讀,更多相關(guān)《關(guān)系數(shù)據(jù)理論 課后答案(4頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第五章 關(guān)系數(shù)據(jù)理論
習(xí)題解答和解析
1.理解并給出下列術(shù)語的定義:函數(shù)依賴、部分函數(shù)依賴、完全函數(shù)依賴、傳遞依賴、候選碼、主碼、外碼、全碼(All-key)、1NF、2NF、3NF、BCNF、多值依賴、4NF。
解析:解答本題不能僅僅把《概論》上的定義寫下來。關(guān)鍵是真正理解和運(yùn)用這些概念。
答:函數(shù)依賴:設(shè)R(U)是一個(gè)關(guān)系模式,U是R的屬性集合,X和Y是U的子集。對(duì)于 R(U)的任意一個(gè)可能的關(guān)系r,如果r中不存在兩個(gè)元組,它們?cè)赬上的屬性值相同,而在Y上的屬性值不同,則稱"X函數(shù)確定Y"或"Y函數(shù)依賴于X", 記作X→Y。
解析:
(1)函數(shù)依賴是最基本的一種數(shù)據(jù)依賴,也是最
2、重要的一種數(shù)據(jù)依賴。
(2)函數(shù)依賴是屬性之間的一種聯(lián)系, 體現(xiàn)在屬性值是否相等。由上面的定義可以知道,如果X→Y,則r中任意兩個(gè)元組,若它們?cè)赬上的屬性值相同,那么在Y 上的屬性值一定也相同。
(3)要從屬性間實(shí)際存在的語義來確定他們之間的函數(shù)依賴,即函數(shù)依賴反映了(描述了)現(xiàn)實(shí)世界的一種語義。
(4)函數(shù)依賴不是指關(guān)系模式R在某個(gè)時(shí)刻的關(guān)系(值)滿足的約束條件,而是指R任何時(shí)刻的一切關(guān)系均要滿足的約束條件。
答:完全函數(shù)依賴、部分函數(shù)依賴:在R(U)中,如果X→Y,并且對(duì)于X的任何一個(gè)真子集X,都有X Y,則稱Y對(duì)X完全函數(shù)依賴,記作:
若X→Y, 但Y不完全函數(shù)依賴于X,
3、則稱Y對(duì)X部分函數(shù)依賴,記作:
傳遞依賴:在R(U)中,如果X→Y,(YX),Y X,Y→Z,則稱Z對(duì)X傳遞函數(shù)依賴。
候選碼、主碼:設(shè)K為R 中的屬性或?qū)傩越M合,若K→U (完全依賴)則K為R的候選碼(Candidate key)。若候選碼多于一個(gè),則選運(yùn)其中的一個(gè)為主碼(Pdmary key)。
解析:
1)這里我們用函數(shù)依賴來嚴(yán)格定義碼的概念。在第二章中我們只是描述性地定義碼(可以復(fù)習(xí)2.2.1):若關(guān)系中的某一屬性組的值能惟一地標(biāo)識(shí)一個(gè)元組, 則稱該屬性組為候選碼(Candidate key)。
2)因?yàn)榇a有了嚴(yán)格定義,在學(xué)習(xí)了《概論》5.3 數(shù)據(jù)依賴的公理系
4、統(tǒng)后就可
以從R的函數(shù)依賴集F出發(fā),用算法來求候選碼。
答:外碼:關(guān)系模式R中屬性或?qū)傩越MX并非R的碼,但X是另一個(gè)關(guān)系模式的碼,則稱X是R的外部碼(Foreign key),也稱外碼。
全碼:整個(gè)屬性組是碼,稱為全碼(All--key)。
答:1NF: 如果一個(gè)關(guān)系模式R的所有屬性都是不可分的基本數(shù)據(jù)項(xiàng),則RlNF。
解析:第一范式是對(duì)關(guān)系模式的最起碼的要求。不滿足第一范式的數(shù)據(jù)庫模式不能稱為關(guān)系數(shù)據(jù)庫。
答:2NF:若關(guān)系模式RlNF,并且每一個(gè)非主屬性都完全函數(shù)依賴于R的碼,則R2NF。
3NF:關(guān)系模式R中若不存在這樣的碼X,屬性組Y及非主屬性Z(ZY
5、)使得X→Y,(Y X)Y→Z,成立, 則稱R3NF。BCNF:關(guān)系模式R1NF。若X→Y且YX時(shí)X必含有碼,則RBCNF。
解析:
讀者要真正理解這些范式的內(nèi)涵。各種范式之間的聯(lián)系:5NF4NFBCNF3NF2NF1NF(《概論》上圖 5.2)。能夠理解為什么有這種包含關(guān)系。
答多值依賴 : 設(shè) R(U) 是屬性集 U 上的一個(gè)關(guān)系模式。 X,Y,Z 是 U 的子集 ,并且 Z =U -X-Y 。關(guān)系模式 R(U) 中多值依賴 X →→ Y 成立 , 當(dāng)且僅當(dāng)對(duì) R (U) 的任一關(guān)系 r, 給定的一對(duì) ( 元 ,z) 值 , 有一組 Y 的值 ,
6、 這組值僅僅決定于 z 值 而與 z 值無關(guān)。4NF: 關(guān)系模式 R 〈 U,F 〉ε 1NF, 如果對(duì)于 R 的每個(gè)非平凡多值依賴 X →→ Y(Y CE X),X 都含有碼 , 則稱 R 4NFo
解析
對(duì)于多值依賴的定義有多種?!陡耪摗飞隙x 5.9 后面又給出了一種等價(jià)的定義。習(xí)題中的第 4 題是另一種等價(jià)的定義。可以對(duì)比不同的定義來理解多值依賴 , 選擇自己容易理解的一種定義來掌握多值依賴概念。
2. 建立一個(gè)關(guān)于系、學(xué)生、班級(jí)、學(xué)會(huì)等諸信息的關(guān)系數(shù)據(jù)庫。 描述學(xué)生的屬性有 : 學(xué)號(hào)、姓名、出生年月、系名、班號(hào)、宿舍區(qū)。 描述班級(jí)的屬性有 : 班號(hào)、專業(yè)名、系名、
7、人數(shù)、入校年份。
描述系的屬性有 : 系名、系號(hào)、系辦公室地點(diǎn)、人數(shù)。
描述學(xué)會(huì)的屬性有 : 學(xué)會(huì)名、成立年份、地點(diǎn)、人數(shù)。
有關(guān)語義如下 : 一個(gè)系有若干專業(yè) , 每個(gè)專業(yè)每年只招一個(gè)班 , 每個(gè)班有若 干學(xué)生。一個(gè)系的學(xué)生住在同一宿舍區(qū)。每個(gè)學(xué)生可參加若干學(xué)會(huì) , 每個(gè)學(xué)會(huì) 有若干學(xué)生。學(xué)生參加某學(xué)會(huì)有一個(gè)人會(huì)年份。請(qǐng)給出關(guān)系模式 , 寫出每個(gè)關(guān)系模式的極小函數(shù)依賴集 , 指出是否存在傳遞 函數(shù)依賴 , 對(duì)于函數(shù)依賴左部是多屬性的情況討論函數(shù)依賴是完全函數(shù)依賴 , 還是部分函數(shù)依賴.指出各關(guān)系的候選碼、外部碼 , 有沒有全碼存在 ?
答:關(guān)系模式 : 學(xué)生 S(S#,SN, 鈕 ,
8、DN,C #,SA)
班級(jí) C(C#,CS,DN,CNUM,CDATE)
系 D(D#,DN,DA,DNUM)
學(xué)會(huì) P(PN,DA 四 1,PA,PNUM)
學(xué)生 -學(xué)會(huì) SP(S#,PN,DATE2)
其中 ,S# 一學(xué)號(hào) ,SN 一姓名 ,SB 一出生年月 ,SA 一宿舍區(qū),C # 一班號(hào) ,CS 一專業(yè)名 ,CNUM 一班級(jí)人數(shù) ,CDATE- 入校年份,D # 一系號(hào) ,DN 一系名 ,DA 一系辦公室地點(diǎn) ,DNUM 一系人數(shù),PN 一學(xué)會(huì)名 ,DAIE1 一成立年月 ,PA 一地點(diǎn) ,PNUM 一學(xué)會(huì)人數(shù) ,DATE2 一人會(huì)年份
每個(gè)關(guān)系模式的極小函數(shù)依賴集 :
9、S :S# → SN,S # →鈕 ,S # → C#,C # → DN,DN → SA
C :C # → CS,C # → CNIJM,C # → CDATE,CS → DN,(Cs ,CDATE) → C#
/ 鈴因?yàn)槊總€(gè)專業(yè)每年只招一個(gè)班於 /
D:D # → DN,DN → D#,D # → DA,D # → DNIJM
/ 鈴按照實(shí)際情況 , 系名和系號(hào)是一一對(duì)應(yīng)的鈴/P:PN → DATE1,PN → PA,PN → NUM
SP:(S#,PN) → DATE2
S 中存在傳遞函數(shù)依賴 :S # → DN,S # → SA,C # → SA
/ 鈴因?yàn)?S # →
10、C#,C # → DN,DN → SA 禱 /
C 中存在傳遞函數(shù)依賴 :C# → DN
/ 鈴因?yàn)?C # → CS,CS → DN 鈴 /
(S#,PN) → DAIE2 和 (CS,CDATE) → C# 均為 SP 中的函數(shù)依賴 , 是完全函數(shù)依賴。
關(guān)系
S
C
候選碼
S #
C #,(CS,CDAIE)
外部碼 C #,DN DN
S #,PN
D # 和 DN PN (S#,PN)
D P SP
解析
讀者應(yīng)該根據(jù)題目中給出的有關(guān)語義寫出關(guān)系模式中的數(shù)據(jù)依賴 , 有些依 賴可以按照實(shí)際情況寫出 , 也許題目中并沒有明顯指出。例如 ,
11、按照實(shí)際情況 ,系名和系號(hào)是一一對(duì)應(yīng)的 , 因此有 D # → DN,DN → D# 。
3. 試由 Amostrong 公理系統(tǒng)推導(dǎo)出下面三條推理規(guī)則 :
(1) 合并規(guī)則 : 若 X → Z,X → Y, 則有 X → YZ
(2) 偽傳遞規(guī)則 : 由 X → Y,W → Z 有 XW → Z
(3) 分解規(guī)則 :X → Y,ZC Y, 有 X → Z
證明
(1) 已知 X → Z, 由增廣律知 XY → YZ, 又因?yàn)?X → Y, 可得 XX → XY → YZ, 最后根據(jù)傳遞律得X → YZ 。
(2) 已知 X → Y, 據(jù)增廣律得 XW → WY, 因?yàn)?WY
12、→ Z, 所以 XW → WY → Z, 通過傳遞律可知 XW → Z 。
(3) 已知 ZC Y, 根據(jù)自反律知 Y → Z, 又因?yàn)?X → Y, 所以由傳遞律可得 X→ Z 。
4. 關(guān)于多值依賴的另一種定義是 :
給定一個(gè)關(guān)系模式 R(X,Y,Z), 其中 X,Y,Z 可以是屬性或?qū)傩越M合。
設(shè) z ε x,y ε Y,z ε z,m 在 R 中的像集為 :
ELz=i r.Yl r.X=ZAr.Z =zAr ε R i
定義 R(X,Y,Z) 當(dāng)且僅當(dāng) bz= 丸 , 對(duì)于每一組 ( 元 ,h z) 都成立 , 則 Y 對(duì) X 多值依賴 , 記作 X →→ Y 。這里
13、 , 允許 Z 為空集 , 在 Z 為空集時(shí) , 稱為平凡的多值依賴。請(qǐng)證明這里的定義和《概論》 5.2.7 節(jié)中定義 5.9 是等價(jià)的。
證明:設(shè) ELz= 凡 , 對(duì)于每一組 ( 元 ,z,z) 都成立 , 現(xiàn)證其能推出定義 5.9 的條件 : 設(shè) sJ 是關(guān)系 r 中的兩個(gè)元組 ,s[X]=t[X], 由新定義的條件可知對(duì)于每 一個(gè) z 值 , 都對(duì)應(yīng)相同的一組 y 值。這樣一來 , 對(duì)相同的 Z 值 , 交換 y 值后所得 的元組仍然屬于關(guān)系 r, 即定義 5.9 的條件成立 ;
如果定義 5.9 的條件成立 , 則對(duì)相同的 Z 值 , 交換 y 值后所得的元組仍然屬
于關(guān)系
14、r, 由于任意性及其對(duì)稱性 , 可知每個(gè) z 值對(duì)應(yīng)相同的一組 y 值 , 所以 YZZ =YM, 對(duì)于每一組 ( 元 ,z,z) 都成立。
綜上可知 , 新定義和定義 5.9 的條件是等價(jià)的 , 所以新定義和定義 5.9 是等價(jià)的。
5. 試舉出 3 個(gè)多值依賴的實(shí)例。 答
(1) 關(guān)系模式 MSC(M,S,C) 中 ,M 表示專業(yè) ,S 表示學(xué)生 ,C 表示該專業(yè)的必
修課。假設(shè)每個(gè)專業(yè)有多個(gè)學(xué)生 , 有一組必修課。設(shè)同專業(yè)內(nèi)所有學(xué)生選修的 必修課相同 , 實(shí)例關(guān)系如下。按照語義對(duì)于 M 的每一個(gè)值磯 ,S 有一個(gè)完整的 集合與之對(duì)應(yīng)而不問 C 取何值 , 所以 M →→ S
15、。由于 C 與 S 的完全對(duì)稱性 , 必然 有 M →→ C 成立。
M
S
C
M1
S1
C1
MI
S1
C2
M1
S2
Cl
M1
S2
C2
......
......
......
(2) 關(guān)系模式 ISA(I,S,A) 中 ,I 表示學(xué)生興趣小組 ,S 表示學(xué)生 ,A 表示某興 趣小組的活動(dòng)項(xiàng)目 O 假設(shè)每個(gè)興趣小組有多個(gè)學(xué)生 , 有若干活動(dòng)項(xiàng)目 O 每個(gè)學(xué) 生必須參加所在興趣小組的所有活動(dòng)項(xiàng)目 , 每個(gè)活動(dòng)項(xiàng)目要求該興趣小組的所 有學(xué)生參加。
按照語義有 I →→ S,I →→ A 成立。
(3) 關(guān)系模式 RD
16、P 俑 ,D,P) 中 ,R 表示醫(yī)院的病房 ,D 表示責(zé)任醫(yī)務(wù)人員 ,P 表示病人。假設(shè)每個(gè)病房住有多個(gè)病人 , 有多個(gè)責(zé)任醫(yī)務(wù)人員負(fù)責(zé)醫(yī)治和護(hù)理 該病房的所有病人。按照語義有 R →→ D,R →→ P 成立。
12. 下面的結(jié)論哪些是正確的 , 哪些是錯(cuò)誤的 ? 對(duì)于錯(cuò)誤的結(jié)論請(qǐng)給出理
由或給出一個(gè)反例說明之。
答
(1) 任何一個(gè)二目關(guān)系都是屬于 3NF 的。 J
(2) 任何一個(gè)二呂關(guān)系都是屬于 BCNF 的 O J
(3) 任何一個(gè)二目關(guān)系都是屬于 4NF 的。 J
R(X,Y} 如果 X →→ Y 即 X 、 Y 之間存在平凡的多值依賴 ,R 屬于 4NFo (4)
17、 當(dāng)且僅當(dāng)函數(shù)依賴 A--B 在 R 上成立 , 關(guān)系 R(A,B ,C) 等于其投影 RI
(A,B) 和 R2(A,C) 的連接。
當(dāng) A → B 在 R 上成立 , 關(guān)系 R(A,B ,C) 等于其投影 R1(A,B) 和 R2(A,C)
的連接。反之則不然。
正確的應(yīng)該是 :
當(dāng)且僅當(dāng)多值依賴 A →→ B 在 R 上成立 , 關(guān)系 R(A,B ,C) 等于其投影 R1
(A,B) 和 R2(A,C) 的連接。 ( 參見《概論》上定理 5.6)
(5) 若 R.A → R.B ,R.B → R.C , 則 R.A → R.C J
(6) 若 R.A → R.B ,R.A → R.C, 則 R.A → R. 餌 ,C)J
(7) 若 R.B → R.A,R.C → R.A, 則 R.(B,C) → R.A J
(8) 若 R.(B,C) → R.A, 則 R.B → R.A,R.C → R.A
反例 : 關(guān)系模式 SC(S#,C #,G),(S#,C #) → G, 但是 S # 恰 G,C # 氣 Go