复合候选键

时间:2013-11-05 22:24:47

标签: sql database oracle

我的表格中包含First_nameLast_nameSSNO字段作为主键。如何将全名(第一个和最后一个)作为候选键?

我认为我可以使用检查约束来执行此操作,但我不确定语法。

1 个答案:

答案 0 :(得分:0)

首先,候选键是元组代数中的概念,而不是Oracle数据库。在Oracle中,您可能有主键或唯一约束,或者您没有它们。

为了澄清,候选键是一组包含唯一值组合的列,因此这组列可用作主键。但是,因为您已经将SSN号码作为主键(仅当您的应用程序在美国境内运行时才可接受)。因此,您无需创建显式候选键来唯一标识行。

还有一点需要注意的是,名字和姓氏的组合不能保证每次都有唯一的值。也就是说,可能会有许多人使用相同的名字和姓氏。只是为了确定,去任何监狱,检查名为Ray Harris和Richard Remirez的人的记录,你就会知道。即使在你的办公室里,你也会发现两三个人的名字和姓氏相同。因此,将名字和姓氏保留为主键或唯一键是个坏主意。