我有一个带有字段的表First_name
,Last_name
并SSNO
作为主键。如何使全名(名字和姓氏)成为候选键?
我认为我可以使用检查约束来做到这一点,但我不确定语法。
首先,候选键是元组代数中的一个概念,而不是 Oracle 数据库中的一个概念。在 Oracle 中,您要么有主键或唯一约束,要么没有它们。
为了澄清,候选键是一组包含唯一值组合的列,因此这组列可以用作主键。但是因为您已经将 SSN 号码作为主键(仅当您的应用程序在美国境内运行时才可以接受)。因此,您无需创建显式候选键来唯一标识您的行。
还有一点需要注意的是,名字和姓氏的组合不能保证您每次都具有唯一值。也就是说,可能有许多人的名字和姓氏相同。可以肯定的是,去任何监狱检查一下叫 Ray Harris 和 Richard Remirez 的人的记录,你就会知道。即使在你的办公室里,你也会发现两三个名字和姓氏相同的人。因此,将名字和姓氏保留为主键或唯一键是一个坏主意。