2014-03-26 130 views
0

我目前正在努力研究數據庫,並遇到超級密鑰的概念,這讓我有點困惑,有人可以幫助定義超級密鑰實際上是什麼?就我的理解而言,超級鍵是表格中使列組唯一的列,是嗎?數據庫 - 超級密鑰

可以說我有三個表,客戶賬戶和交易 他們每個看起來像下表:

enter image description here

將「CID」爲客戶超密鑰?或者有不止一個? 哪個superkey違反了表格?據我瞭解{num,type,desc}違反了ACCOUNT,因爲表中沒有明確的列,這是正確的嗎? TRANSACTION如何?

最善良的問候,

KRS

回答

2

甲超密鑰是(簡單地)的一組屬性(列)爲其中有沒有重複。換句話說,這是唯一密鑰所需的一組列。

在客戶表中,最小的超級鍵將是cid

它不能是name,因爲有兩個人叫吉爾,它不能是phone,因爲傑克和一個吉爾顯然是在同一個房子裏一起打架。

在交易表中,假設您不允許每秒超過一筆交易,那麼最小超級密鑰很可能是cid+num+time

+0

感謝您的快速響應。 只是幾個簡單的問題。超級鍵和最小超級鍵是同一件事嗎?另外,關係可以有多個超級鍵嗎?所以例如或TRANSACTION的超級鍵將是{cid + type + time}和{num + type + time}和{cid + time} –

+1

@贊,不,最小的超級鍵是列的最小集合, 。根據定義,任何包含最小超級鍵的組合都是超級鍵本身。所以'cid'和'cid + name'都是超級鍵,因爲它們都不可能重複。這也回答了你的第二個問題,關係中可以有多個超級鍵。這些特定的例子是否是超級密鑰取決於對數據的限制,例如,如果每個客戶在同一類型上每時間單位允許五筆交易,'cid + type + time'不是超級密鑰。 – paxdiablo