数据库作业15:第六章: 关系数据理论 总结+习题

知识总结:
1、关系模式:有五部分组成,是一个五元组:R(U,D,DOM,F)。
其中,R是符号化的元组语义;
U为一组属性;
D为属性组U中的属性所来自的域;
DOM为属性到域的映射;
F为属性组U上的一组数据依赖。
(在本章中把关系模式看作一个三元组R(U,F))
2、作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项。
满足了这个条件的关系模式就属于第一范式(1NF)。

数据依赖
1、数据依赖是一个关系内部属性与属性之间的一种约束关系,它的主要类型有函数依赖(FD)和多值依赖(MVD)
2、Student(Sno,Sname,Sdept)
记作:Sno → \rightarrow Sname,Sno → \rightarrow Sdept.
读作:Sno函数决定Sname,Sno函数决定Sdept.
3、关系模式中可能会存在数据冗余、更新异常、插入异常、删除异常的问题。一个“好”的模式应当不会发生插入异常、删除异常和更新异常,数据冗余应尽可能少,而出现问题的原因是由存在于模式中的某些数据依赖引起的,可以使用规范化理论改造关系模式来消除其中不合适的数据依赖

【例6.1】建立一个描述学校教务的数据库,涉及的对象包括:学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、课程号(Cno)、成绩(Grade)。
已知事实有:(1)一个系有若干学生, 但一个学生只属于一个系;
(2)一个系只有一名(正职)负责人;
(3)一个学生可以选修多门课程,每门课程有若干学生选修;
(4)每个学生学习每一门课程有一个成绩。
由可以唯一确定出来得到
由此得到属性组U上的一组函数依赖F:
F={Sno → \rightarrow Sdept,Sdept → \rightarrow Mname,(Sno,Cno) → \rightarrow Grade}.
如果将这个单一的模式拆成三个关系模式:
S(Sno,Sdept,Sno → \rightarrow Sdept);
SC(Sno,Cno,Grade,(Sno,Cno) → \rightarrow Grade);
DEPT(Sdept,Mname,Sdept → \rightarrow Mname);这样就不会出现插入异常,删除异常的问题,数据冗余也得到了控制。

规范化(重点)
函数依赖

1.函数依赖
【定义】设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r 中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。

若X → \rightarrow Y,并且Y → \rightarrow X则记为X ← → \leftarrow\rightarrow ←→Y.若Y不函数依赖于X,则记为X ↛ \nrightarrow Y.

主码一定可以函数确定其他属性。

2.平凡函数依赖与非平凡函数依赖
X → Y X\rightarrow Y XY,但 Y ⊈ X Y \nsubseteq X YX 则称 X → Y X\rightarrow Y XY是非平凡的函数依赖。
X → Y X\rightarrow Y XY,但 Y ⊆ X Y \subseteq X YX 则称 X → Y X\rightarrow Y XY是平凡的函数依赖。

对于任意关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。若不特别声明,我们总是讨论非平凡的函数依赖。

X → Y X\rightarrow Y XY,则X称为这个函数依赖的决定因素

3.完全函数依赖与部分函数依赖
【定义】在R(U)中,如果 X → Y X\rightarrow Y XY,并且对于X的任何一个真子集X’,都有 X ′ ↛ Y X'\nrightarrow Y XY,则称Y对X完全函数依赖,记作 X → F Y X \overset F\rightarrow Y XFY.(X的真子集不能函数确定Y)
X → Y X\rightarrow Y XY,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作 X → P Y X\overset P \rightarrow Y XPY.

【例】在关系SC(Sno, Cno, Grade)中,有:
由于: S n o ↛ G r a d e Sno\nrightarrow Grade SnoGrade C n o ↛ G r a d e Cno\nrightarrow Grade CnoGrade
因此: ( S n o , C n o ) → F G r a d e (Sno, Cno) \overset F\rightarrow Grade (Sno,Cno)FGrade
( S n o , C n o ) → P S n o (Sno, Cno)\overset P \rightarrow Sno (Sno,Cno)PSno
( S n o , C n o ) → P C n o (Sno, Cno)\overset P \rightarrow Cno (Sno,Cno)PCno

