文档库 最新最全的文档下载
当前位置:文档库 › 数据库范式与关系模式示例

数据库范式与关系模式示例

数据库范式与关系模式示例
数据库范式与关系模式示例

第七章补充讲义

一、范式举例

BCNF.如:课程号与学号)

例4:R(X,Y,Z),F={XY->Z},R为几范式?

BCNF。

例5:R(X,Y,Z),F={Y->Z,XZ->Y},R为几范式?

3NF。R的候选码为{XZ,XY},(R中所有属性都是主属性,无传递依赖)

二、求闭包

数据库设计人员在对实际应用问题调查中,得到的结论往往是零散的、不规范的(直观问题好办,复杂问题难办了),所以,这对分析数据模型,达到规范化设计要求,还有差距,为此,从规范数据依赖集合的角度入手,找到正确分析数据模型的方法,以确定关系模式的规范化程度。

例1.已知关系模式R(U、F),其中,U={A,B,C,D,E}; F={AB→ C, B→ D, EC → B , AC→B} ,求(AB)+F.

解:设X(0)=AB

○1计算X(1),在F中找出左边为AB子集的FD,其结果是:AB→C,B→D

∴X(1)=X(0)UB=ABUCD=ABCD 显然,X(1)≠X(0)

○2计算X(2),在F中找出左边为ABCD子集的FD,其结果是:C→E,AC→B

∴X(2)=X(1)UB=ABCDUBE=ABCDE 显然,X(2)=U

所以,(AB)+ F=ABCDE.(等于U,所以AB是唯一候选关键字)

例2.设有关系模式R(U、F),其中U={A,B,C,D,E,I};F={A→D,AB→E,B→E,CD→I,E→C},计算(AE)+

解:令X={AE},X(0)=AE

○1在F中找出左边是AE子集的FD,其结果是:A→D,E→C

∴X(1)=X(0)UB=X(0)UDC=ACDE 显然,X(1)≠X(0)

○2在F中找出左边是ACDE子集的FD,其结果是:CD→I

∴X(2)=X(1)UI=ACDEI

显然,X(2)≠X(1),但F中未用过的函数依赖的左边属性已含有X(2)的子集,所以不必再计算下去,即(AE)+=ACDEI.

因为,X(3)=X(2),所以,算法结束。

三、求最小依赖集

最小依赖集是对函数依赖集合进行规范的结果,这样才能对一般关系模式进行准确分析。

例1.设函数依赖集F={AB→CE,A→C,GP→B,EP→A,CDE→P,HB→P,D→HG,ABC→PG},求与F等价的最小函数依赖集。

解:○1将F中依赖右部属性单一化:

F1= AB AB→E

HB→P A→C

D→H GP→B

D→G EP→A

ABC→P CDE→P

ABC→G

○2由于有A→C,所以AB→C为多余成份:

所以F2= AB→E HB→P

A→C D→H

GP→B D→G

EP→A ABC→P

CDE→P ABC→G

○3经过分析认为F2中无多余依赖,则:

Fmin=F2为最小函数依赖集。即Fmin={ AB→E ,HB→P, A→C ,D→H, GP→B ,D→G, EP→A , ABC→P,CDE→P,ABC→G}.

例2.已知F={A→B,B→A,B→C,A→C,C→A},求Fmin.

解:○1F1= A→B A→C

B A B→C

C A

○2Fmin1= A→B A→C

B→A C→A

Fmin2= A→B C→A

B→C

例3.已知F={A→C,C→A,B→AC,D→AC},求Fmin。

解:○1将F中依赖的右部属性单一化:

F1= A→C C→A

B→A B→C

D→A D→C

○2由于B→A,A→C,所以B→C是多余成份。

又由于D→A,A→C,所以D→C是多余成份。

所以F2= A→C C→A

B→A D→A

因为F2中所有依赖的左部都是单属性,所以不存在依赖左部的有多余属性。

所以Fmin=A→C C→A

B→A D→A

即Fmin={A→C,C→A,B→A ,D→A}.

例4.设有关系模式R(U,F),其中:U={E,F,G,H},F={E→G,G→E,F→EG,H→EG,FH→E},求F 的最小依赖集。

解:○1将F中依赖右部属性单一化:

F1= E→G H

G→E H

F→E FH

F→G

○2由于有F→E,FH→E为多余成份:(不是因为有H→E,而是,F后面加一个H和不加一样)

所以F2= E→G H→E

G→E H→G

F→E F→G

○3由于F2中,F→E和F→G以及H→E和H→G之一为多余,则:

Fmin1={E→G,G→E,F→G,H→G}

Fmin2={E→G,G→E,F→E,H→E} Fmin3,Fmin4同理。

四、求候选码

1. 候选关键字求解理论

对于给定的关系R(A1,A2,…,An)和函数依赖集F,可将其属性分为四类:

●L类:仅出现在F的函数依赖左部的属性

●R类:仅出现在F的函数依赖右部的属性

●N类:在F的函数依赖左右两边均未出现的属性

●LR类:在F的函数依赖左右两边均出现的属性

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

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

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

定理3:设有关系模式R及其函数依赖集F,若X是R的N类属性,则X必包含在R的任一候选关键字中。

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

2. 单属性依赖集图论求解法(多属性不行)

I:关系模式R,R的单属性函数依赖集F。

O:R的所有候选关键字。

算法:

○1求F的最小依赖集Fmin。

○2构造FDG(函数依赖图)。

○3从图中找出关键属性集X(X可为空)。

○4查看G中有无独立回路,若无则输出X即为R的唯一候选关键字,转○6,若有,则转○5。

○5从各独立回路中各取一结点对应的属性与X组合成一候选关键字,并重复这一过程取尽所有可解的组合,即为R的全部候选关键字。

○6结束。

3.多属性依赖集候选关键字求解法

I:关系模式R及其函数依赖集F。

O:R的所有候选关键字。

算法:

○1将R的所有属性分为L,R,N和LR四类,并令X代表L,N两类,Y代表LR类。

○2求X+,若X包含了R的全部属性,则X即为R的唯一候选关键字,转○5,否则,转○3。○3在Y中取一属性A,求(XA)+.若它包含了R的全部属性,则转○4,否则,调换一属性反复进行这一过程,直到试完所有Y中的属性。

○4若已找出所有候选关键字,则转○5,否则在Y中依次取2个,3个…,求它们的属性闭包,直到其闭包包含R的全部属性。

○5停止,输出结果。

例1.设R=(O,B,I,S,Q,D),F={S→D,D→S,I→B,B→I,B→O,O→B},求R的所有候选关键字。解:○1Fmin={ S→D,D→S,I→B,B→I,B→O,O→B}.

○2构造FDG.

○3关键属性集{Q}. (原始点和孤立点统称关键点。)

○4有两个独立回路,SDS,IBOBI.

所以R的所有候选关键字为:QSI,QSB, QSO,QDI,QDB,QDO.

例2. 设R={X,Y,Z},F={X→Y,Y→X},求R的所有候选关键字。

解:○1Fmin={X→Y,Y→X}。

○2构造FDG

○3关键属性{Z}.

○4有1个独立回路,

1).候选关键字个数=各独立回路中结点个数乘积=2 (1个回路,2个结点)。

2).候选关键字所含属性个数=关键属性个数+独立回路个数=1+1=2。

所以R的所有候选关键字为:ZX,ZY.

例3.设有关系模式R(A,B,C,D),其函数依赖集F={D→B,B→D,AD→B,AC→D},求R的所有候选关键字。

解:经考虑F发现,A,C两属性是L类属性,由定理知,AC必是R的一候选关键字字成员。

又因(AC)+=ABCD,所以AC是R的唯一候选关键字。

例4.设有关系模式R(A,B,C,D,E,P),F={A→D,E→D,D→B,BC→D,DC→A},求R的所有候选关键字。

解:经考察发现,C,E两属性是L类属性,故C,E必在R的任何候选关键字中,又P 是N类属性,故P也必在R的任何候选关键字中。

又因(CEP)+=ABCDEP 所以CEP是R的唯一候选关键字。

五、模式分解

对存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。在分解处理中会涉及一些新问题,为使分解后的模式保持原模式所满足的特性,要求分解处理具有无损联接性和保持函数依赖性。即分解后的关系模式子集,应能通过自然连接运算恢复原状。

1、关系模式规范化时一般应遵循以下原则:

