📜  候选键

📅  最后修改于: 2020-12-13 05:22:44             🧑  作者: Mango

候选密钥

候选密钥是一个超级密钥,没有合适的子集是一个超级密钥,即假设如果ABC是候选密钥,那么A,B,C或其任何组合都不是超级密钥,因此我们可以说候选密钥是一个最小集合R(关系模式)的属性的集合,可用于唯一地标识表的元组。

要么

主密钥的被提名者是候选密钥,例如,移动号码,Aadhar号码,滚动号码都可以充当主密钥的被提名者,因此它们都是候选密钥。

如何确定候选密钥

给定以下问题中的关系模式R(X,Y,Z,W),确定超级键和候选键。

示例1:给定R(XYZW)且FD = {XYZ→W,XY→ZW和X→YZW

步骤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是候选键

示例2:给定R(XYZW)且FD = {XY→Z,Z→YW和W→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为候选键

示例2:给定R(XYZW)且FD = {Y→XZW,XZW→Y}

步骤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 + = A(来自我们先前研究的方法)由于A的闭包仅包含A,因此它不是候选关键字。
  • B + = B(来自我们先前研究的方法)由于B的闭包仅包含B,因此它不是候选关键字。
  • C + = CA(来自我们先前研究的方法)由于C的闭包仅包含CA,因此它不是候选关键字。
  • D + = DB(来自我们先前研究的方法)由于D的闭包仅包含DB,因此它不是候选关键字。

由于以上都不是候选关键字,因此我们尝试组合A,B,C和D,即(AB,AC,AD,BC,BD,CD)

让我们使用FD = {AB→CD,C→A,D→B}计算AB,AC,AD,BC,BD,CD的闭合

  • AB + = ABCD(来自我们先前研究的方法)由于AB的闭包仅包含R的所有属性,因此AB是候选关键字。
  • AC + = AC(来自我们先前研究的方法)由于AC的闭包仅包含AC,因此它不是候选密钥。
  • A D + = ADBC(来自我们先前研究的方法)由于AD的闭包仅包含R的所有属性,因此AD是候选关键字。
  • BC + = BCAD(来自我们先前研究的方法)由于BC的闭包仅包含R的所有属性,因此BC是候选关键字。
  • BD + = BD(来自我们先前研究的方法)由于BD的闭包仅包含BD,因此它不是候选密钥
  • CD + = CDAB由于CD的闭合只包含R的所有属性,因此CD是候选键。

由于AC和BD是不构成候选密钥的两个组合,因此,请根据候选密钥的定义,牢记该组合的任何适当子集都不应该是候选密钥,让我们尝试一下它们的组合。

AC和BD的组合是ACB,ACD,BDA和BDC,但是不幸的是,所有组合的子集已经是候选密钥,因此没有一个组合(ACB,ACD,BDA和BDC)符合候选密钥的要求。

因此,有四个候选密钥:AB,AD,BC和CD