4.传递函数依赖
【定义】在R(U)中,如果 X → Y X \rightarrow Y XY( Y ⊈ X Y\nsubseteq X YX), Y ↛ X Y\nrightarrow X YX, Y → Z Y\rightarrow Z YZ, Z ⊈ Y Z\nsubseteq Y ZY,则成Z对X传递函数依赖。记为: X → Z X \rightarrow Z XZ
注:如果 Y → X Y\rightarrow X YX,即 X ← → Y X\leftarrow \rightarrow Y X←→Y,则Z直接依赖于X,而不是传递函数依赖。
所以在判断传递函数依赖时,要判断Y是否可以函数确定X。


1、候选码:设K为R<U,F>中的属性或属性组合,若 K → F U K\overset F\rightarrow U KFU,则K称为R的一个候选码。(完全函数依赖,可以唯一确定一个元组)
超码:如果U部分函数依赖于K,即 K → P U K\overset P\rightarrow U KPU,则K称为超码。(K的子集还可以确定一个元组)
候选码是最小的超码,即K的任意真子集都不是候选码。
主码:若关系模式R有多个候选码,则选定其中的一个做为主码。
候选码可以有多个,但是主码只能有一个
全码:整个属性组是码,称为全码。
外码:关系模式R中属性或属性组X并非R的码,但X时另一个关系模式的码,则称X时R的外部码,也称外码。

【例】SC(Sno,Cno,Grade)中,Sno不是码,但Sno是S(Sno,Sdept,Sage)的码,所以Sno是SC的外码。
主码与外码一起提供了表示关系间联系的手段。
2、主属性与非主属性
包含在任何一个候选码中的属性 ,称为主属性
不包含在任何码中的属性称为非主属性

范式
范式是符合某一种级别的关系模式的集合。
各种范式之间存在联系: 1 N F ⊃ 2 N F ⊃ 3 N F ⊃ B C N F ⊃ 4 N F ⊃ 5 N F 1NF\supset 2NF\supset 3NF\supset BCNF \supset 4NF\supset 5NF 1NF2NF3NFBCNF4NF5NF
某一关系模式R为第n范式,可简记为R∈nNF。
在这里插入图片描述
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化

1、第一范式(1NF):作为二维表,关系要符合一个最基本的条件:每个分量必须是不可分开的数据项,满足了这个条件的关系模式就属于第一范式.
2、第二范式(2NF)
【定义】若关系模式 R ∈ 1 N F R\in 1NF R1NF,并且每一个非主属性都完全函数依赖于任何一个候选码,则 R ∈ 2 N F R\in 2NF R2NF.
简单来说:非主属性不能部分依赖于码。候选码的真子集不能函数确定非主属性。
只有当表中的主码有两个或两个以上的属性组成的时候,才有可能出现不符合2NF的情况。
判断步骤:找码、找非主属性、完全函数依赖?

【例6.4】S-L-C(Sno,Sdept,Sloc,Cno,Grade), Sloc为学生的住处,并且每个系的学生住在同一个地方。S-L-C的码为(Sno,Cno)。
函数依赖有: ( S n o , C n o ) → F G r a d e (Sno,Cno)\overset F\rightarrow Grade (Sno,Cno)FGrade
S n o → S d e p t Sno\rightarrow Sdept SnoSdept, ( S n o , C n o ) → P S d e p t (Sno,Cno)\overset P \rightarrow Sdept (Sno,Cno)PSdept
S n o → S l o c Sno\rightarrow Sloc SnoSloc, ( S n o , C n o ) → P S l o c (Sno,Cno)\overset P \rightarrow Sloc (Sno,Cno)PSloc
S d e p t → S l o c Sdept\rightarrow Sloc SdeptSloc
非主属性Grade完全函数依赖于码,但非主属性Sdept,Sloc并不完全函数依赖于码,关系模式S-L-C不属于2NF.

一个关系不属于2NF,可能会出现插入异常、删除异常、修改复杂的问题。
解决方法:用投影分解把关系模式S-L-C分解成两个关系模式:SC(Sno,Cno,Grade);
S-L(Sno,Sdept,Sloc).