(1)关系模式进行无损连接分解。关系模式分解过程中数据不能丢失或增加,必须把全局关系模式中的所有数据无损地分解到各个子关系

模式中,以保证数据的完整性。

(2)保持原来模型的函数依赖关系。因为这些函数依赖关系是数据模型反映的客观事物的固有属性,一般是不能舍弃的。

(3)合理选择规范化程度。考虑到存取效率,低级模式造成的冗余度很大,既浪费了存储空间,又影响了数据的一致性,因此希望一个子

模式的属性越少越好,即取高级范式;若考虑到查询效率,低级范

式又比高级范式好,此时连接运算的代价较小,这是一对矛盾,所

以应根据情况,合理选择规范化程度。

2、对模式分解的两个基本要求:

模式分解可以提高关系模式的规范化程度,但是必须考虑如下问题:

○1避免信息丢失:简单的说,就是模式R分解为R1,R2,…,Rn后,将R1,

R2,…Rn自然连接还应该等于模式R。这就是“无损失联接”准则。

○2避免数据关系丢失:简单地说,就是模式R分解为R1,R2,…,Rn后,函数

依赖集合F也被对应分解为F1,F2,…,Fn,应满足F与各Fi(i=1,2,…n)的并集等价,即满足F+=(UFi )+ 。这就是“保持函数依赖”准则。

关系模式的规范化过程是通过对关系模式的分解来实现的,但是把低一级的关系模式分解为若干个高一级关系模式的方法并不是唯一的。在这些分解方法中,只有能够保证分解后的关系模式与原关系模式等价的方法才有意义。3、关系模式分解的三个定义:

(1)分解具有“无损联接性”。

(2)分解要“保持函数依赖”。

(3)分解既要“保持函数依赖性”,又要具有“无损连接性”。

规范化理论提供了一套完整的模式分解算法,按照这套算法可以做到:

●若要求分解具有无损联接性,那么模式分解一定能够达到4NF。

●若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能达到BCNF。

●若要求分解具有无损联接性又保持函数依赖,则模式分解一定能够达到3NF,但不一定能达到BCNF。

我们希望最好能够既要“保持函数依赖”,又要具有“无损联接性”,从上面结论可以看到只能达到3NF,至于能否达到BCNF或更高,要看具体情况。这就是在数据库设计中一般采用“基于3NF的数据设计方法”的根本原因。

4、模式设计方法的原则:

关系模式R相对于函数依赖集F分解成ρ={R1,R2,…Rk},应具有以下特性:

(1) ρ中每个关系模式Ri上应有某种范式性质(3NF或BCNF)

(2) 无损联接

(3) 保持函数依赖集

(4) 最小性(ρ中模式个数应最少和模式中属性总数应最少)

一个好的设计方法应符合下列3个原则:表达性,分离性,最小冗余性。

5、模式分解的算法:

算法一:把关系模式无损分解成BCNF

输入:关系模式R和函数依赖集F

输出:R的一个无损分解ρ={R1,R2,…,Rk}

方法:设关系模式R(U,F)

(1)置初值:ρ={R}。

(2)对于关系模式R的分解ρ(初始时ρ={R}),如果ρ中有一个关系模式Ri相对于∏Ri(F)不是BCNF。由定义可知,Ri中存在一个非平凡FD X→Y,有X不包含码。此时把R

分解成XY和Ri-Y两个模式。重复上述

i

过程,一直到ρ中每一个模式都是BCNF。

(3) 算法结束,ρ就是分解结果。

例1:R(U,F),U=ABCDE F={AB→C,B→D,D→E},码是AB。

分解过程如下:

(1)先分出DE,ρ={R1(ABCD),R2(DE)}

(2)再从R1中分出BD,ρ={R1(ABC),R2(DE),R3(BD)}

(3)R1,R2,R3都属于BCNF,分解完成。

例2:设有关系模式R(U,F),其中:

U={C,T,H,R,S,G} F={CS→G,C→T,TH→R,HR→C,HS→R} 将其无损联接地分解为BCNF。

解:R上只有一个侯选键HS。

(1)令ρ={CTHRSG}。

(2)ρ中的模式不是BCNF。

(3)考虑CS→G,这个函数依赖不满足BCNF条件(CS不包含侯选键HS),将CTHRSG分解为CSG和CTHRS。计算∏CSG(F)和∏CTHRS(F),前者的最小覆盖是:CS→G;后者的最小覆盖是:C→T,HR→C,TH→R,HS→R。模式CTHRS的侯选关键字是HS。

CSG已是BCNF,进一步分解CTHRS。选择C→T,把CTHRS分解成CT和CHRS,计算∏CT(F)和∏CHRS(F),前者的最小覆盖是:C→T;后者的最小覆盖是:HC→R,HS→R,HR→C。模式CHRS的侯选关键字是HS。

CT已是BCNF,再分解CHRS。选择HC→R,把CHRS分解成CHR和CHS,计算∏CHR(F)和∏CHS(F),前者的最小覆盖是:CH→R,HR→C;后者的最小覆盖是:HS→C。这时CHR和CHS均为BCNF。

(4)ρ={CSG,CT,CHR,CHS}。(HS→R,HS→HR HR→C =>HS→C)

算法二:把一个关系模式分解为3NF,使它具有依赖保持性。

输入:关系模式R和R的最小依赖集Fmin。

输出:R的一个分解ρ={R1,R2,…Rk},Ri为3NF(i=1,…,k),ρ具有依赖保持性。

达到3NF保持函数依赖分解的方法:

设关系模式R(U,F):

(1)将F化为最小函数依赖集,令F=Fmin。

(2)把在F中不出现的属性从U中去掉,属性集合仍然为U。

(3)对照F中的函数依赖集,将所有函数依赖左端相同的划为一组,相应的右端以及函数依赖均归入该组。

(4)这些分组就是分解后的模式组成。

(5)这种分解方法得到的就是达到3NF且保持函数依赖的分解。

例1:F={B—>G,CE→B,C→A,CE→G,B→D,C→D},码是CE,分解成三个模式。

R1:U1=BDG,F1={B→G,B→D}

R2:U2=ACD,F2={C→A,C→D}

R3:U3=BCEG,F3={CE→B,CE→G}

分解后,R1,R2,R3均达到3NF,且分解符合保持函数依赖的规则。

例2: 设有关系模式R(U,F),其中:U={C,T,H,R,S,G} F={CS→G,C→T,TH→R,HR→C,HS→R},将其保持依赖性分解为3NF。

解:(1)求出F的最小依赖集,Fmin={CS→G,C→T,TH→R,HR→C,HS→R}。

(2)无。

(3)R1:U1=CSG,F1={CS→G}

U2=CT, F2={C→T}

U3=THR,F3={TH→R}

U4=HRC,F4={HR→C}

U5=HSR,F5={HS→R}

(4) ρ={CSG,CT,THR,HRC,HSR}

算法三:把一个关系模式分解为3NF,使它既具有无损联接性又具有依赖保持性。

设关系模式R(U,F):

①对于关系模式R和R上成立的FD集F,先求出F的最小依赖集,然后

再把最小依赖集中那些左部相同的FD用合并性合并起来。

②对最小依赖集中,每个FD X→Y去构成一个模式XY。

③在构成的模式集中,如果每个模式都不包含R的候选键,那么把候选

键作为一个模式放入模式集中。

这样得到的模式集是关系模式R的一个分解,并且这个分界既是无损分解,又能保持FD。

检验无损联接性的方法:

输入:关系模式R(A1,A2,…,An),它的函数依赖集F以及分解ρ={R1,R2,…,Rk}。

输出:确定ρ是否具有无损联接性。

设关系模式R(U,F):

(1)构造一个k行n列的表,若i行对应于关系模式Ri,第j列对应于属性Aj。如果Aj∈Ri,则在第i行第j列上放符号aj,否则放符号bij。(2)逐个检查F中的每一个函数依赖,并修改表中的元素。其方法如下:取F 中一个函数依赖X—>Y,在X的分量中寻找相同的行,然后将这些行中Y 的分量改为相同的符号,如果其中有aj,则将bij改为aj;若其中无aj,则改为bij。

这样反复进行,如果发现某一行变成了a1,a2,…,ak,则分解ρ具有无损联接性;如果F中所有函数依赖都不能再修改表中的内容,且没有发现这样的行,则分解ρ不具有无损联接性。

例1:对于上例的关系模式R(U,F),将其无损联接性和依赖保持性分解为3NF。解:依据算法:

