什么是"极简"在数据库候选键中是什么意思?

时间:2016-10-31 12:47:01

标签: sql candidate-key

我对教授在研究候选人钥匙时给出的想法感到非常困惑(但我觉得很难问他:p)

  

"在不破坏的情况下,不能消除K的任何成分       唯一性属性---极简性"

我在wiki上搜索它说

  

"这些属性没有适当的子集(1)成立(这意味着该集合是最小的)。"它也举了一个例子,但我不明白。

所以我的问题是"消除"这意味着什么如果它意味着删除整行数据,那么它应该始终保持数据的唯一性(因为你不能通过删除一行数据来失去唯一性)。如果它意味着只删除K的单个属性并留下一个空的"块",它看起来很傻,会破坏数据。那么有人可以给我一些简单的例子来说明这个属性是什么意思吗?(可能一个是好的,一个是坏的)谢谢〜

1 个答案:

答案 0 :(得分:2)

“消除”这里根本不接触数据。它只是意味着您从密钥中删除一个属性/列。如果减少的列集仍然是一个键(即唯一标识任何数据行),那么前一个键不是最小的。

示例:

name id amount
A    1  1000
B    2  2000
C    3  1000

您可以使用nameid作为最小密钥。

您还可以使用[name, id]作为(复合,多列)键。但是这个键并不是最小的(因为你可以从中删除一个列并且仍然有一个键)。

amount本身并不构成关键字。

[amount, id]将是一个关键,但同样,它并不是最小的。