3、第三范式(3NF)
【定义】设关系模式R<U,F> ∈ \in 1NF,若R中不存在这样的码X、属性组Y及非属性组Z( Z ⊉ Y Z \nsupseteq Y ZY),使得 X → Y , Y → Z X\rightarrow Y,Y\rightarrow Z XY,YZ 成立, Y ↛ X Y\nrightarrow X YX 不成立,则称R<U,F> ∈ \in 3NF.
简单来说:3NF非主属性不能传递依赖和部分依赖于码。

SC没有传递依赖,因此SC ∈ \in 3NF.
S-L中Sno → \rightarrow Sdept(Sdept ↛ \nrightarrow Sno),Sdept → \rightarrow Sloc,可得Sno → \rightarrow Sloc,有函数传递依赖,因此S-L不属于3NF.
解决的办法是将S-L分解成:S-D(Sno,Sdept) ∈ \in 3NF, D-L(Sdept,Sloc) ∈ \in 3NF.

4、BC范式(BCNF)
【定义】设关系模式R<U,F> ∈ \in 1NF,若 X → Y X\rightarrow Y XY Y ⊈ X Y \nsubseteq X YX时X必含有码,则R<U,F> ∈ \in BCNF.换言之,在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R ∈ \in BCNF.
简单来说:在满足3NF(非主属性不能传递依赖和部分依赖于码)的基础上,不允许主码的一部分被另一部分或其他部分决定。

【例1】关系模式S(Sno,Sname,Sdept,Sage),假定Sname具有唯一性.
(1)S有两个候选码:Sno,Sname,非主属性Sdept,Sage
(2)非主属性不存在对码的传递依赖和部分依赖,所以S∈3NF。
(3)S中决定因素Sno,Sname包含码,所以S也属于BCNF。
【例2】关系模式SJP(S,J,P)中,S是学生,J表示课程,P表示名次。每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生(即没有并列名次)。
由语义可得到函数依赖: (S,J)→P;(J,P)→S
(1) 候选码:(S,J),(J,P)。没有非主属性。
(2)没有非主属性对码传递依赖或部分依赖,所SJP∈3NF。
(3) 除(S,J)与(J,P)以外没有其他决定因素,所以SJP∈BCNF。
【例3】关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。每一教师只教一门课。每门课有若干教师,某一学生选定某门课,就对应一个固定的教师。
由语义可得到函数依赖:(S,J)→T;(S,T)→J;T→J(T是决定因素)
(1)候选码:(S,J),(S,T);没有非主属性
(2)因为没有非主属性对码传递依赖或部分依赖,STJ ∈ 3NF。
(3)因为T是决定因素,而T不包含码,所以STJ ∉ \notin /BCNF。
非BCNF的关系模式也可以通过分解成为BCNF。
例如STJ可分解为ST(S,T)与TJ(T,J),它们都是BCNF。

5、第四范式(4NF)
【定义】关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(Y ⊈ X),X都含有码,则R<U,F>∈4NF。
如果一个关系模式是4NF, 则必为BCNF。

【例】关系模式WSC(W,S,C)中,W表示仓库,S 表示保管员,C 表示商品。假设每个仓库有若干个保管员,有若干种商品。每个保管员保管所在仓库的所有商品,每种商品被所有保管员保管。
在这里插入图片描述
按照语义对于W的每一个值Wi,S有一个完整的集合与之对应而不问C取何值。所以W→→S。
由于C与S的完全对称性,必然有W→→C成立。
W →→S, W→→C,他们都是非平凡多值依赖。而W不是码,关系模式WSC的码是(W,S,C),即全码,因此WSC ∉ \notin / 4NF。

可以把WSC分解成WS(W,S),WC(W,C), WS∈4NF,WC∈4NF。
6、第五范式(5NF)

多值依赖
1、多值依赖:【定义】设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x值而与z值无关。

【例】设学校中某一门课程由多个教师讲授,他们
使用相同的一套参考书。每个教员可以讲授多门课
程,每种参考书可以供多门课程使用。
关系模式Teaching(C,T,B):课程C、教师T、参考书B。
Teaching具有唯一候选码(C,T,B), 即全码。没有非主属性对主码有部分函数依赖和传递函数依赖,并且决定因素都包含码,所以Teaching∈BCNF。对于C的每一个值,T有一组值与之对应,而不论B取何值。因此T多值依赖于C,即C→→T。
2、平凡多值依赖和非平凡的多值依赖
若X→→Y,而Z=Ф,则称X→→Y为平凡的多值依赖。否则称X→→Y为非平凡的多值依赖。
一般情况下我们都研究非平凡的多值依赖。
在这里插入图片描述

