1

我们可以在一个关系中拥有多个候选键。但是我们可以在长度不同的关系中有两个候选键吗?

假设我有一个关系 R(A,B,C,D,E),我们只有两组属性,它们唯一地标识关系中的一个元组:{A,B,C} 和 {D,E}。

那么我们可以说 {A,B,C} 和 {D,E} 都是候选键吗?

4

2 回答 2

5

但是我们可以在长度不同的关系中有两个候选键吗?

是的。

CK(候选键)是不包含更小的超键(唯一列集)。

所以我们有时说 CK 是一个“最小”的超级密钥,在这个意义上使用“最小”是指一个特定的超级密钥不能通过删除属性变成更小的超级密钥。这并不意味着可能会想到的其他事情。特别是,这并不意味着一个 CK 的属性比任何其他 CK 少,或者没有比另一个 CK 更多的属性。

您需要了解技术术语的定义。名字不会告诉你任何事情。

在遵循定义时担心您注意到的事情也是没有意义的。跟着它走。

假设我有一个关系 R(A,B,C,D,E),我们只有两组属性,它们唯一地标识关系中的一个元组:{A,B,C} 和 {D,E}。

这是不可能的。如果 {A,B,C} 和 {D,E} 是唯一的,那么它们的所有超集也是唯一的。例如,所有属性的集合总是唯一的,这里是 {A,B,C,D,E}。

大概你的意思是,我们只有两个最小的“唯一标识一个元组的属性集”,即只有两个CK

那么我们可以说 ABC 和 DE 都是候选键吗?

如果这两个唯一集都不包含较小的唯一集,则可以。根据CK的定义。

于 2017-08-07T23:45:09.480 回答
-1

如果需要满足两个要求,为了使行组合成为主键候选者:

a.) 所有列都不能包含 NULL 值。

b.) 组合必须是唯一的。

于 2017-08-06T21:29:39.200 回答