(1)由上例求出依赖保持性分解为:ρ={CSG,CT,THR,HRC,HSR}

①看CS上相同的,再改G的成分——没有

看C上相同的,再改T的成分——2个a2①

看TH上相同的,再改R的成分——没有

看HR上相同的,再改C的成分——2个a1①

看HS上相同的,再改R的成分——没有

②再看CS上相同的,再改G的成分——有一个a6②

看C上相同的,再改T的成分——有一个a2②,其它未发生变化,略)

(4)由于表中有一行从a1,a2,…,a6全满,由此可知,ρ具有无损联接性,输出ρ={CSG,CT,THR,HRC,HSR}。

例2 :已知,U={A,B,C,D},F={ A—>B,A-->C,BC—>D,D-->A }

A-->C , b13→a3 , b23→a3 , b43→a3

BC—>D , b14→a4

所以,

例3 :设有关系模式R(U,F),其中:

U={A,C,B},F={A—>B,C-->B}

判断一个分解ρ={AC,BC}是否具有无损联接性。

解:ρ的无损联接性判断结果表如下所示:由此判断具有无损联接性。

由于,A

所以,

例 4:设有关系模式R(A,,B,C,D),其上的函数依赖集:F={A→C, C→A, B→AC, D→AC }

(1)计算(AD)+。

(2)求F的最小等价依赖集Fm。

(3)求R的关键字。

(4 ) 将R分解使其满足BCNF且无损连接性。

(5)将R分解成满足3NF并具有无损连接性与保持依赖性。

解:

(1)令X={AD},,X(0)=AD,X(1)=ACD ,X(2)=ACD,故(AD)+=ACD。(2)将F中的依赖右部属性单一化:

A→C C→A

F

= B→A

1

D→A

在F1中去掉多余的函数依赖:

∵B→A, A→C ∴B→C是多余的。

又∵D→A,A→C ∴D→C是多余的。

A→C C→A

= B→A D→A

F

2

函数依赖集的最小集不是惟一的,本题中还可以有其他答案。

中所有依赖的左部却是单属性,∴不存在依赖左部有多余的属性。

∵F

2

A→C C→A

F ˊ= B→A D→A

(3)∵BD在F中所有函数依赖的右部均未出现,∴候选关键字中一定包含BD,而(BD)+=ABCD,因此,BD是R惟一的候选关键字。

(4)考虑A→C,∵AC不是BCNF(AC不包含候选关键字BD),将ABCD分解为AC和ABD。AC已是BCNF, 进一步分解ABD,选择B→A,把ABD分解为AB和BD。此时AB和BD均为BCNF,∴ρ={AC, AB, BD}。

(5)由(2)可求出满足3NF的具有依赖保持性的为ρ={AC, BA, DA}。判断其无损连接性如图 4.10所示的表,由此可知ρ不具有无损连接性。令ρ=ρ∪{BD},BD是R的候选关键字,∴ρ={AC, BA, DA, BD}。

图4.10 无损连接判断表

六、举例

1.设有关系模式R(U,F),其中:

U={A,B,C,D,E,P},F={A →B,C→P,E→A,CE→D}

求出R的所有候选关键字。

解:根据候选关键字的定义:如果函数依赖X→U在R上成立,且不存在任何X′?X,使得X′→U也成立,则称X是R的一个候选关键字。由此可知,候选关键字只可能由A,C,E,组成,但有E→A,所以组成候选关键字的属性可能是CE。

计算可知:(CE)+=ABCDEP,即CE→U

而:C+=CP,E+=ABE

∴R只有一个候选关键字CE。

2.设有关系模式R(C,T,S,N,G),其上的函数依赖集:

F={C→T,CS→G,S→N}

求出R的所有候选关键字。

解:根据候选关键字的定义:R的候选关键字只可能由F中各个函数依赖的左边属性组成,即C,S,所以组成候选关键字的属性可能是CS。

计算可知:(CS)+=CGNST,即CS→U

而:C+=CT,S+=NS

∴R只有一个候选关键字CS。

3.设有关系模式R(A,B,C,D,E),其上的函数依赖集:

F={A→BC,CD→E,B→D,E→A}

(1)计算B+。

(2)求出R的所有候选关键字。

解:

(1)令X={B},X(0)=B,X(1)=BD,X(2)=BD,故B+=BD。

(2)根据候选关键字的定义:R的候选关键字只可能由F中各个函数依赖的左边属性组成,即A,B,C,D,E,由于A→BC(A→B,A→C),B→D,E→A,故:·可除去A,B,C,D,∴组成候选关键字的属性可能是E。

计算可知:E+=ABCDE,即E→U,∴E是一个候选关键字。

·可除去A,B,E,∴组成候选关键字的属性可能是CD。

计算可知:(CD)+=ABCDE,即CD→U,但C+=C,D+=D,∴CD是一个候选关键字。

·可除去B,C,D,E∴组成候选关键字的属性可能是A。

计算可知:A+=ABCDE,即A→U,∴A是一个候选关键字。

·可除去A,D,E,∴组成候选关键字的属性可能是BC。

计算可知:(BC)+=ABCDE,即CD→U,但B+=BD,C+=C,∴BC是一个候选关键字。

R的所有候选关键字是A,BC,CD,E。

图4.8 无损连接判断表

4.设有关系模式R(U,F),其中:

U={A,B,C,D,E},F={A→D,E→D,D→B,BC→D,DC→A }

(1)求出R的候选关键字。

(2)判断ρ={AB,AE,CE,BCD,AC}是否为无损连接分解?

解:

(1)(CE)+=ABCDE,即CE→U,而C+=C,E+=DE=BDE,根据候选关键字定义,CE是R的候选关键字。

(2)ρ的无损连接性判断表如图4.8所示,由此判断不具有无损连接性。

5.设有关系框架R(A, B, C, D, E)及其上的函数相关性集合F={A→C, B→D, C→D, DE→C, CE→A },试问分解P={R1(A, D), R2(A, B), R3(B, E) , R4(C, D, E), R5(A, E)},是否为R的无损连接分解?

解:ρ的无损连接性判断表如图4.9所示,由此判断不具有无损连接性。

图4.9 无损连接性判断表

6.设有函数依赖集F={AB→CE, A→C, GP→B, EP→A, CDE→P, HB→P, D→HG, ABC→PG},计算属性集D关于F的闭包D+。

解:令X={D}, X(0)=D。

在F中找出左边是D的子集的函数依赖,其结果是:D→GH, ∴X(1)=X(0)HG=DGH,显然有X(1)≠X(0)。

在F中找到左边是DGH子集的函数依赖,未找到,则X(2)=DGH. 由于X(2)=X(1),则:D+=DGH

7.已知关系模式R的全部属性集U={A, B, C, D, E, G}及函数依赖集:

F={AB→C, C→A, BC→D, ACD→B, D→EG, BE→C, CG→BD, CE→AG}

求属性集闭包(BD)+

解:令X={BD}, X(0)=BD, X(1)=BDEG, X(2)=BCDEG, X(3)=ABCDEG, 故(BD)+=ABCDEG

8.设有函数依赖集F={AB→CE,A→C,GP→B,EP→A,CDE→P,HB→P,D→HG,ABC→PG},求与F等价的最小函数依赖集。

解:(1)将F中依赖右部属性单一化:

AB→E HB→P

A→C D→H

F1=GP→B D→G

EP→A ABC→P

CDE→P ABC→G

(2)对于AB→C,由于有A→C,则为多余的:

AB→E HB→P

A→C D→H

F2=GP→B D→G

EP→A ABC→P

CDE→P ABC→G

(3)通过分析没有多余的依赖,则:

AB→E HB→P

A→C D→H

F3=GP→B D→G

EP→A ABC→P

CDE→P ABC→G

9.设有关系模式R(U,F),其中:

U={E,F,G,H},F={E→G,G→E,F→EG,H→EG,FH→E}

求F的最小依赖集。

解:

(1)将F中依赖右部属性单一化:

F1={E→G, G→E, F→E, F→G, H→E, H→G }

(2)对于FH→E, 由于有F→E,则为多余的,则:

F2={E→G, G→E, F→E, F→G, H→E, H→G }

(3)在F2中的F→E和F→G以及H→E和H→G之一是多余的,则:

F3={E→G, G→E, F→G, H→G }

或F3={E→G, G→E, F→G, H→E}

