0

我对教授在研究候选键时给出的想法感到非常困惑(但我觉得问他是假的:p)

“在不破坏唯一性属性的情况下,不能消除 K 的任何分量 --- 极小性”

我在wiki上搜索它说

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

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

4

1 回答 1

2

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

例子:

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

您可以使用nameorid作为最小键。

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

该列amount本身根本不构成密钥。

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

于 2016-10-31T12:51:55.333 回答