候选码的求解理论和算法:
1、闭包:记作( X + X^+ X+ )就是由一个属性直接或间接推导出的所有属性的集合。
【例】f={a->b,b->c,a->d,e->f};
由a可直接得到b和d,间接得到c,
则a的闭包就是{a,b,c,d}。
2、对于给定的关系R(A1,A2,…An)和函数依赖集F,可将其属性分为4类:

  • L类 仅出现在函数依赖左部的属性。
  • R 类 仅出现在函数依赖右部的属性。
  • N 类 在函数依赖左右两边均未出现的属性
  • LR类 在函数依赖左右两边均出现的属性。

3、定理:
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类属性,则X必为R的任一候选码的成员。

推论:
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类属性,且X+包含了R的全部属性;则X必为R的唯一候选码。

定理:
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是R类属性,则X不在任何候选码中。
定理:
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是N类属性,则X必包含在R的任一候选码中。

推论:
对于给定的关系模式R及其函数依赖集F,
若X(X∈R)是L类和N类组成的属性集,且X+包含了R的全部属性;则X是R的唯一候选码。

L类和N类属性,一定在R的任何候选码中。
R类属性,一定不在R的任何候选码中。
X是L类和N类的属性集,若其闭包包含所有属性,则该属性集X是唯一的候选码。

【例】设关系模式 U=(A , B , C , D , E , F ),
函数依赖集F={A→ BC , BC → A , BCD → EF , E → C}, 其中可得: A ← → B C A\leftarrow \rightarrow BC A←→BC
求 R 的候选码。
解(1) L=(D), R=(F ), LR=(A , B , C , E ), N=空;
(2) L∪N=(D) , D + D^+ D+=D;
(3)因为 D A + DA^+ DA+=DABCEF=U, D B + DB^+ DB+=DB , D C + DC^+ DC+=DC, D E + DE^+ DE+=DEC, 所以 DA 是候选码;
(4)因为 D B C + DBC^+ DBC+=DBCAEF=U, D B E + DBE^+ DBE+=DBECAF=U, D C E + DCE^+ DCE+=DCE, 所以 DBC 、 DBE 是候选码;
(5) U 的候选码有 DA 、 DBC 、 DBE

课后作业:
在这里插入图片描述
关系模式:
【学生】Student(Sno,Sname,Sbirth,Deptname,Classno,Rno)
【班级】Class(Cno,Pname,Deptname,Cnum,Cyear)
【系】Dept(Deptname,Deptno,Deptadd,Dnum)
【学会】M(Mname,Myear,Madd,Mnum)
传递函数依赖:
【学生】Sno → \rightarrow Sname,Sno → \rightarrow Sbirth,Sno → \rightarrow Classno,Classno → \rightarrow Deptname,Deptname → \rightarrow Rno.
由于Sno → \rightarrow Classno,Classno → \rightarrow Deptname,所以Deptname传递依赖于Sno,Sno → \rightarrow Deptname.
由于Classno → \rightarrow Deptname,Deptname → \rightarrow Rno,所以Rno传递依赖于Classno,Classno → \rightarrow Rno.
由于Sno → \rightarrow Classno,Classno → \rightarrow Rno.Rno传递依赖于Sno,Sno → \rightarrow Rno.
【班级】Cno → \rightarrow Pname,Cno → \rightarrow Cnum,Cno → \rightarrow Cyear,Pname → \rightarrow Deptname.
由于Cno → \rightarrow Pname,Pname → \rightarrow Deptname.所以Deptname传递依赖于Cno,Cno → \rightarrow Deptname.
【系】Deptanme → \rightarrow Deptno,Deptno → \rightarrow Deptname,Deptno → \rightarrow Deptadd,Deptno → \rightarrow Dnum.
由于Deptanme → \rightarrow Deptno,Deptno → \rightarrow Deptname,所以不存在传递函数依赖。
【学会】Mname → \rightarrow Myear,Mname → \rightarrow Madd,Mname → \rightarrow Mnum.
不存在传递函数依赖。

