📅  最后修改于: 2020-12-13 05:31:23             🧑  作者: Mango
要解决此问题以识别正常形式,我们必须了解其对BCNF,3 NF和2NF的定义:
2NF的定义:任何非素数属性都不应部分依赖于候选键。也就是说,X→Y不应有部分依赖性。
3NF的定义:首先,它应该在2NF中,并且如果两组属性X和Y之间存在非平凡的依存关系,使得X→Y(即Y不是X的子集),则
BCNF的定义:首先,它应在3NF中,并且如果两组属性X和Y之间存在非平凡的依存关系,使得X→Y(即Y不是X的子集),则
注意:如果表位于BCNF中,则该表位于3NF,2NF和1NF中,类似地,如果表位于3NF中,则其位于2NF和1NF中。因此,我们可以说,如果表的格式为高标准格式,那么默认情况下,表的格式为低标准格式。
问题1:给定关系R(P,Q,R,S,T,U,V,W,X)和功能相关性集合FD = {PQ→R,QS→TU,PS→VW和P→X} ,确定给定的R是否为正常形式?
解决方案:让我们使用FD在R上构造一个箭头图以计算候选密钥。
从上面R上的箭头图中,我们可以看到属性PQS不受任何给定FD的确定,因此PQS将成为候选关键字的组成部分,即无论候选关键字是多少,候选关键字是多少将是候选密钥,但是全部将具有PQS强制属性。
让我们计算一下PQS的关闭时间
PQS + = PQRSTUXVW(来自我们之前研究的闭包方法)
由于PQS的闭包包含R的所有属性,因此PQS是候选关键字
从候选密钥的定义开始(候选密钥是一个超级密钥,没有适当的子集是一个超级密钥)
由于所有密钥都将PQS作为必不可少的部分,并且我们已经证明PQS是候选密钥,因此,PQS的任何超集都将是超级密钥,而不是候选密钥。
因此,将只有一个候选密钥PQS
由于R具有9个属性:-P,Q,R,S,T,U,V,W,X,并且候选键是PQS,因此,主属性(候选键的一部分)是PQ和S,而非主键属性是RTUVWX
给定FD为{PQ→R,QS→TU,PS→VW和P→X},而超级密钥/候选密钥为PQS
注意:为解决此类问题,我们应用了逆向工程,即首先检查BCNF,如果不是,则检查3NF,如果不是,则检查2NF,依此类推。
因此,根据以上三个语句,我们可以说表R(P,Q,R,S,T,U,V,W,X)仅在1NF中。
问题2:给定一个关系R(P,Q,R,S,T,U,V,W)和功能相关性集合FD = {PQ→R,P→ST,Q→U和U→VW},确定给定R是哪种范式?
解决方案:让我们使用FD在R上构造一个箭头图以计算候选密钥。
从上面R上的箭头图中,我们可以看到属性PQ不是由给定FD所确定的,因此PQ将成为候选关键字的组成部分,即无论候选关键字是多少,候选关键字是多少将是候选密钥,但是全部将具有PQ强制属性。
让我们计算PQ的结束时间
PQ + = PQRSTUVW(根据我们之前研究的封闭方法)
由于PQ的闭包包含R的所有属性,因此PQ是候选键
从候选密钥的定义开始(候选密钥是一个超级密钥,没有适当的子集是一个超级密钥)
由于所有密钥都将PQ作为组成部分,并且我们已经证明PQ是候选密钥,因此,PQ的任何超集都将是超级密钥,而不是候选密钥。
因此,只有一个候选密钥PQ
由于R具有8个属性:-P,Q,R,S,T,U,V,W,候选键为PQ。因此,素数属性(候选关键字的一部分)是P和Q,而非素数属性是RSTUVW
给定FD为{PQ→R,P→ST,Q→U和U→VW},而超级键/候选键为PQ
注意:为解决此类问题,我们应用了逆向工程,即首先检查BCNF,如果不是,则检查3NF,如果不是,则检查2NF,依此类推。
因此,根据以上三个语句b,c和d,我们可以说表R(P,Q,R,S,T,U,V,W,)仅在1NF中。
问题3:给定关系R(P,Q,R,S,T,U)和功能相关性集合FD = {PQ→R,SR→PT,T→U},确定给定的R是哪种范式?
解决方案:让我们使用FD在R上构造箭头图以计算候选键。
从上面R上的箭头图中,我们可以看到,属性QS不是由给定的FD所确定的,因此QS将成为候选关键字的组成部分,即无论候选关键字是多少,候选关键字是多少将是候选密钥,但都将具有QS强制属性。
让我们计算QS的结束时间
QS + = QS(来自我们之前研究的封闭方法)
由于闭包QS并不包含R的所有属性,因此QS不是候选键。
通过将QS与另一个属性组合在一起,我们发现PQS和RQS决定了R的所有属性,因此PQS和RQS是R的候选关键字。
由于R具有6个属性:-P,Q,R,S,T,U和候选键是PQS和RQS,因此,主要属性(候选键的一部分)是PQR和S,而非主要属性是TU
给定FD为{PQ→R,SR→PT,T→U},而超级键/候选键为PQS和RQS
注意:为解决此类问题,我们应用了逆向工程,即首先检查BCNF,如果不是,则检查3NF,如果不是,则检查2NF,依此类推。
因此,根据以上两个语句c和d,我们可以说表R(P,Q,R,S,T,U)仅在1NF中。
问题4:给定关系R(P,Q,R,S,T)和功能相关性集合FD = {QR→PST,S→Q},确定给定的R为哪种范式?
解决方案:让我们使用FD在R上构造箭头图以计算候选键。
从R上的箭头图中,我们可以看到属性R不是由任何给定FD所确定的,因此R将成为候选关键字的组成部分,即无论候选关键字是多少,候选关键字是多少将为候选键,但全部具有R强制属性。
让我们计算R的闭包
R + = R(根据我们之前研究的封闭方法)
由于闭包R不包含R的所有属性,因此R不是候选键。
在将R与另一个属性组合时,我们发现RS和RQ决定了R的所有属性,因此RS和RQ是R的候选关键字。
由于R具有5个属性:-P,Q,R,S,T和候选关键字是RS和RQ,因此主要属性(候选关键字的一部分)是SQR,而非主要属性是TP
给定FD为{QR→PST,S→Q},超级键/候选键为RS和RQ
注意:为解决此类问题,我们应用了逆向工程,即首先检查BCNF,如果不是,则检查3NF,如果不是,则检查2NF,依此类推。
由于只有两个FD,其中一个(QR→PST)满足BCNF,而另一个(S→Q)满足3NF,因此最高范式为3NF R(P,Q,R,S,T)在3NF。
问题5:给定关系R(A,B,C)和功能依赖关系集FD = {A→B,B→C,并且C→A},确定给定R处于哪种范式?
解决方案:让我们使用FD在R上构造箭头图以计算候选键。
从上面R上的箭头图中,我们可以看到所有属性都由给定FD的所有属性确定,因此我们将检查所有属性(即A,B和C)以查找候选键
让我们计算A的闭包
A + = ABC(根据我们之前研究的封闭方法)
由于闭包A包含R的所有属性,因此A是候选键。
让我们计算B的闭合
B + = BAC(根据我们之前研究的封闭方法)
由于闭包B包含R的所有属性,因此B是候选键。
让我们计算C的闭包
C + = CAB(根据我们之前研究的封闭方法)
由于闭包C包含R的所有属性,因此C是候选键。
因此,三个候选密钥为: AB和C
由于R具有3个属性:-AB和C,因此候选键是AB和C,因此,主属性(候选键的一部分)是ABC,而没有非主属性
给定FD为{A→B,B→C和C→A},而超级键/候选键为AB和C
注意:为解决此类问题,我们应用了逆向工程,即首先检查BCNF,如果不是,则检查3NF,如果不是,则检查2NF,依此类推。
由于只有三个FD且所有FD:{A→B,B→C和C→A}满足BCNF,因此最高范式为BCNF。
因此,R(A,B,C)在BCNF中。
结论:从以上三个示例中,我们可以得出结论,遵循以下步骤可以确定给定关系模式的正常形式。
步骤1:使用箭头图,然后使用R上的属性闭包,计算给定R的候选键,这样就可以从计算出的候选键中分离素数属性和非素数属性。
步骤2:在逆向工程过程中验证每个FD,即首先检查BCNF,如果不是,则检查3NF,如果不是,则检查2NF,依此类推。
步骤3:如果表格位于BCNF中,则该表格位于3NF,2NF和1NF中,类似地,如果表格位于3NF中,则其位于2NF和1NF中。因此,我们可以说,如果表的格式为高标准格式,那么默认情况下,表的格式为低标准格式。
步骤4:首先使用BCNF定义验证FD(首先应在3NF中,并且在两组属性X和Y之间是否存在非平凡的依存关系,使得X→Y(即,Y不是X的子集)那么X是超级键。
步骤5:如果有任何FD,则STEP 5失败(表示该表不在BCNF中),然后使用3NF的定义验证FD和剩余FD(首先应在2NF中,并且两个之间是否存在非平凡的依赖关系)属性X和Y的集合,使得X→Y(即Y不是X的子集),则X是超级键或Y是素数属性
步骤6:如果有任何FD,则STEP 6失败(表示该表不在BCNF中),然后验证FD和具有2NF定义的剩余FD(没有非素数属性应部分依赖于表的键)。
STEP 7:如果有任何FD,则STEP 7失败(表示该表不在2NF中),因此无需检查其1NF,因为默认情况下它在1NF中。
步骤8:如果所有FD都满足BCNF的定义,那么我们可以说给定R在BCNF中,如果任何FD对BCNF失败,并且FD和剩余FD对3NF都满足,那么我们说R在3NF中,如果有任何FD对于3NF失败,并且FD和剩余FD满足2NF,那么我们说R在2NF中,否则表在1NF中。