📜  标准化问题

📅  最后修改于: 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不满足2NF的定义,即非素数属性(R)部分取决于候选密钥PQS的一部分
  • FD: PS→VW不满足2NF的定义,即非素数属性(VW)部分取决于候选密钥PQS的一部分
  • FD: QS→TU不满足2NF的定义,即非主要属性(TU)部分取决于候选密钥PQS的一部分
  • FD: P→X不满足2NF的定义,即非素数属性(X)部分取决于候选密钥PQS的一部分
  • FD: W→Y不会违反2NF的定义,因为非素数属性(Y)依赖于与2NF定义无关的非素数属性(W)。

因此由于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不满足2NF的定义,因为非素数属性(B)部分取决于候选密钥AC(即,不应不惜任何代价破坏密钥)。
  • FD: B→E不会违反2NF的定义,因为非素数属性(E)取决于非素数属性(B),后者与2NF的定义无关。
  • FD: C→D不满足2NF的定义,因为非素数属性(D)部分取决于候选密钥AC(即,不应不惜任何代价破坏密钥)

因此,由于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中:

  • R1(A,B,E)
  • R2(C,D)
  • R3(A,C)

过程:要验证给定的关系模式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。