【学生】候选码:Sno;外码:外码:Deptname,Classno;无全码。
【班级】候选码:Cno;外码:Deptname;无全码。
【系】候选码:Deptname,Deptno;无外码;无全码。
【学会】候选码:Mname;无外码;无全码。

在这里插入图片描述
(1)由于在关系模式R<U,F>中,如果每一个决定属性集都包含候选码,则R ∈ \in BCNF.
所以当BC也是候选码时,R是BCFN。
(2)L=(C,E);R=空;LR=(A,B,D);N=空。
L ∪ \cup N=(C,E), CE + ^+ +=(CE).
因为ACE + ^+ +=(ABCDE)=U,BCE + ^+ +=(ABCDE)=U,DCE + ^+ +=(ABCDE)=U,
所以ACE,BCE,DCE是候选码。
(3)候选码是ACE,BCE,DCE,没有非主属性传递依赖和部分依赖于码,是3NF。
由于决定因素(A)、(BC)、(DE)都不包含候选码,所以R是3NF.

在这里插入图片描述
二目关系是说只有两个属性的表。
(1)正确。只有两个属性,要么其中一个为码,要么是全码,非主属性都不存在部分函数依赖,属于2NF.只有两个属性,3个及以上的才可能有传递函数依赖。因此属于3NF。
(2)正确。不管是一个属性为码,还是全码,决定因素都是码本身,属于BCNF。
(3)正确。只有两个属性,看作平凡的多值依赖,而4NF的前提是非平凡的函数依赖。
(4)错误。当且仅当函数依赖A → → \rightarrow\rightarrow →→B在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。
(5)正确。
(6)正确。
(7)正确。
(8)错误。如SC(Sno,Cno,Grade),(Sno,Cno) → \rightarrow Grade,但是Sno ↛ \nrightarrow Grade,Cno ↛ \nrightarrow Grade。
在这里插入图片描述
证明:(1)采用反证法。
设R不是3NF,则必然存在这样的码X,属性组Y,和非属性组Z(Z ∉ \notin /Y),使得X → \rightarrow Y,(Y ↛ \nrightarrow X),Y → \rightarrow Z,这样Y → \rightarrow Z函数依赖的决定因素Y不包含候选码,这与BCNF的定义矛盾,所以如果R ∈ \in BCNF,则R也是3NF.
(2)设R不是2NF,则假设R中非主属性A部分依赖于候选码K,则存在K’是K的子集,使得K’ → \rightarrow A,因K’是K的子集有K → \rightarrow K’,但K’ ↛ \nrightarrow K,于是有K → \rightarrow K’,K’ ↛ \nrightarrow K,K’ → \rightarrow A,并且A不属于K,因而A传递依赖于K,即R不属于3NF,与已知矛盾。
所以R是3NF,则R一定是2NF.
这一道题有从网上查找答案,使用反证法证明。

附加题:【注】AB→D 等价于 (A,B)→ D,D→BF 等价于 D→B, D→F
一.
Y(X1,X2,X3,X4)
(X1,X2)→X3
X2→X4
1、侯选码?
2、属于第几范式?
解:因为X2→X4,所以(X1,X2)→X4;
又因为(X1,X2)→X3,所以(X1,X2)→(X1,X2,X3,X4)。
因此:候选码:(X1,X2);非主属性:X3,X4。
因为(X1,X2)→X3, X2→X4,存在非主属性X4对候选码(X1,X2)的部分函数依赖;
所以不属于2NF。
结论:候选码(X1,X2),属于第一范式。

二.
R(A,B,C,D)
F={AB→D,AC→BD,B→C}
4. 侯选码?
5. 最高属于第几范式?
解:因为AB → \rightarrow D,B → \rightarrow C,所以AB → \rightarrow CD;所以AB → \rightarrow ABCD.
因为AC → \rightarrow BD,所以AC → \rightarrow ABCD
因此:候选码是AB、AC,非主属性是D。
D完全依赖于码,属于第二范式。
D不能传递依赖于码,属于第三范式。
决定因素B不包含候选码,不属于BC范式。
结论:候选码是AB、AC,最高属于3NF。

