有人可以简单地给我解释一下overlapping candidate key吗?overlapping顾名思义,这是什么意思?
考虑以下关系
R(L,M,N,O,P)
{
M -> O
NO -> P
P -> L
L -> MN
}
上面的哪个功能依赖性在上面的关系中带来了重叠的候选键?
让我们将讨论范围限制为依赖项,目前我对BCNF不感兴趣
有人可以简单地给我解释一下overlapping candidate key吗?overlapping顾名思义,这是什么意思?
考虑以下关系
R(L,M,N,O,P)
{
M -> O
NO -> P
P -> L
L -> MN
}
上面的哪个功能依赖性在上面的关系中带来了重叠的候选键?
让我们将讨论范围限制为依赖项,目前我对BCNF不感兴趣
Answers:
您可以使用可能的候选密钥vikkyhacks赚钱。重叠的候选密钥是具有至少一个共同属性的复合(由多个属性组成)候选密钥。因此,您重叠的候选键是NM和NO(它们共享N)。
上面的补充说明,最初留在评论中:
所有重叠的候选密钥是(例如,两个或更多个)候选密钥的组。这意味着第一个标准是您的关系R必须具有多个候选键(最小超级键)。为了使任何候选密钥重叠,它们中的每一个(再次两个或更多)必须满足一些附加条件。1)它们都必须是复合候选密钥。它们必须包含多个属性,因此类似的键A永远不会重叠,但AB可能会与另一个键重叠。2)复合键必须共享一个属性。AB与AC和重叠,BD但不与CD或重叠EF。
概括起来:两套或多套属性,其中1)每套是关系的候选键(最小超键),2)每套是一个复合键(由多个属性组成),以及3)一个或多个复合键的属性与集合中另一个键的属性重叠。所以,你可以排除MNOP和NOPL的基础上,他们是不是最小的superkeys。您可以排除P和L基础,他们是不是复合键上(它们由一个属性)。您剩下两个键,NO和NM,它们共享属性N,所以就完成了。
举个例子,可以使您真正地振作精神也可能会有所帮助。我见过这里您将有重叠的候选键唯一的一次是当你有1)两个属性是功能上确定彼此(例如一对一的关系A,并B在那里A有一个B和B有一个A)和2)这些属性是复合候选键的一部分。
例如,在某些系统中,a Customer具有一个CreditCard,而a CreditCard属于一个Customer。在出租表,你唯一标识Rental由EquipmentId,Date和CustomerId。为了方便起见,您还存储CreditCard了该表。
这意味着以下FD成立:
{CustomerId, EquipmentId, Date} -> {CreditCard}
{CustomerId} -> {CreditCard}
但是由于关联是一对一的,因此以下FD也适用:
{CreditCard} -> {CustomerId}
{CreditCard, EquipmentId, Date} -> {CustomerId}
由于CustomerId和CreditCard可以互换使用,以唯一地标识您的客户。
在上述情况下,候选键重叠:
{CreditCard, EquipmentId, Date}
{CustomerId, EquipmentId, Date}
它们是重叠的,因为它们是复合键(它们包含多个属性),并且因为它们的至少一个属性是共享的(在这种情况下,它们共享EquipmentId和)Date。
您说您暂时不在乎BCNF,但要完全带回家,上面的情况就是您偶尔会看到一张桌子的原因,3NF但不是BCNF。上面的表在3NF,但不在BCNF。
3NF允许FD,其中1)FD无关紧要2)FD的左侧是候选键,或者3)FD的右侧是键属性(用于制作任何键的属性)。由于CreditCard和CustomerId都是关键属性,因此所有FD都满足2或3。
BCNF十分相似,但只允许允许的条件1和2 3NF。由于第三个条件不会被允许的BCNF,都CID -> CC和CC -> CID使用条件3,此表是不是BCNF,但它是3NF。
出于实际目的,这种情况相当少见,该信息是is脚的。您的桌子有问题的赠品将是在CreditCard/CustomerId桌子上重复配对的事实。您还可能会认识到,如果2NF没有这种罕见的条件,即使在FD的右侧可能是键属性的情况下,该表也不会存在,因为CreditCard它部分依赖于主键(它依赖于CustomerId而不是EquipmentId或Date。
P,L,NO,和NM阿超键有资格作为候选键只有在没有任何小子集。以您的示例MNOP为准,因为其中的最小子集P可以派生关系上的所有其他属性