有人可以简单地给我解释一下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
可以派生关系上的所有其他属性