或F3={E→G, G→E, F→E, H→E }

或F3={E→G, G→E, F→E, H→G }

10. 有关系模式R(U,F),其中:

U={A,,B,C,D},F={A→B, B→C, D→B },把R分解成BCNF模式集:

(1)如果首先把R分解成{ACD,,BD},试求F在这两个模式上的投影。

(2)ACD和BD是BCNF吗?如果不是,请进一步分解。

解:

(1)ⅡACD(F)={ A→C, D→C }

ⅡBD(F)={ D→B }

(2)BD已是BCNF。

ACD不是BCNF。模式ACD的候选关键字是AD。考虑A→C,这个函数依赖不满足BCNF 条件(A不是模式ACD的候选关键字),将ACD分解为AC和AD,此时AC和AD均为BCNF。

11.设有关系模式R(A, B, C ,D, E),R的函数依赖集:

F={A→D,E→D,D→B,BC→D,CD→A}

⑴求R的候选关键字。

⑵将R分解为3NF。

解:

⑴设 U=(A,B,C,D,E),由于(CE)+=ABCDE,C+=C, E+=BDE, ∴R的候选关键字是CE。

⑵求出最小依赖集Fˊ={A→D,E→D,D→B,BC→D,CD→A}

将R分解的3NF: ρ=(AD,DE,BD,BCD,ACD)。

12.设有关系模式R(U, V, W, X, Y, Z),其函数依赖集:

F={U→V, W→Z, Y→U, WY→X},现有下列分解:

⑴ρ1={WZ ,VY, WXY, UV}

⑵ρ2={UVY, WXYZ}

判断上述分解是否具有无损连接性。

解:⑴ρ1的无损连接性判断表如图4.11所示,由此判断不具有无损连接性。

图4.11 无损连接性判断表

⑵ρ2的无损连接性判断表如图4.12所示,由此判断具有无损连接性。

图4.12 无损连接性判断表

13.有如下的关系式R,试:

⑴求出R所有的候选关键字。

⑵列出R中的函数依赖。

⑶ R属于第几范式?

R

A D E

A1 d1 e2

A2 d6 e2

A3 d4 e3

A4 d4 e4

解:⑴R的候选关键字为A和DE。

⑵R中的函数依赖有:A→DE, DE→A。

⑶R是BCNF。

14.已知R={S,D,I,B,O,Q}

F={S→D ,I→B,B→O,O→Q,Q→I}

求R的所有候选关键字。

解:

(1)F‘=F={S→D ,I→B,B→O,O→Q,Q→I}

(2)构造函数依赖图如图4.29所示。

图4.29 函数依赖图

(3)关键属性:S

(4)有一条独立回路IBOQI,∴共有M=4个候选关键字。

每个候选关键字有N=1+1=2个属性。

R所有的候选关键字为:SI,SB,SQ,SO。

15.已知R={I,B,O,Q,S,D}

F={I→B,B→O,I→Q,S→D}

求R的所有候选关键字。

解:

(1)F‘=F={I→B,B→O,I→Q,S→D}

(2)构造函数依赖图如图4.30所示。

图4.30 函数依赖图

(3)关键属性集:{I,S}

(4)无独立回路。

∴R只有惟一候选关键字IS。

设有关系模式R(A,,B,C,D),其上的函数依赖集:F={A→C, C→A, B→AC, D→AC }

(1)计算(AD)+。

(2)求F的最小等价依赖集Fm。

(3)求R的关键字。

关系数据库理论

第4部分关系数据库理论 复习习题与讲解资料 【主讲教师:钱哨】 一.考试大纲考点要求 1 了解关系模式设计中可能出现的问题及其产生原因以及解决的途径。 2 掌握函数依赖、完全函数依赖、部分函数依赖、传递函数依赖的定义,能计算属性的封闭集,并由此得到关系的候选键。 3 掌握第一范式( 1NF )、第二范式( 2NF )和第三范式( 3NF )的定义,能判别关系模式的范式等级。 4 掌握关系模式的分解(规范到 3NF )的步骤、分解的原则和分解的方法。 二.单项选择题 1. 为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是()。 A. 关系规范化理论 B. 关系代数理论 C.数理逻辑 D. 关系运算理论 2. 规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是()。 A. 长度不变的 B. 不可分解的 C.互相关联的 D. 互不相关的 3. 已知关系模式R(A,B,C,D,E)及其上的函数相关性集合F={A→D,B→C ,E→ A },该关系模式的候选关键字是()。 A.AB B. BE C.CD D. DE

4. 设学生关系S(SNO,SNAME,SSEX,SAGE,SDPART)的主键为SNO,学生选课关系SC(SNO,CNO,SCORE)的主键为SNO和CNO,则关系R(SNO,CNO,SSEX,SAGE,SDPART,SCORE)的主键为SNO和CNO,其满足()。 A. 1NF B.2NF C. 3NF D. BCNF 5. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={ C →P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },关系模式W的一个关键字是()。 A. (S,C) B. (T,R) C. (T,P) D. (T,S) 6. 关系模式中,满足2NF的模式()。 A. 可能是1NF B. 必定是1NF C. 必定是3NF D. 必定是BCNF 7. 关系模式R中的属性全是主属性,则R的最高范式必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 8. 消除了部分函数依赖的1NF的关系模式,必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 9. 如果A->B ,那么属性A和属性B的联系是()。 A. 一对多 B. 多对一 C.多对多 D. 以上都不是 10. 关系模式的候选关键字可以有1个或多个,而主关键字有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 11. 候选关键字的属性可以有()。 A. 多个 B. 0个 C. 1个 D. 1个或多个 12. 关系模式的任何属性()。 A. 不可再分 B. 可以再分 C. 命名在关系模式上可以不唯一 D. 以上都不是 13. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={ C →P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },若将关系模式W分解为三个关系模式W1(C,P),W2(S,C,G),W2(S,T,R,C),则W1的规范化程序最

数据库三大范式讲解

数据库三大范式说明 数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。 实质上,设计范式用很形象、很简洁的话语就能说清楚,道明白。本节课将对范式进行通俗地说明,以一个简单论坛的数据库为例来讲解怎样将这些范式应用于实际项目中。 范式说明: 第一范式(1NF): 数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。 很显然,在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS中设计出不符合第一范式的数据库都是不可能的。 第二范式(2NF): 数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖

于任意一组候选关键字。 假定选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),关键字为组合关键字(学号, 课程名称),因为存在如下决定关系: (学号, 课程名称) →(姓名, 年龄, 成绩, 学分) 这个数据库表不满足第二范式,因为存在如下决定关系: (课程名称) →(学分) (学号) →(姓名, 年龄) 即存在组合关键字中的字段决定非关键字的情况。 由于不符合2NF,这个选课关系表会存在如下问题: (1) 数据冗余: 同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。 (2) 更新异常: 若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现同一门课程学分不同的情况。 (3) 插入异常: 假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有"学号"关键字,课程名称和学分也无法记录入数据库。 (4) 删除异常: 假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。 把选课关系表SelectCourse改为如下三个表: 学生:Student(学号, 姓名, 年龄); 课程:Course(课程名称, 学分); 选课关系:SelectCourse(学号, 课程名称, 成绩)。 这样的数据库表是符合第二范式的,消除了数据冗余、更新异常、插入异常和删除异常。 另外,所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。

数据库范式练习题

1、请简述满足1NF、2NF和3NF的基本条件。并完成下题:某信 息一览表如下,其是否满足3NF,若不满足请将其化为符合3NF 的关系。(本小题12分) 第一范式的关系应满足的基本条件是元组中的每一个分量都必须是不可分割的数据项。 第二范式,指的是这种关系不仅满足第一范式,而且所有非主属性完全依赖于其主码。 第三范式,指的是这种关系不仅满足第二范式,而且它的任何一个非主属性都不传递依赖于任何主关键字。 考生情况(考生编号,姓名,性别,考生学校)

考场情况(考场号,考场地点) 考场分配(考生编号,考场号) 成绩(考生编号,考试成绩,学分) 2、某信息一览表如下,其是否满足3NF,若不满足请将其化为符 合3NF的关系。(12分) 配件关系:(配件编号,配件名称,型号规格) 供应商关系(供应商名称,供应商地址) 配件库存关系(配件编号,供应商名称,单价,库存量) 3、简述满足1NF、2NF和3NF的基本条件。并完成下题:已知教学关系, 教学(学号,姓名,年龄,性别,系名,系主任,课程名,成绩),试

