描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区;
描述班级的属性有:班号、专业名、系名、人数、入校年份;
描述系的属性有:系号、系名、系办公地点、人数;
描述学会的属性有:学会名、成立年份、地点、人数;
有关语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。
一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。
学生参加某学会有一个入会年份。
请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,
对于函数依赖左部是多属性的情况,讨论函数是完全函数依赖还是部分函数依赖。
1.学生S(Sno,SN,SB,DN,Cno,SD)
班级C(Cno,PN,DN,Cnum,EY)
系D(Dno,DN,DOL,Dnum)
学会L(LN,SY,LL,Lnum)
学生-学会SL(Sno,LN,LY)
2.最小函数依赖:
S: S n o → S N Sno \rightarrow SN Sno→SN, S n o → S B Sno \rightarrow SB Sno→SB, S n o → C n o Sno \rightarrow Cno Sno→Cno, C n o → D N Cno \rightarrow DN Cno→DN, D N → S D DN \rightarrow SD DN→SD
C: C n o → P N , P N → D N , C n o → C n u m , C n o → E Y , ( P N , E Y ) → C n o Cno \rightarrow PN,PN \rightarrow DN,Cno \rightarrow Cnum,Cno \rightarrow EY,(PN,EY) \rightarrow Cno Cno→PN,PN→DN,Cno→Cnum,Cno→EY,(PN,EY)→Cno
D: D n o → D N , D N → D n o , D n o → D O L , D n o → D n u m Dno \rightarrow DN,DN \rightarrow Dno,Dno \rightarrow DOL,Dno\rightarrow Dnum Dno→DN,DN→Dno,Dno→DOL,Dno→Dnum
L: L N → S Y , L N → L L , L N → L n u m LN \rightarrow SY,LN \rightarrow LL,LN \rightarrow Lnum LN→SY,LN→LL,LN→Lnum
3.传递依赖:
S:
因为 S n o → C n o Sno \rightarrow Cno Sno→Cno, C n o → D N Cno \rightarrow DN Cno→DN所以 S n o → p D N Sno \overset p \rightarrow DN Sno→pDN
因为 C n o → D N Cno \rightarrow DN Cno→DN, D N → S D DN \rightarrow SD DN→SD所以 C n o → p S D Cno \overset p\rightarrow SD Cno→pSD
因为 S n o → C n o Sno \rightarrow Cno Sno→Cno, C n o → D N Cno \rightarrow DN Cno→DN, D N → S D DN \rightarrow SD DN→SD所以 S n o → p S D Sno \overset p\rightarrow SD Sno→pSD
C:
因为 C n o → P N , P N → D N Cno \rightarrow PN,PN \rightarrow DN Cno→PN,PN→DN,所以 C n o → p D N Cno \overset p\rightarrow DN Cno→pDN
D:
因为 D N → D n o , D n o → D O L DN \rightarrow Dno,Dno \rightarrow DOL DN→Dno,Dno→DOL,所以 D N → p D O L DN \overset p\rightarrow DOL DN→pDOL
因为 D N → D n o , D n o → D n u m DN \rightarrow Dno,Dno\rightarrow Dnum DN→Dno,Dno→Dnum,所以 D N → p D n u m DN \overset p\rightarrow Dnum DN→pDnum
ps:我也不知道为啥答案上没有,是因为依赖的必须是主码吗??
4.左部多属性情况:
S n o , L N → L Y Sno,LN \rightarrow LY Sno,LN→LY, E Y , P N → C n o EY,PN \rightarrow Cno EY,PN→Cno都是完全函数依赖。
(1)若A是R的候选码,具有函数依赖 B C → D BC \rightarrow D BC→D,那么在什么条件下R是BCNF?
答:BC包含码A
(2)若存在函数依赖 A → B A \rightarrow B A→B, B C → D BC \rightarrow D BC→D, D E → A DE \rightarrow A DE→A,列出R的所有码。
答:(A,C,E),(B,C,E),(C,D,E)
(3)若存在函数依赖 A → B A \rightarrow B A→B, B C → D BC \rightarrow D BC→D, D E → A DE \rightarrow A DE→A,R属于3NF还是BCNF。
答:因为A,B,C,D,E全在码中,所以属于BCNF
错的:
(4)当且仅当函数依赖 A → B A \rightarrow B A→B在R上成立,关系R(A,B,C)等于其投影 R 1 ( A , B ) R_1(A,B) R1(A,B)和 R 2 ( A , C ) R_2(A,C) R2(A,C)的连接
原因:当且仅当函数依赖 A → → B A \rightarrow \rightarrow B A→→B在R上成立,关系R(A,B,C)等于其投影 R 1 ( A , B ) R_1(A,B) R1(A,B)和 R 2 ( A , C ) R_2(A,C) R2(A,C)的连接
(8)若 R ( B , C ) → R . A R(B,C) \rightarrow R.A R(B,C)→R.A,则 R . B → R . A R.B \rightarrow R.A R.B→R.A, R . C → R . A R.C \rightarrow R.A R.C→R.A
原因:例如学号和课程能确定成绩,但是学号和课程单一一个并不能确定成绩
正确:
(1)任何一个二目关系是属于3NF的
(2)任何一个二目关系是属于BCNF的
(3)任何一个二目关系是属于4NF的
(5)若 R . A → R . B R.A \rightarrow R.B R.A→R.B, R . B → R . C R.B \rightarrow R.C R.B→R.C,则 R . A → R . C R.A \rightarrow R.C R.A→R.C
(6)若 R . A → R . B R.A \rightarrow R.B R.A→R.B, R . A → R . C R.A \rightarrow R.C R.A→R.C,则 R . A → R . ( B , C ) R.A \rightarrow R.(B,C) R.A→R.(B,C)
(7)若 R . ( B , C ) → R . A R.(B,C) \rightarrow R.A R.(B,C)→R.A,则 R . B → R . A R.B \rightarrow R.A R.B→R.A, R . ( B , C ) → R . A R.(B,C) \rightarrow R.A R.(B,C)→R.A
(1)若R是BCNF关系模式,则R是3NF关系模式,反之则不然。
答:①若R是BCNF关系模式,则R是3NF关系模式
若R是BCNF,且R不是3NF,则存在候选码X,属性组Y,和非主属性Z,Z不包含与Y,存在:
X → Y , Y ↛ X , Y → Z X \rightarrow Y,Y\not\rightarrow X,Y\rightarrow Z X→Y,Y→X,Y→Z,
因为 Y ↛ X Y\not\rightarrow X Y→X,所以Y不包含候选码,
即 Y → Z Y\rightarrow Z Y→Z,函数Y依赖的决定元素Y不包含候选码与R包含BCNF相矛盾,
即若R属于BCNF,则一定属于3NF
②若R是3NF关系模式,则R不一定是BCNF关系模式
存在非主属性满足部分和传递函数依赖
(2)若R是3NF关系模式,则R一定是2NF关系模式。
若R是3NF,不是2NF,则存在一个非主属性Z,不完全依赖于码,
因此存在候选码X的真子集Y, Y → Z Y \rightarrow Z Y→Z,且 Y ↛ X Y \not\rightarrow X Y→X,Y是主属性,Z不是主属性
则存在候选码X,属性组Y,非主属性Z, X → Y X \rightarrow Y X→Y Y ↛ X Y \not\rightarrow X Y→X Y → Z Y \rightarrow Z Y→Z与R不是3NF相矛盾
故若R是3NF,则R一定是2NF
我高估自己了,没想到用latex要写这么久,自大了,自大了,但是这次写完,感觉手打\rightarrow都成了习惯,还有就是对于范式掌握的不是很流畅,得多看书啊啊啊啊啊。。。