三.
R(X,Y,Z,W)
F={Y←→W,XY→Z}
1、 侯选码?
2、最高属于第几范式?
解:因为 Y ← → W Y\leftarrow \rightarrow W Y←→W,所以 Y → W Y\rightarrow W YW, W → Y W\rightarrow Y WY.
由于 X Y → Z XY\rightarrow Z XYZ, Y → W Y\rightarrow W YW,所以 X Y → X Y Z W XY\rightarrow XYZW XYXYZW.
由于 W → Y W\rightarrow Y WY,XY→Z,所以 X W → X Y Z W XW\rightarrow XYZW XWXYZW
因此:候选码为XY,XW。非主属性为Z。
Z完全依赖于码,属于2NF。
Z不能传递依赖于码,属于3NF.
决定因素Y,W不包含候选码,不属于BCNF。
结论:候选码为XY,XW。最高属于3NF.

四.
R(A,B,C,D,E) F={A→B,CE→A,E→D}
1、 求候选码。
2、最高属于第几范式,为什么?
3、分解到3NF。
解:L=( C);R=(B,D);LR=(A,E);N=空
C一定在候选码中,B,D一定不在候选码中。
由于CE→A,A→B,E→D,所以CE→ABCDE.
因此:候选码为CE,非主属性为A,B,D.
由于E→D,D部分依赖于码,不属于2NF.
因此:最高属于1NF.
分解:R1=(E,D);R2=(C,E,A,B)没有部分函数依赖,都属于2NF.
但是由于CE→A,A ↛ \nrightarrow CE,A→B,所以B传递依赖于CE,不属于3NF.
需要再次分解:R1=(E,D);R2=(A,C,E);R3=(A,B),不在有传递函数依赖,属于3NF.
结论:候选码为CE。最高属于1NF。分解到3NF:R1=(E,D);R2=(A,C,E);R3=(A,B)

五.
R(商店编号,商品编号,数量,部门编号,负责人)
每个商店的每种商品只在一个部门销售,
每个商店的每个部门只有一个负责人,
每个商店的每种商品只有一个库存数量。
1、求候选码。
2、R已达第几范式?为什么?
3、若不属于3NF,分解成3NF。
解:R(Sno,Cno,num,Dno,Man)
由题可知:F={(Sno,Cno)→Dno,(Sno,Dno)→Man,(Sno,Cno)→num};
因此:候选码为(Sno,Cno)。非主属性为num,Dno,Man。
非主属性全部依赖于码,属于2NF。
由于(Sno,Cno)→Dno,(Sno,Dno)→Man,所以Man传递依赖于码,不属于3NF。
因此:R最高到达2NF。
分解:R1=(Sno,Cno,Dno,num);R2=(Sno,Dno,Man),不存在传递函数依赖,都属于3NF。
结论:候选码为(Sno,Cno)。R最高到达2NF。分解到3NF:R1=(Sno,Cno,Dno,num);R2=(Sno,Dno,Man)。

六.
R(A,B,C,D,E,F) F={A→C,AB→D,C→E,D→BF}
1、写出关键字。
2、分解到2NF。
3、分解到3NF。
4、分解到4NF。

解:AB→D,D→BF,所以B ← → \leftarrow \rightarrow ←→D
1、L=(A);R=(E,F);LR=(B,C,D);N=空
A一定在候选码中,E、F一定不在候选码中。
由于A→C,AB→D,C→E,D→BF,所以AB→ABCDEF。
由于A→C,C→E,D→BF,所以AD→ABCDEF。
因此:候选码为AB,AD。非主属性为C,E,F.
2、由于A→C,D→BF,所以非主属性C,E,F部分依赖于码,不属于2NF.
分解为:R1=(A,C,E);R2=(D,F,B)
3、由于A→C,C→E,所以E传递依赖于码,不属于3NF。
分解为:R1=(A,C);R2=(C,E);R3=(D,F);R4=(D,B)
4、R1=(A,C),R2=(C,E),R3=(D,F),R4=(B,D).

总结:
找候选码和到BCNF的判断基本没有问题,但是对于多值依赖和4NF,具体意义的可以理解,抽象的有点理解不了,在分解规范化的时候容易出现问题。

  • 9
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值