问该关系的主键是什么,属于第几范式,为什么如果它不属于3NF,请把它规范到3NF。 4、请确定下列关系的关键字、范式等级;若不属于3NF,则将其化为3NF 。 例 1.仓库(仓库号,面积,电话号码,零件号,零件名称,规格,库存数量) 例1答案: 仓库号+零件号;1NF; 仓库(仓库号,面积,电话号码) 零件(零件号,零件名称,规格) 保存(仓库号,零件号,库存数量) 例2. 报名(学员编号,学员姓名,培训编号,培训名称,培训费,报名日期),每项培训有多个学员报名,每位学员可参加多项培训。例2答案: 学员编号+培训编号;1NF;

关系数据库设计

目录 一 Codd的RDBMS12法则——RDBMS的起源 二关系型数据库设计阶段 三设计原则 四命名规则 数据库设计,一个软件项目成功的基石。很多从业人员都认为,数据库设计其实不那么重要。现实中的情景也相当雷同,开发人员的数量是数据库设计人员的数倍。多数人使用数据库中的一部分,所以也会把数据库设计想的如此简单。其实不然,数据库设计也是门学问。 从笔者的经历看来,笔者更赞成在项目早期由开发者进行数据库设计(后期调优需要DBA)。根据笔者的项目经验,一个精通OOP和ORM的开发者,设计的数据库往往更为合理,更能适应需求的变化,如果追其原因,笔者个人猜测是因为数据库的规范化,与OO的部分思想雷同(如内聚)。而DBA,设计的数据库的优势是能将DBMS的能力发挥到极致,能够使用SQL和DBMS实现很多程序实现的逻辑,与开发者相比,DBA优化过的数据库更为高效和稳定。如标题所示,本文旨在分享一名开发者的数据库设计经验,并不涉及复杂的SQL语句或DBMS使用,因此也不会局限到某种DBMS产品上。真切地希望这篇文章对开发者能有所帮助,也希望读者能帮助笔者查漏补缺。 一?Codd的RDBMS12法则——RDBMS的起源 Edgar Frank Codd(埃德加·弗兰克·科德)被誉为“关系数据库之父”,并因为在数据库管理系统的理论和实践方面的杰出贡献于1981年获图灵奖。在1985年,Codd 博士发布了12条规则,这些规则简明的定义出一个关系型数据库的理念,它们被作为所有关系数据库系统的设计指导性方针。 1.信息法则?关系数据库中的所有信息都用唯一的一种方式表示——表中的值。 2.保证访问法则?依靠表名、主键值和列名的组合,保证能访问每个数据项。 3.空值的系统化处理?支持空值(NULL),以系统化的方式处理空值,空值不依赖于数据类型。 4.基于关系模型的动态联机目录?数据库的描述应该是自描述的,在逻辑级别上和普通数据采用同样 的表示方式,即数据库必须含有描述该数据库结构的系统表或者数据库描述信息应该包含在用 户可以访问的表中。 5.统一的数据子语言法则?一个关系数据库系统可以支持几种语言和多种终端使用方式,但必须至少 有一种语言,它的语句能够一某种定义良好的语法表示为字符串,并能全面地支持以下所有规 则:数据定义、视图定义、数据操作、约束、授权以及事务。(这种语言就是SQL) 6.视图更新法则?所有理论上可以更新的视图也可以由系统更新。 7.高级的插入、更新和删除操作?把一个基础关系或派生关系作为单个操作对象处理的能力不仅适应 于数据的检索,还适用于数据的插入、修改个删除,即在插入、修改和删除操作中数据行被视 作集合。 8.数据的物理独立性?不管数据库的数据在存储表示或访问方式上怎么变化,应用程序和终端活动都 保持着逻辑上的不变性。 9.数据的逻辑独立性?当对表做了理论上不会损害信息的改变时,应用程序和终端活动都会保持逻辑 上的不变性。 10.数据完整性的独立性?专用于某个关系型数据库的完整性约束必须可以用关系数据库子语言定 义,而且可以存储在数据目录中,而非程序中。

数据库范式

范式 就关系数据库而言,一贯认为:从其他元素中消除数据冗余问题,去除重复往往以减少冗余, 从特定的表中最小化冗余意味着摆脱不必要的数据。 商业上来讲,主要目标是通常保存空间和组织的数据可用性和可管理性,而不牺牲性能。此外,要求强烈繁忙的应用程序和最终用户的需要往往需要以多种方式打破规则的范式,以满足性能要求。第三范式以外的范式常常被忽视和有时甚至是第三范式本身就是多余的。 范式是一个升级的过程,每个上层的模式都是建立在下一级范式之上的。 消除数据冗余的影响如下: ?物理空间需要存储的数据减少。 ?数据变得更有组织。 ?范式化允许修改少量的数据(即单记录)。换言之,一个表的具体字段记录更新时,会影响其他引用他的表。 首先我们对一些概念性的东西来进行一个总结,通过对这些概念的理解,从来从根本上做到合理的数据库设计: 异常 ●添加异常:当我们添加一条记录的时候,他依赖的主表记录还没有记录,而该记录 已经插入成功。 ●删除异常:当我们的主表记录删除,而依赖他的子表没有清空对应的记录。 ●更新异常:当我们的主表记录有更新草组,而已来他的子表没有相应的更新记录。依赖,决定因子 ●函数依赖:当Y的值由X决定的时候,我们就说Y函数依赖于X,这就类似于一个 线性方程:Y=X+1;类似的ERD图中,我们这样表示,很清楚的看 到表Category,中的主键是CategoryID,他决定着其他字段的值Name和Pic, 我们就说Name或者Pic 函数依赖于CategoryID,他们之间就是一个函数依赖关 系。 ●决定因素:如上例中,CategoryID就是一个决定因素,他决定其他字段的值,Y=X +1中,X就决定着Y的值,虽然加了一个常量。

数据库范式习题答案

Normalization Questions and Answers Database Systems,CSCI4380-01 Sibel Adal? October28,2002 Question1Suppose you are given a relation R=(A,B,C,D,E)with the following functional dependencies:{CE→D,D→B,C→A}. a.Find all candidate keys. b.Identify the best normal form that R satis?es(1NF,2NF,3NF,or BCNF). c.If the relation is not in BCNF,decompose it until it becomes BCNF.At each step,identify a new relation,decompose and re-compute the keys and the normal forms they satisfy. Answer. a.The only key is{C,E} b.The relation is in1NF c.Decompose into R1=(A,C)and R2=(B,C,D,E).R1is in BCNF,R2is in2NF.Decompose R2 into,R21=(C,D,E)and R22=(B,D).Both relations are in BCNF. Question2Suppose you are given a relation R=(A,B,C,D,E)with the following functional de-pendencies:{BC→ADE,D→B}. a.Find all candidate keys. b.Identify the best normal form that R satis?es(1NF,2NF,3NF,or BCNF). c.If the relation is not in BCNF,decompose it until it becomes BCNF.At each step,identify a new relation,decompose and re-compute the keys and the normal forms they satisfy. Answer. a.The keys are{B,C}and{C,D} b.The relation is in3NF c.It cannot be put into BCNF,even if I remove D and put into a relation of the form(B,C,D)(I need C for the functional dependency),the resulting relation would not be in BCNF. Question3Suppose you are given a relation R=(A,B,C,D,E)with the following functional de-pendencies:BD→E,A→C. a.Show that the decomposition into R1=(A,B,C)and R2=(D,E)is lossy.You can show using any method.My suggestion is to show how spurious tuples result from this decomposition with respect to the table below: A B C D E 12345 18344 1

翻译 大型共享数据库的数据关系模型(精选.)

