2016-10-31 62 views
0

我非常學習有關候選鍵時,我的教授給出的主意迷惑(但我覺得假問他:P)數據庫候選鍵中的「最小化」是什麼意思?

「沒有的K組件可以在不破壞 唯一性屬性被淘汰 - - 極小」

而且我搜索了維基,它說

‘有這些屬性,爲(1)成立(這意味着該集是最小的)的無真子集’。它也舉了一個例子,但我不明白。

所以我的問題是什麼是「消滅」在這裏的意思?如果它意味着刪除整行數據,那麼它應該始終保持數據的唯一性(因爲通過刪除一行數據不會失去唯一性)。如果這意味着只刪除K的單個屬性,並留下一行空的「塊」,它看起來很傻,並會破壞數據。因此,有人可以給我,這是什麼性質意味着一些簡單的例子嗎?(也許是一個好一個,一個用於壞的)謝謝〜

+0

您可以將所有功能依賴列添加到候選鍵,而不會丟失其唯一性屬性。你的問題是關於相反的過程:*從密鑰中刪除*這些完全依賴的字段。 – joop

回答

2

「消除」這裏根本不能碰的數據。這僅表示您從密鑰中刪除了一個屬性/列。如果減少的列集合仍然是一個關鍵字(即唯一標識任何數據行),那麼前一個關鍵字不是最小的。

例子:

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

你可以使用nameid作爲最小的關鍵。

您也可以使用[name, id]作爲(複合,多列)鍵。但是這個關鍵並不是最小的(因爲你可以從中刪除一列並仍然有一個鍵)。

本身列amount不使一個關鍵的。

[amount, id]將是一個關鍵,但它再次,它不是最小的。

+0

非常感謝你。我以前不知道複合鍵的想法。感謝您的幫助。我聽到有人認爲候選鍵與主鍵非常接近,並且從候選鍵中選擇主鍵。所以在大多數情況下,它們具有相同的屬性,但主鍵是程序員選擇的屬性,這是真的嗎? –

+0

是的,主鍵只是被指定爲這樣的可能鍵之一。任何其他密鑰都可以用於該功能。 – Thilo

相關問題