2014-03-26 82 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