1 .理解並給出下列術語的定義:
函數依賴、部分函數依賴、完全函數依賴、傳遞依賴、候選碼、主碼、外碼、全碼(All 一key )、1 NF 、ZNF 、3NF 、BcNF 、多值依賴、4NF 。
定義1:設R(U)是屬性集U上的關係模式。X,Y是屬性集U的子集。若對於R(U)的任意一個可能的關係r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數確定Y或Y函數依賴於X,記作XàY。(即只要X上的屬性值相等,Y上的值一定相等。)
術語和記號:
XàY,但Y不是X的子集,則稱XàY是非平凡的函數依賴。若不特別聲明,總是討論非平凡的函數依賴。
XàY,但Y是X的子集,則稱XàY是平凡的函數依賴。
若XàY,則X叫做決定因素(Determinant)。
若XàY,YàX,則記作XßàY。
若Y不函數依賴於X,則記作X à Y。
定義2:在R(U)中,如果 XàY,並且對於X的任何一個真子集X’,都有X’ à Y,則稱Y對X完全函數依賴
若XàY,但Y不完全函數依賴於X,則稱Y對X部分函數依賴
定義3:若關係模式R的每一個分量是不可再分的數據項,則關係模式R屬於第一範式(1NF)。
定義4:若關係模式R∈1NF,且每一個非主屬性完全函數依賴於碼,則關係模式R∈2NF 。(即1NF消除了非主屬性對碼的部分函數依賴則成爲2NF)。
定義5:關係模式R<U,F> 中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z不是Y的子集)使得XàY,Y à X,Y à Z成立,則稱R<U,F>∈3NF。
定義6:關係模式R<U,F>∈1NF 。若XàY且Y不是X的子集時,X必含有碼,則R<U,F>∈BCNF。
定義7:關係模式R<U,F>∈1NF,如果對於R的每個非平凡多值依賴XààY(Y不是X的子集,Z=U-X-Y不爲空),X都含有碼,則稱R<U,F>∈4NF。
2.建立一個關於系、學生、班級、學會等諸信息的關係數據庫。
學生:學號、姓名、出生年月、系名、班號、宿舍區。
班級:班號、專業名、系名、人數、入校年份。
系:系名、系號、系辦公地點、人數。
學會:學會名、成立年份、辦公地點、人數。
語義如下:一個繫有若干專業,每個專業每年只招一個班,每個班有若干學生。一個系的學生住在同一宿舍區。每個學生可參加若干學會,每個學會有若干學生。學生參加某學會有一個入會年份。
請給出關係模式,寫出每個關係模式的極小函數依賴集,指出是否存在傳遞函數依賴,對於函數依賴左部是多屬性的情況討論函數依賴是完全函數依賴,還是部分函數依賴。指出各關係模式的候選碼、外部碼,有沒有全碼存在?
解:(1)關係模式如下:
學生:S(Sno,Sname,Sbirth,Dept,Class,Rno)
班級:C(Class,Pname,Dept,Cnum,Cyear)
系:D(Dept,Dno,Office,Dnum)
學會:M(Mname,Myear,Maddr,Mnum)
(2)每個關係模式的最小函數依賴集如下:
A、學生S (Sno,Sname,Sbirth,Dept,Class,Rno) 的最小函數依賴集如下:SnoàSname,SnoàSbirth,SnoàClass,ClassàDept,DEPTàRno
傳遞依賴如下:
由於SnoàDept,而DeptàSno ,DeptàRno(宿舍區)
所以Sno與Rno之間存在着傳遞函數依賴。
由於ClassàDept,Dept à Class,DeptàRno
所以Class與Rno之間存在着傳遞函數依賴。
由於SnoàClass,ClassàSno,ClassàDept
所以Sno與Dept之間存在着傳遞函數依賴。
B、班級C(Class,Pname,Dept,Cnum,Cyear)的最小函數依賴集如下:
ClassàPname,ClassàCnum,ClassàCyear,PnameàDept.
由於ClassàPname,PnameàClass,PnameàDept
所以C1ass與Dept之間存在着傳遞函數依賴。
C、系D(Dept,Dno,Office,Dnum)的最小函數依賴集如下:
DeptàDno,DnoàDept,DnoàOffice,DnoàDnum
根據上述函數依賴可知,Dept與Office,Dept與Dnum之間不存在傳遞依賴。
D、學會M(Mname,Myear,Maddr,Mnum)的最小函數依賴集如下:
MnameàMyear,MnameàMaddr,MnameàMnum
該模式不存在傳遞依賴。
(3)各關係模式的候選碼、外部碼,全碼如下:
A、學生S候選碼:Sno;外部碼:Dept、Class;無全碼
B、班級C候選碼:Class;外部碼:Dept;無全碼
C、系D候選碼:Dept或Dno;無外部碼;無全碼
D、學會M候選碼:Mname;無外部碼;無全碼
7.下面的結論哪些是正確的? 哪些是錯誤的? 對於錯誤的請給一個反例說明之。
(1)任何一個二目關係是屬於3NF。
答:正確。因爲關係模式中只有兩個屬性,所以無傳遞。
(2)任何一個二目關係是屬於BCNF.
答:正確。按BCNF的定義,若XàY,且Y不是X的子集時,每個決定因素都包含碼,對於二目關係決定因素必然包含碼。詳細證明如下:(任何二元關係模式必定是BCNF)。
證明:設R爲一個二目關係R(A1,A2),則屬性A1和A2之間可能存在以下幾種依賴關係:
A、A1àA2,但A2àA1,則關係R的碼爲A1,決定因素都包含碼,所以,R是BCNF。
B、A1àA2,A2àA1,則關係R的碼爲A2,所以決定因素都包含碼,R是BCNF。
包含碼。R是BCNF。C、R的碼爲(A1,A2)(即A1 àA2,A2 àA1),決定因素都