一个关系中可以有多个候选密钥。但我们能有两个不同长度的候选键吗?
假设我有一个关系r(a,b,c,d,e),我们只有两组唯一标识关系中元组的属性:{a,b,c}和{d,e}。
那么我们可以说{a,b,c}和{d,e}都是候选键吗?
最佳答案
但我们能有两个不同长度的候选键吗?
对。
aCK (candidate key)是一个不包含较小值的超键(唯一列集)。
所以我们有时会说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的定义。
关于database - 关系可以具有不同长度的候选关键字吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45533608/