当表中有两列单独唯一时,它会调用什么?

时间:2015-07-14 16:55:15

标签: sql database-design sql-server-2012 key rdbms

当问题要求我想知道当一行可以由两个单独的列唯一标识时你会称之为什么。

我为我缺乏格式而道歉,但这里有:

ColumnA:1,2,3,4,5

ColumnB:A,B,C,D,E

ColumnC:1,2,1,2,1

ColumnD:A,A,B,B,A

因此,A列和B列都是单独的主键?我不认为这是正确的,所以你会用"键&#34来称呼它?

1 个答案:

答案 0 :(得分:2)

如果您的意思是每一行始终具有唯一的A值,并且每一行始终具有唯一的B值,则每个行都是“超级密钥”。 (实际上,集合{A}和{B}。)

所以答案是,该表有两个单列超级密钥。

但是根据你的数据,任何一个超级键的列都不是一个超级键,每个列也是一个“候选键”。 (唯一较小的集合是{},但根据您的数据,它不是超级密钥。)

所以这里有一个等价的答案,该表有两个单列候选键。

类似的基表可以容纳您的示例数据,其格式为5NF。将其分解为其他表格没有任何好处。

传统上选择候选键作为“主键”。然后彼此一个是“备用钥匙”。但这不是一个特别有用的传统。

在SQL PRIMARY KEYUNIQUE NOT NULL中实际声明了一个超级密钥。每个表只能声明一个PRIMARY KEY。 SQL不允许将{}声明为超级密钥。