大型共享数据库的数据关系模型 E.F.Codd IBM Research Laboratory,SanJose,California 未来的数据库使用者一定是和数据在机器中的存储(即数据库的内部模式)相隔离的。而通过提示服务来提供信息是一个不太令人满意的解决方法。当数据的内部模式表示发生改变,甚至数据内部表示的多个方面发生改变时,终端用户和大多数应用程序的活动都不会受到影响。因此,查询、更新和报告存储信息类型的自然增长和变动都需要在数据表示中表现出来。 现存的不可推断的、格式化的数据系统给用户提供了树结构的文件或者更一般的网格模式的数据。本文在第一部分讨论这些模式的不足之处。并且会介绍一种基于n元组关系的模式,一种数据库关系的正式形式和通用数据子句的概念。第二部分将讨论一些关系的操作(不是逻辑层面的),并且把这些操作应用于用户模式上解决冗余和一致性问题。 1关系模式和一般模式 1.1简介 这篇文章是关于系统的基本关系原理的应用,这个原理提供了共享大型格式化数据库的方法。除了Childs[1]的文章有介绍外,用于数据库系统的关系的主要应用 还表现在演绎推理型的问-答系统中。Levein和Maron[2]提供了大量关于这个领域的参考资料。 相比之下,这里要解决的问题是一些数据独立性的问题——应用程序和终端活动之于数据类型增长和数据表示变动的独立性,而数据一致性问题即使在非演绎推 理型系统中也是很棘手的。 在目前流行的非推论性系统中,第一部分要介绍的数据的关系视图(或叫做模式)在一些方面似乎优于图模式和网格模式[3,4]。这种模式提供了一种根据数据的自然结构来描述描述数据的方式——也就是说,不用为了数据的机器表示而添加其 他的将结构。因此,这种模式为高水准的数据语言提供了基础,而这种数据语言机 制一方面可以达到最大化程序之间的独立性,另一方面也可以最大化数据的机器表 示和组织之间的独立性。 关系模式更高一级的优势在于它构成了关系处理可导性、冗余性和一致性的坚固基础——这些将在第二部分讨论。另一方面,网络模型产生了一些混淆,尤其是 把连接的源误作为关系的源(见第二部分“连接陷阱”) 最后,关系视图允许对目前格式化数据系统的范围和逻辑限制的更清晰的估算,并且有在单独的系统内竞争数据表示方式的优点(从逻辑的观点)。更清楚的这个观点的示例会在本文中的不同部分中被阐释。但是支持关系模式的系统实现不会讨论。 1.2目前系统的数据相关性 最近发展的信息系统中数据描述表的提供是向数据独立性目标[5,6,7]靠近的重要提高。这些表可以使改变数据库中数据表示的某些特征变得更容易些。但是,许 多数据表示特征可以在不逻辑地削弱一些应用程序的情况下被改变的功能仍受到相 当的限制。更进一步,与用户交互的数据模式仍然有一些散乱的代表性特征,特别

数据库原理复习题1

一、填空 1.目前,数据库系统支持的主要数据模型有__层次__模型、__网状__模型和关系模型。 2.与文件系统相比较,数据库系统的冗余度__小__,数据共享性__高___。3.关系模型的三类完整性是__实体完整性__、__参照完整性__和用户自定义完整性。若基本关系R中含有与另一个基本关系S的主码Ks相对应的属性组F,则对于R中每一个元组在F上的值必须为_空值___或者_S中主码某个值 __。4.由于数据库系统在三级模式之间提供了__外模式/模式_和__模式/内模式__两层映象功能,这就保证了数据库系统具有较高的数据独立性。 5.1NF的关系消除__非主属性对码的部分函数___依赖后,可将范式等级提高到2NF。2NF的关系消除__非主属性对码的传递函数___依赖后,可将范式等级提高到3NF。 6.E-R图的主要元素是实体、属性和_实体之间的联系___。 7.关系代数中专门的关系运算包括:选择、投影、__连接___和__除__。 8.SQL语言中的GRANT语句的功能是__授权__;REVOKE语句的功能是__收回权限__。 9.数据库的逻辑模型设计阶段,任务是将_E-R模型___转换成关系模型。 二、选择 1.关系模型中,同一个表中的不同属性命名( C ) A.可相同 B.必须相同 C.必须不同 D.可相同,但数据类型不同2.逻辑数据独立性是指( B ) A.模式变,用户不变 B.模式变,应用程序不变 C.应用程序变,模式不变 D.子模式变,应用程序不变 3.进行自然联接运算的两个关系必须具有( B ) A.相同属性个数 B.公共属性 C.相同关系名 D.相同关键字4.数据库具有( D ),最小冗余,较高的数据独立性和易于扩充等特点。 A.程序结构化 B.程序标准化 C.数据模块化 D.数据结构化 5. 任何由二个属性组成的关系( D ) A.可能为1NF B.可能为2NF C.可能为3NF D.必为3NF 6.数据库管理系统是位于____之间的一层数据管理软件。( B ) A.硬件与软件 B.用户与操作系统 C.硬件与操作系统 D.数据库与操作系统 7.数据库中,层次模型( A ) A.有且仅有一个结点无双亲,其他结点有且仅有一个双亲 B.有一个以上结点无双亲 C.每个结点都无双亲 D.有一个结点有多于一个双亲 8.一个关系中的候选关键字( B ) A.至多一个 B.可多个 C.必须多个 D.至少3个 9. 在数据库技术中,独立于计算机系统的模型是( A ) A.E-R模型 B.层次模型

关系数据库设计理论

第6章关系数据库设计理论 本章主要讲解在关系数据库的设计过程中,如何减少数据冗余,避免出现异常,该如何对数据库模式进行中心设计。 1.深入理解函数依赖和键码的概念。学会计算属性的封闭集。 2.模式设计是本章的重点。了解数据冗余和更新异常产生的根源;理解关系模式规范化的途径;准确理解第一范式、第二范式、第三范式和BC范式的含义、联系与区别; 深入理解模式分解的原则;熟练掌握模式分解的方法,能正确而熟练的将一个关系模式分解成属于第三范式或BC范式的模式。 3.了解多值依赖和第四范式的概念,掌握把关系模式分解成属于第四范式的模式的方法。 本章主要的知识点包括: 知识点1 函数依赖 知识点2 模式设计 知识点3 多值依赖 学习要点1、函数依赖 1.1函数依赖的定义 如果关系R的两个元组在属性A1,A2,… An上一致(也就是,两个元组在这些属性所对应的各个分量具有相同的值),则它们在另一个属性B上也一致。那么,我们就说在关系R中属性B函数依赖于属性A1A2…An。记做A1A2…An ,也可以说“A1,A2,…,An函数决定B”。A1A2…An称为决定因素。 举例: 在这个关系中,学号确定后,学生的姓名及所在的系就都确定了。属性中的这种依赖关系就是函数依赖。在本例中存在下列函数依赖。 ?Sno SN ame ?Sno S dept ?S dept Mname ?Sno C name Grade 1.2 关系的键码如一个或多个属性的集合{A1,…,An}满足如下条件,称该集合为关系R的键码: 1. 这些属性函数决定该关系的所有其它属性。 2. {A1,…,An}的任何真子集都不能函数决定R的所有其它属性,键码必须是最小的。 1.3 超键码包含键码的属性集称为“超键码” 。

数据库范式理解例题

范式分解 主属性:包含在任一候选关键字中的属性称主属性。 非主属性:不包含在主码中的属性称为非主属性。 函数依赖: 是指关系中一个或一组属性的值可以决定其它属性的值。函数依赖正象一个函数 y = f(x) 一样,x的值给定后,y的值也就唯一地确定了。 如果属性集合Y中每个属性的值构成的集合唯一地决定了属性集合X中每个属性的值构成的集合,则属性集合X函数依赖于属性集合Y,计为:Y→X。属性集合Y中的属性有时也称作函数依赖Y→X的决定因素(determinant)。例:身份证号→姓名。部分函数依赖: 设X,Y是关系R的两个属性集合,存在X→Y,若X’是X的真子集,存在X’→Y,则称Y部分函数依赖于X。 完全函数依赖: 在R(U)中,如果Y函数依赖于X,并且对于X的任何一个真子集X',都有Y不函数依赖于X',则称Y对X完全函数依赖。否则称Y对X部分函数依赖。

【例】; 举个例子就明白了。假设一个学生有几个属性 SNO 学号 SNAME 姓名 SDEPT系 SAGE 年龄 CNO 班级号 G 成绩 对于(SNO,SNAME,SDEPT,SAGE,CNO,G)来说,G完全依赖于(SNO, CNO), 因为(SNO,CNO)可以决定G,而SNO和CNO都不能单独决定G。 而SAGE部分函数依赖于(SNO,CNO),因为(SNO,CNO)可以决定SAGE,而单独的SNO也可以决定SAGE。 传递函数依赖: 设R(U)是属性集U上的关系,x、y、z是U的子集,在R(U)中,若x→y,但y→x,若y→z,则x→z,称z传递函数依赖于x,记作X→TZ。 如果X->Y, Y->Z, 则称Z对X传递函数依赖。 计算X+ (属性的闭包)算法: a.初始化,令X+ = X; b.在F中依次查找每个没有被标记的函数依赖,若“左边属性集”包含于X+ ,则令X+ = X+∪“右边属性集”, 并为访问过的函数依赖设置标记。

