📅  最后修改于: 2020-12-13 05:25:34             🧑  作者: Mango
关于第二范式(2NF)的问题:
1.给定一个关系R(A,B,C,D)和功能依赖集FD = {AB→CD,B→C},确定给定的R是否在2NF中?如果不转换为2 NF。
解决方案:让我们使用FD在R上构造一个箭头图,以计算候选键。
从R上方的箭头图中,我们可以看到属性AB不是由给定的FD所确定的,因此AB将成为候选关键字的组成部分,即无论候选关键字是什么,以及候选关键字是多少是候选键,但全部具有W必选属性。
让我们计算AB的关闭时间
AB + = ABCD(根据我们之前研究的方法)
由于AB的闭包包含R的所有属性,因此AB是候选关键字
从候选密钥的定义开始(候选密钥是一个超级密钥,没有适当的子集是一个超级密钥)
由于所有密钥都将AB作为组成部分,并且我们证明AB是候选密钥,因此,任何AB的超集都将是Super Key而不是候选密钥。
因此将只有一个候选密钥AB
2NF的定义:非素数属性不应部分依赖于候选键
由于R具有4个属性:-A,B,C,D,并且候选键是AB,因此,主要属性(候选键的一部分)是A和B,而非主要属性是C和D
a)FD: AB→CD满足2NF的定义,即非素数属性(C和D)完全取决于候选密钥AB
b)FD: B→C不满足2NF的定义,因为非素数属性(C)部分取决于候选密钥AB(即,不应不惜任何代价破坏密钥)
由于FD B→C,所以上表R(A,B,C,D)不在2NF中
在2NF中转换表R(A,B,C,D):
由于FD:B→C,我们的表不在2NF中,让我们分解该表
R1(B,C)
由于密钥是AB,并且从FD AB→CD,我们可以创建R2(A,B,C,D),但这又会产生部分依赖关系B→C,因此是R2(A,B,D)。
最后是2NF中的分解表
a)R1(B,C)
b)R2(A,B,D)
2.给定一个关系R(P,Q,R,S,T)和功能相关性集合FD = {PQ→R,S→T},确定给定的R是否在2NF中?如果不转换为2 NF。
解决方案:让我们使用FD在R上构造一个箭头图以计算候选密钥。
从R上方的箭头图中,我们可以看到,属性PQS不是由给定的FD所确定的,因此PQS将成为候选关键字的组成部分,即,无论候选关键字是多少,候选关键字是多少将是候选密钥,但是全部将具有PQS强制属性。
让我们计算一下PQS的关闭时间
PQS + = PQSRT(根据我们之前研究的方法)
由于PQS的闭包包含R的所有属性,因此PQS是候选关键字
从候选密钥的定义开始(候选密钥是一个超级密钥,没有适当的子集是一个超级密钥)
由于所有密钥都将PQS作为必不可少的部分,因此我们证明PQS是候选密钥。因此,PQS的任何超集将是“超级密钥”,而不是“候选密钥”。
因此,将只有一个候选密钥PQS
2NF的定义:任何非素数属性都不应部分依赖于候选键。
由于R具有5个属性:-P,Q,R,S,T和候选键为PQS,因此,主要属性(候选键的一部分)为P,Q和S,而非主要属性为R和T
a)FD: PQ→R不满足2NF的定义,即非素数属性(R)部分取决于候选密钥PQS的一部分。
b)FD: S→T不满足2NF的定义,因为非主要属性(T)部分取决于候选密钥PQS(即,不应不惜任何代价破坏密钥)。
因此,FD PQ→R和S→T,上表R(P,Q,R,S,T)不在2NF中
在2NF中转换表R(P,Q,R,S,T):
由于由于FD:PQ→R和S→T,我们的表不在2NF中,让我们分解表
R1(P,Q,R) (表R1中的现在FD:PQ→R是Full FD,因此R1在2NF中)
R2(S,T) (表R2中的现在FD:S→T是Full FD,因此R2在2NF中)
并为密钥创建一个表,因为密钥是PQS。
R3(P,Q,S)
最后,分解为2NF的表是:
a)R1(P,Q,R)
b)R2(S,T)
c)R3(P,Q,S)
3.给定一个关系R(P,Q,R,S,T,U,V,W,X,Y)和功能相关性集合FD = {PQ→R,PS→VW,QS→TU,P→X, W→Y},确定给定的R是否在2NF中?如果不转换为2 NF。
解决方案:让我们使用FD在R上构造一个箭头图以计算候选密钥。
从R上方的箭头图中可以看出,属性PQS并非由给定FD中的任何一个确定,因此PQS将成为候选关键字的组成部分,即无论候选关键字是多少,候选关键字将是多少是候选键,但都将具有PQS强制属性。
让我们计算一下PQS的关闭时间
PQS + = PQSRTUVWXY(来自我们之前研究的封闭方法)
由于PQS的闭包包含R的所有属性,因此PQS是候选关键字
从候选密钥的定义开始(候选密钥是一个超级密钥,没有适当的子集是一个超级密钥)
由于所有密钥都将PQS作为必不可少的部分,并且我们已经证明PQS是候选密钥,因此,PQS的任何超集都将是超级密钥,而不是候选密钥。
因此,将只有一个候选密钥PQS
2NF的定义:非素数属性不应部分依赖于候选键
由于R具有10个属性:-P,Q,R,S,T,U,V,W,X,Y和候选键是使用FD = {PQ→R,PS→VW,QS→TU,P计算的PQS →X,W→Y}。因此,素数属性(候选关键字的一部分)为P,Q和S,而非素数属性为R,T,U,V,W,X和Y
因此由于FD:PQ→R,PS→VW,QS→TU,P→X上表R(P,Q,R,S,T,U,V,W,X,Y)不在2NF中
在2NF中转换表R(P,Q,R,S,T,U,V,W,X,Y):
由于由于FD:PQ→R,PS→VW,QS→TU,P→X我们的表不在2NF中,让我们分解表
R1(P,Q,R) (表R1中的现在FD:PQ→R是Full FD,因此R1在2NF中)
R2(P,S,V,W) (现在在表R2中FD:PS→VW是Full FD,因此R2在2NF中)
R3(Q,S,T,U) (现在表R3中的FD:QS→TU是Full FD,因此R3在2NF中)
R4(P,X) (表R4 FD中的现在:P→X是Full FD,因此R4在2NF中)
R5(W,Y) (现在在表R5中FD:W→Y是Full FD,因此R2在2NF中)
并为密钥创建一个表,因为密钥是PQS。
R6(P,Q,S)
最后,分解为2NF的表是:
R1(P,Q,R)
R2(P,S,V,W)
R3(Q,S,T,U)
R4(P,X)
R5(W,Y)
R6(P,Q,S)
4.给定一个关系R(A,B,C,D,E)和功能相关性集合FD = {A→B,B→E,C→D},确定给定的R是否在2NF中?如果不转换为2 NF。
解决方案:让我们使用FD在R上构造一个箭头图以计算候选密钥。
从R上方的箭头图中,我们可以看到,属性AC不是由给定的FD所确定的,因此AC将成为候选密钥的组成部分,即无论候选密钥是多少,候选密钥将是多少是候选键,但全部具有W必选属性。
让我们计算AC的关闭时间
AC + = ACBED(根据我们之前研究的封闭方法)
由于AC的闭包包含R的所有属性,因此AC是候选关键字
从候选密钥的定义开始(候选密钥是一个超级密钥,没有适当的子集是一个超级密钥)
由于所有密钥都将AC作为必不可少的一部分,并且我们已经证明AC是候选密钥,因此,AC的任何超集都将是Super Key而不是候选密钥。
因此,将只有一个候选密钥AC
2NF的定义:非素数属性不应部分依赖于候选键
由于R具有5个属性:-A,B,C,D,E和候选密钥为AC,因此,主属性(候选密钥的一部分)为A和C,而非主属性为BD和E
因此,由于FD A→B和C→D,因此上表R(A,B,C,D,E)不在2NF中
在2NF中转换表R(A,B,C,D,E):
由于由于FD:A→B和C→D我们的表不在2NF中,让我们分解表
R1(A,B,E) (来自FD:A→B和B→E都违反2 NF定义)
R2(C,D) (现在表R2 FD中:C→D是Full FD,因此R2在2NF中)
并为候选密钥AC创建一张表
R3(A,C)
最后,分解后的表格位于2NF中:
过程:要验证给定的关系模式R是否在2NF中,如果不是,则将其转换为2NF:
步骤1:使用R上的箭头图,计算给定R的候选键。
步骤2:使用2NF的定义验证每个FD(任何非主要属性都不应部分取决于候选密钥)
步骤3:制作一组不满足2NF的FD,即所有部分FD。
步骤4:通过分解R来转换2NF中的表R,使得基于FD的每次分解都应满足2NF的定义:
步骤5:基于FD的分解完成后,在Candidate键中创建一个单独的属性表。
步骤6:从步骤4和步骤5获得的所有分解的R均形成所需的分解,其中每个分解为2NF。