📅  最后修改于: 2020-12-13 05:22:44             🧑  作者: Mango
候选密钥是一个超级密钥,没有合适的子集是一个超级密钥,即假设如果ABC是候选密钥,那么A,B,C或其任何组合都不是超级密钥,因此我们可以说候选密钥是一个最小集合R(关系模式)的属性的集合,可用于唯一地标识表的元组。
要么
主密钥的被提名者是候选密钥,例如,移动号码,Aadhar号码,滚动号码都可以充当主密钥的被提名者,因此它们都是候选密钥。
给定以下问题中的关系模式R(X,Y,Z,W),确定超级键和候选键。
步骤1:让我们计算XYZ + = XYZW的闭合度(根据我们先前研究的方法)
由于XYZ闭包确定表的所有属性,因此它是超级键
步骤2:让我们计算XY + = XYZW的闭合度(根据我们先前研究的方法)
由于XY闭合确定表的所有属性,因此它是超级键
步骤3:让我们计算X + = XYZW的闭合度(根据我们先前研究的方法)
由于X闭包确定了表的所有属性,因此它是超级键
正如我们在上面的步骤中所讨论的那样,仅针对超级密钥,而不针对候选密钥。
让我们再次查看“候选密钥”的定义(“候选密钥”是“超级密钥”,没有适当的子集是“超级密钥”)
根据上面的定义, XYZ不是候选键,因为在步骤2和步骤3中,我们发现XY和X也是超级键(即XYZ的子集也是SK,这违反了定义)
XY不是候选键,因为在步骤3中我们发现X也是超级键(即XY的子集也是SK,这违反了定义)
X是候选键:由于X不能进一步细分,或者X不能具有任何子集。
因此XYZ,XY和X都是超级键,而唯一的X是候选键
步骤1:让我们计算XY + = XYZW的闭合度(根据我们先前研究的方法)
由于XY闭合确定表的所有属性,因此它是超级键
步骤2:让我们计算Z + = ZYWX的闭包(根据我们之前研究的方法)
由于Z闭包确定了表的所有属性,因此它是超级键
步骤3:让我们计算W + = WX的闭包(根据我们先前研究的方法)
由于X闭包不能确定表的所有属性,因此它不是Not Super Key ,因为它不是SK,所以它永远不可能是候选键
正如我们在上面的步骤中所讨论的那样,仅针对超级密钥,而不针对候选密钥。
让我们再次查看“候选密钥”的定义(“候选密钥”是“超级密钥”,没有适当的子集是“超级密钥”)
根据上述定义, XY是候选键,如步骤2和3所示,XY的子集(即X或Y都不是超级键)。
Z是候选关键字:由于Z无法进一步细分,或者Z不能具有任何子集。
因此XY和Z为超级键,XY和Z为候选键
步骤1:让我们计算Y + = XYZW的闭合度(根据我们先前研究的方法)
由于Y闭包确定了表的所有属性,因此它是超级键
步骤2:让我们计算XZW + = XZWY的闭包(根据我们之前研究的方法)
由于闭包确定了表的所有属性,因此它是超级键
正如我们在上面的步骤中所讨论的那样,仅针对超级密钥,而不针对候选密钥。
让我们再次查看“候选密钥”的定义(“候选密钥”是“超级密钥”,没有适当的子集是“超级密钥”)
根据以上定义, Y是候选键,因为Y不能进一步细分,或者Y不能具有任何子集。
XZW是候选键:因为没有适当的XZW子集是超级键
因此,Y和XZW是超级密钥,Y和XZW也是候选密钥。
示例1:给出R(X,Y,Z,W)和功能依赖集FD = {X→Y,Y→Z,Z→X}。问题是要计算候选密钥而不是。使用给定的一组FD确定上述关系R中的候选密钥。
让我们使用FD在R上构建箭头图
从上面关于R的箭头图中,我们可以看到属性W不是由给定的FD所确定的,因此W将成为候选关键字的组成部分,即无论候选关键字是多少,候选关键字是多少将为候选键,但全部具有W必选属性。
让我们计算W的闭合
W + = W(根据我们之前研究的方法)
由于W的闭包仅包含W,因此它不是候选关键字。
让我们检查W的组合,即WX,WY,WZ。
a)WX + = WXYZ(根据我们之前研究的方法)
由于WX的闭包包含R的所有属性,因此WX是候选键
b)WY + = WYZX(根据我们之前研究的方法)
由于WX的闭包包含R的所有属性,因此WY是候选关键字
c)WZ + = WZXY(根据我们之前研究的方法)
由于WX的闭包包含R的所有属性,因此WZ是候选键
从候选密钥的定义开始(候选密钥是一个超级密钥,没有适当的子集是一个超级密钥)
我们可以说WX,WY,WZ的任何进一步组合,即WXY,WXYZ,WYZ,WZX将是超级密钥,而不是候选密钥。
因此,存在三个候选键WX,WY,WZ。
示例2:给出R(X,Y,Z,W)和功能依赖集FD = {XY→ZW,W→X}。问题是要计算候选密钥而不是。使用给定的一组FD确定上述关系R中的候选密钥。
让我们使用FD在R上构建箭头图
从R上方的箭头图中,我们可以看到,属性Y不是由给定FD中的任何一个确定的,因此Y将成为候选关键字的组成部分,即无论候选关键字是多少,候选关键字将是多少是候选键,但都将具有Y强制属性。
让我们计算Y的闭合
Y + = Y(根据我们之前研究的方法)
由于Y的闭包仅包含Y,因此它不是候选关键字。
让我们检查Y的组合,即YX,YW,YZ。
d)YX + = YXZW(根据我们之前研究的方法)
由于YX的闭包包含R的所有属性,因此YX是候选键
e)YW + = YWXW(根据我们之前研究的方法)
由于YW的闭包包含R的所有属性,因此YW是候选键
f)YZ + = YZ(根据我们之前研究的方法)
由于YZ的闭包仅包含YZ,因此YZ不是候选键
从候选密钥的定义开始(候选密钥是一个超级密钥,没有适当的子集是一个超级密钥)
我们可以说,YX,YW的任何进一步的组合将是超级密钥,而不是候选密钥。
由于YZ仍然不是候选键,让我们尝试将其组合
YZW(不允许,因为YW已经是CK)
YZX(不允许,因为YX已经是CK)
因此,YZ的任何组合都是不允许的。
因此,有两个候选键YX,YW。
示例3:给出R(P,Q,R,S,T,U)和功能依赖集FD = {PQ→R,R→S,Q→PT}。问题是要计算候选密钥而不是。使用给定的一组FD确定上述关系R中的候选密钥。
让我们使用FD在R上构建箭头图
从R上方的箭头图中,我们可以看到属性QU不是由给定的FD所确定的,因此QU将成为候选关键字的组成部分,即无论候选关键字是多少,候选关键字将是多少是候选键,但是都将具有QU强制属性。
让我们使用FD = {PQ→R,R→S,Q→PT}计算QU的闭合度。
QU + = QUPTRS(根据我们之前研究的方法)
由于QU的闭包包含R的所有属性,因此它是QU候选键。
根据候选密钥的定义(候选密钥是一个超级密钥,没有适当的子集是一个超级密钥)
我们可以说QU的任何进一步组合,即QUP,QUR,QUS,QUT等。
将是超级密钥,但不是候选密钥。
因此。只有一个候选密钥QU。
示例4:给出R(A,B,C,D)和一组功能依赖关系FD = {AB→CD,C→A,D→B}。问题是要计算候选密钥而不是。使用给定的一组FD确定上述关系R中的候选密钥。
让我们使用FD在R上构建箭头图
从上面R上的箭头图中,我们可以看到R中没有任何不确定的属性,即R中的所有属性都由FD中的任何一个确定。现在存在混乱,因为此示例与以上三个示例完全不同。
因此,对于此类问题,我们首先要单独检查所有属性的闭合性,然后牢记候选键的定义将它们组合起来。
让我们使用FD = {AB→CD,C→A,D→B}计算A,B,C,D的闭合
由于以上都不是候选关键字,因此我们尝试组合A,B,C和D,即(AB,AC,AD,BC,BD,CD)
让我们使用FD = {AB→CD,C→A,D→B}计算AB,AC,AD,BC,BD,CD的闭合
由于AC和BD是不构成候选密钥的两个组合,因此,请根据候选密钥的定义,牢记该组合的任何适当子集都不应该是候选密钥,让我们尝试一下它们的组合。
AC和BD的组合是ACB,ACD,BDA和BDC,但是不幸的是,所有组合的子集已经是候选密钥,因此没有一个组合(ACB,ACD,BDA和BDC)符合候选密钥的要求。
因此,有四个候选密钥:AB,AD,BC和CD