关系数据库理论

关系数据库理论

————————————————————————————————作者:————————————————————————————————日期:

第4部分关系数据库理论 复习习题与讲解资料 【主讲教师:钱哨】 一.考试大纲考点要求 1了解关系模式设计中可能出现的问题及其产生原因以及解决的途径。 2 掌握函数依赖、完全函数依赖、部分函数依赖、传递函数依赖的定义,能计算属性的封闭集,并由此得到关系的候选键。 3 掌握第一范式(1NF )、第二范式( 2NF )和第三范式(3NF )的定义,能判别关系模式的范式等级。 4 掌握关系模式的分解(规范到3NF )的步骤、分解的原则和分解的方法。 二.单项选择题 1.为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是( ) 。A. 关系规范化理论 B. 关系代数理论 C.数理逻辑D. 关系运算理论 2. 规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每一个属性都是( ) 。 A. 长度不变的B. 不可分解的 C.互相关联的 D. 互不相关的 3.已知关系模式R(A,B,C,D,E)及其上的函数相关性集合F={A→D,B→C ,E→A },该关系模式的候选关键字是( ) 。 A.AB B. BE C.CDD.DE

4.设学生关系S(SNO,SNAME,SSEX,SAGE,SDPART)的主键为SNO,学生选课关系SC(SNO,CNO,SCORE)的主键为SNO和CNO,则关系R(SNO,CNO,SSEX,SA GE,SDPART,SCORE)的主键为SNO和CNO,其满足( )。 A.1NF B.2NF C.3NF D. BCNF 5. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={C →P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },关系模式W的一个关键字是()。 A.(S,C)B. (T,R) C.(T,P) D. (T,S) 6.关系模式中,满足2NF的模式( ) 。 A. 可能是1NF B. 必定是1NF C. 必定是3NF D. 必定是BCNF 7.关系模式R中的属性全是主属性,则R的最高范式必定是()。 A. 1NF B. 2NF C. 3NF D. BCNF 8. 消除了部分函数依赖的1NF的关系模式,必定是()。 A.1NF B.2NF C.3NF D. BCNF 9.如果A->B ,那么属性A和属性B的联系是( ) 。 A.一对多B. 多对一 C.多对多D. 以上都不是 10. 关系模式的候选关键字可以有1个或多个,而主关键字有( )。 A.多个B.0个 C.1个D.1个或多个 11.候选关键字的属性可以有()。 A. 多个B. 0个 C.1个D. 1个或多个 12. 关系模式的任何属性()。 A.不可再分 B. 可以再分C. 命名在关系模式上可以不唯一D.以上都不是 13. 设有关系模式W(C,P,S,G,T,R),其中各属性的含义是:C表示课程,P表示教师,S表示学生,G表示成绩,T表示时间,R表示教室,根据语义有如下数据依赖集:D={ C→P,(S,C)→G,(T,R)→C,(T,P)→R,(T,S)→R },若将关系模式W分解为三个关系模式W1(C,P),W2(S,C,G),W2(S,T,R,C),则W1的规范化程序最高达到( )。 A.1NFB.2NF C.3NFD. BCNF

数据库-范式

1:Redundancy(冗余),可能带来的问题:冗余存储(redundant storage),插入/删除/更新异常(insert/delete/update anomalies) 冗余来源于完整性约束(Integrity constraints), 特别是函数依赖(functional dependencies) 2:函数依赖(functional dependency简写为FD)的定义:在一个关系模式R的所有关系实例中任取两个元组,如果他们的X属性的投影完全相同,则Y一定相同,则有X决定Y,或称Y依赖于X,用关系代数表示为: for every allowable instance r of R: 例:Hourly_Emps (ssn, name, lot, rating, hrly_wages, hrs_worked),以下简写为Hourly_Emps(SNLRWH),的一个函数依赖为:S--> SNLRWH 3:关于函数依赖的三个定理及两个推论: Armstrong’s Axioms: 自反律: 如果Y X,则有X—>Y 增广律: 如果X→Y,则对于任意的Z有XZ→YZ 传递律: 如果X→Y and Y→Z,则X→Z 推论: 两个推论的证明: (1):Union:可以直接使用定义证明。设r是R的任意一个关系,s,t是r的任意两个元组,若s[X]=t[X],由X→Y可得s[Y]=t[Y],

由X→Z可得s[Z]=t[Z],则有s[YZ]=t[YZ],即当s[X]=t[X]时一定可以得到s[YZ]=t[YZ],则根据函数依赖的定义可以有X→YZ。 (2):Decomposition: Y?YZ,由自反律得YZ→Y,又X→YZ,由传递律得X→Y 同理可证X→Z。 4:函数依赖集的闭包: 5:属性闭包的定义: X的属性闭包记为+X,是一个属性集合,集合中的元素A要求 X→A 在函数依赖F的属性闭包中(求属性闭包要注意是在哪个函数依赖的基础上求的)。 6:计算属性闭包的算法: 为什么需要属性闭包:对于函数依赖闭包的求解是一个NP难度问题,经常不需要求一个函数依赖的属性闭包,而只需要判断一个函数依赖

数据库习题答案-3

《数据库习题答案》来自五星文库 点这里,有很多篇《数据库习题答案》 在线阅读本文: 数据库习题答案 导读:第三章习题,1.关系数据库设计理论,数据依赖范式和关系模式的规范化设计方法,其中数据依赖起着核心的作用,2.关系数据库中的关系模式至少要满足第一范式,如果每个属性值都是不可再分的最小数据单位,(2)试分析模式R的数据冗余问题,关系R中的C属性会存在在数据冗余,相应地原来存储在一张二维表内的数据就要分散存储到多张二维表中,第四章习题,A删除基本表B修改基本表中的数据,A数据项B 元组,C表D数据库 第三章习题 一、单项选择题 1.在关系模型R中,函数依赖X→Y的语义是(B )A.在R的某一关系中,若两个元组的X值相等,则Y值也相等 B.在R的每一关系中,若两个元组的X值相等,则Y值也相等 C.在R的某一关系中,X值应与Y值相等 D.在R的每一关系中,X值应与Y值相等 2.设学生关系模式为:学生(学号,姓名,年龄,性别,成绩,专业),则该关系模式的主键是( B ) A.性别B.学号 C.学号,姓名D.学号,姓名,性别 3.如果X→Y(Y不包含于X,且Y不能决定X)和Y→Z成立,那么X→Z成立。这条规则称为( B ) A.自反律B.传递律 C.伪传递律D.增广律

