重叠的候选键到底是什么?


8

有人可以简单地给我解释一下overlapping candidate key吗?overlapping顾名思义,这是什么意思?

考虑以下关系

R(L,M,N,O,P) 
{
    M -> O
    NO -> P
    P -> L
    L -> MN
}

上面的哪个功能依赖性在上面的关系中带来了重叠的候选键?

让我们将讨论范围限制为依赖项,目前我对BCNF不感兴趣

Answers:


9

您可以使用可能的候选密钥vikkyhacks赚钱。重叠的候选密钥是具有至少一个共同属性的复合(由多个属性组成)候选密钥。因此,您重叠的候选键是NM和NO(它们共享N)。

上面的补充说明,最初留在评论中:

所有重叠的候选密钥是(例如,两个或更多个)候选密钥的组。这意味着第一个标准是您的关系R必须具有多个候选键(最小超级键)。为了使任何候选密钥重叠,它们中的每一个(再次两个或更多)必须满足一些附加条件。1)它们都必须是复合候选密钥。它们必须包含多个属性,因此类似的键A永远不会重叠,但AB可能会与另一个键重叠。2)复合键必须共享一个属性。ABAC和重叠,BD但不与CD或重叠EF

概括起来:两套或多套属性,其中1)每套是关系的候选键(最小超键),2)每套是一个复合键(由多个属性组成),以及3)一个或多个复合键的属性与集合中另一个键的属性重叠。所以,你可以排除MNOPNOPL的基础上,他们是不是最小的superkeys。您可以排除PL基础,他们是不是复合键上(它们由一个属性)。您剩下两个键,NONM,它们共享属性N,所以就完成了。

举个例子,可以使您真正地振作精神也可能会有所帮助。我见过这里您将有重叠的候选键唯一的一次是当你有1)两个属性是功能上确定彼此(例如一对一的关系A,并B在那里A有一个BB有一个A)和2)这些属性是复合候选键的一部分。

例如,在某些系统中,a Customer具有一个CreditCard,而a CreditCard属于一个Customer。在出租表,你唯一标识RentalEquipmentIdDateCustomerId。为了方便起见,您还存储CreditCard了该表。

这意味着以下FD成立:

{CustomerId, EquipmentId, Date} -> {CreditCard}
{CustomerId} -> {CreditCard}

但是由于关联是一对一的,因此以下FD也适用:

{CreditCard} -> {CustomerId}
{CreditCard, EquipmentId, Date} -> {CustomerId}

由于CustomerIdCreditCard可以互换使用,以唯一地标识您的客户。

在上述情况下,候选键重叠:

{CreditCard, EquipmentId, Date}
{CustomerId, EquipmentId, Date}

它们是重叠的,因为它们是复合键(它们包含多个属性),并且因为它们的至少一个属性是共享的(在这种情况下,它们共享EquipmentId和)Date

您说您暂时不在乎BCNF,但要完全带回家,上面的情况就是您偶尔会看到一张桌子的原因,3NF但不是BCNF。上面的表在3NF,但不在BCNF

3NF允许FD,其中1)FD无关紧要2)FD的左侧是候选键,或者3)FD的右侧是键属性(用于制作任何键的属性)。由于CreditCardCustomerId都是关键属性,因此所有FD都满足2或3。

BCNF十分相似,但只允许允许的条件1和2 3NF。由于第三个条件不会被允许的BCNF,都CID -> CCCC -> CID使用条件3,此表是不是BCNF,但它是3NF

出于实际目的,这种情况相当少见,该信息是is脚的。您的桌子有问题的赠品将是在CreditCard/CustomerId桌子上重复配对的事实。您还可能会认识到,如果2NF没有这种罕见的条件,即使在FD的右侧可能是键属性的情况下,该表也不会存在,因为CreditCard它部分依赖于主键(它依赖于CustomerId而不是EquipmentIdDate


4

候选键是构成最小超键的一组属性。如果两个候选关键字A和B具有某些共同的属性,则称它们重叠,即:A∩B是非空的。在您的情况下,MN和NO将是R中的候选键重叠。

由于最低要求(不可约性),一个候选密钥永远不可能是同一关系中另一个候选密钥的子集。因此,对于关系的两个不同的候选键,两个键都必须包含一个以上的属性,即:对于任何一对重叠的候选键,A-(A∩B)必须为非空而B-(A∩B )必须为非空。


1

前三个FD的组合

MNOP -> L

因此MNOP是一个可能的候选密钥CK1。

同样,最后三个FD的组合得出

NOPL -> M

因此NOPL是另一个可能的候选密钥CK2。

但是,CK1和CK2共有NOP列,这使它们重叠了候选键。


1
NOPL和MNOP是超级键,可以候选键PLNO,和NM阿超键有资格作为候选键只有在没有任何小子集。以您的示例MNOP为准,因为其中的最小子集P可以派生关系上的所有其他属性
为准,

-1

要检查某个关系是否具有重叠的候选键依赖项:

检查是否有完整候选键确定候选键的一部分的依赖项。然后,OCK依赖项成立

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.