4.关系模式R2NF,则R一定是(b ) A.1NF B.3NF C.BCNF D.4NF 5.设一关系模式为:运货路径(顾客姓名,顾客地址,商品名,供应商姓名,供应商地址),则该关系模式的主键是( C )A.顾客姓名,供应商姓名,供应商地址B.顾客姓名,商品名 C.顾客姓名,供应商姓名,商品名D.顾客姓名,顾客地址 6.下列有关范式的叙述中正确的是(B ) A.如果关系模式R1NF,且R中主属性完全函数依赖于主键,则R是2NF B.如果关系模式R3NF,则R2NF一定成立 C.如果关系模式R1NF,则只要消除了R中非主属性对主键的传递依赖,则R可转换成2NF D.如果关系模式R1NF,则只要消除了R中非主属性对主键的部分依赖,则R可转换成3NF 7.关系模式学生(学号,课程号,名次),若每一名学生每门课程有一定的名次,每门课程每一名次只有一名学生,则以下叙述中错误的是( B ) A.(学号,课程号)和(课程号,名次)都可以作为候选键B.只有(学号,课程号)能作为候选键 C.该关系模式属于第三范式 D.该关系模式属于BCNF 8.已知关系模式R(ABCD),F={A→C,B→C,C→D },则以下成立的是( B ) A.A→B B.A→D C.AD→BC D.AC→BD 9.如果X→Y且ZU成立,那么XZ→YZ成立,这条规则称为(D )A.自反律B.传递律` C.伪传递律D.增广律

第二章 关系数据库基本原理

第二章关系数据库基本原理 一、选择题 1.关系数据表的关键字可由()字段组成。 A、一个 B、两个 C、多个 D、一个或多个 2.下列关于关系数据库叙述错误的是()。 A、关系数据库的结构一般保持不变,但也可根据需要进行修改 B、一个数据表组成一个关系数据库,多种不同的数据则需要创建多个数据库 C、关系数据表中的所有记录的关键字字段的值互不相同 D、关系数据表中的外部关键字不能用于区别该表中的记录 3.参照完整性规则:表的()必须是另一个表的主键的有效值,或者是空值。 A、候选键 B、外键 C、主键 D、主属性 4.关系数据库规范化是为了解决关系数据库中的()问题而引入的。 A、插入、删除和数据冗余 B、提高查询速度 C、减少数据操作的复杂性 D、保证数据的安全性和完整性 5.关系数据库是若干()的集合。 A、表(关系) B、视图 C、列 D、行 6.在关系模式中,实现“关系中不允许出现相同的元组”的约束是()约束。 A、候选键 B、主键 C、键 D、超键 7.约束“年龄限制在18~30岁之间”属于DBMS的()功能。 A、安全性 B、完整性 C、并发控制 D、恢复 8.反映现实世界中实体及实体间联系的信息模型是()。 A、关系模型 B、层次模型 C、网状模型 D、E-R模型 9.关系数据模型的3个组成部分中,不包括()。 A、完整性规则 B、数据结构 C、数据操作 D、并发控制 10.如何构造出一个合适的数据逻辑结构是()主要解决的问题。 A、关系数据库优化 B、数据字典 C、关系数据库规范化理论 D、关系数据库查询 11.学生社团可以接纳多名学生参加,但每个学生只能参加一个社团,从社团到学生之间的 联系类型是()。 A、多对多 B、一对一 C、多对一 D、一对多 12.关系模式的任何属性()。 A、不可再分 B、可以再分 C、命名在关系模式上可以不唯一 D、以上都不是 13.一个m:n联系转换为一个关系模式。关系的关键字为()。 A、某个实体的关键字 B、各实体关键字的组合 C、n端实体的关键字 D、任意一个实体的关键字 14.候选关键字的属性可以有()。 A、多个 B、0个 C、1个 D、1个或多个 15.关系模型中有三类完整性约束:实体完整性、参照完整性和域完整性。定义外部关键字 实体的是哪一类完整性()? A、实体完整性 B、域完整性 C、参照完整性 D、实体完整性、参照完整性和域完整性 16.设已知F={C→A,CG→D,CG→B,CE→A,ACD→B},从中去掉哪些函数依赖关系后得到 的新的函数依赖集合F1与F是等价的()。

关于关系数据库模式分解与范式的总结

1.关系模式设计不规范会带来一系列的问题 数据冗余 更新异常 插入异常 删除异常 因此需要一个标准的模式来解决这些问题,引入模式分解来解决存在问题。 2.无损连接的概念比较好懂,就是要保证模式分解后仍然可以根据分解后的关系回退回分解前。这可以保证分解过程没有丢失信息,不会破坏和更改已经存在的。 而检验无损连接的方法分为两种: ①当R分解为两个关系模式R1和R2时,有一种简便的方法可以测试无损连接性 p={R1,R2} p是无损连接的分解当且仅当下面之一满足 (R1 ∩R2)→(R1-R2) (R1 ∩R2)→(R2-R1) 其中R1 ∩R2指模式的交,返回公共属性 R2-R1表示模式的差集,返回属于R2但不属于R1的属性集 也可以理解为R1∩R2的结果是R的超码,即该结果可以推出全部R属性。 ②当R分解为多个关系模式时,可以使用chase算法:

举个栗子 R(A,B,C,D,E) R1(A,D), R2(A,B), R3(B,E), R4(C,D,E), R5(A,E) F={A→C, B→C, C→D, DE→C, CE→A} 判断R分解为p={R1,R2,R3,R4,R5}是否是无损连接的分解?第一步,构造初始表。

第二步,处理表 A→C:将b23,b53改为b13 B→C:将b33改为b13 C→D:将b24,b34,b54改为a4 DE→C:将第3行和第5行的C改为a3 CE→A:将第3行和第4行的A改为a1 处理后BE行将全变为a,证明为无损连接。 3.函数依赖(FD)的表现形式是x→y,可以根据函数的概念理解,当x属性的值相同时,可以断定y也一定相同。在实际关系模式中,x与y会存在逻辑上的相关性,如一个学号会对应一个姓名。要理解函数依赖是关系模式的内涵,保持函数依赖才能保持关系模式中存在的关系。 举个栗子: R(city, street, zip), F={(city,street)→zip, zip→city} 分解为p={R1(street,zip),R2(city,zip)} 在R1中插入(’a’,’100081’)和(’a’,’100082’)

数据库三范式

数据库三范式 1.1 第一范式(1NF)无重复的列 所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。简而言之,第一范式就是无重复的列。 说明:在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。 1.2 第二范式(2NF)属性完全依赖于主键[消除部分子函数依赖] 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被惟一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。例如员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是惟一的,因此每个员工可以被惟一区分。这个惟一属性列被称为主关键字或主键、主码。 第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。简而言之,第二范式就是属性完全依赖于主键。 1.3 第三范式(3NF)属性不依赖于其它非主属性[消除传递依赖] 满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。 II、范式应用实例剖析 下面以一个学校的学生系统为例分析说明,这几个范式的应用。首先第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。在当前的任何关系数据库管理系统(DBMS)中,傻瓜也不可能做出不符合第一范式的数据库,因为这些DBMS不允许你把数据库表的一列再分成二列或多列。因此,你想在现有的DBMS 中设计出不符合第一范式的数据库都是不可能的。 首先我们确定一下要设计的内容包括那些。学号、学生姓名、年龄、性别、课程、

第二章--关系数据库习题

第二章关系数据库 一、选择题: 1、对于关系模型叙述错误的是。 A.建立在严格的数学理论、集合论和谓词演算公式基础之一 B.微机DBMS绝大部分采取关系数据模型 C.用二维表表示关系模型是其一大特点 D.不具有连接操作的DBMS也可以是关系数据库管理系统 2、关系模式的任何属性。 A.不可再分B.可再分 C.命名在该关系模式中可以不唯一D.以上都不是 3、在通常情况下,下面的表达中不可以作为关系数据库的关系的是。 A.R1(学号,姓名,性别) B.R2(学号,姓名,班级号) C.R3(学号,姓名,宿舍号) D.R4(学号,姓名,简历) 4、关系数据库中的码是指。 A.能唯一关系的字段B.不能改动的专用保留字 C.关键的很重要的字段D.能惟一表示元组的属性或属性集合 5、根据关系模式的完整性规则,一个关系中的“主码”。 A.不能有两个B.不能成为另外一个关系的外码 C.不允许为空D.可以取值 6、关系数据库中能唯一识别元组的那个属性称为。 A.唯一性的属性B.不能改动的保留字段 C.关系元组的唯一性D.关键字段 7、在关系R(R#,RN,S#)和S(S#,SN,SD)中,R的主码是R#,S的主码是S#,则S#在R中称为。A.外码B.候选码 C.主码D.超码 8、关系模型中,一个码是。 A.可由多个任意属性组成 B.至多由一个属性组成 C.可由一个或多个其值能唯一标识该关系模式中任意元组的属性组成 D.以上都不是 9、一个关系数据库文件中的各条记录。 A.前后顺序不能任意颠倒,一定要按照输入的顺序排列 B.前后顺序可以任意颠倒,不影响库中的数据关系 C.前后顺序可以任意颠倒,但排列顺序不同,统计处理的结果可能不同 D.前后顺序不能任意颠倒,一定要按照码段的顺序排列 10、关系数据库管理系统应能实现的专门关系运算包括。 A.排序、索引、统计B.选择、投影、连接 C.关联、更新、排序D.显示、打印、制表 11、同一个关系模型的任意两个元组值。 A.不能全同B.可全同 C.必须全同D.以上都不是 12、自然连接是构成新关系的有效方法。一般情况下,当对关系R和S使用自然连接时,要求R和S含有一个或多个共有的。 A.元组B.行 C.记录D.属性 13、设关系R(A,B,C)和S(B,C,D),下列各关系代数表达式不成立的是。 A. ) ( ) (S R D A π π>< B.R S ? C. ) ( ) (S R B B π π? D.R>

相关文档