MySQL - 添加候选键

时间:2014-10-14 01:59:56

标签: mysql database

我有一个包含多个表的数据库,对于其中两个表,我有一个候选键和主键。我知道候选键没有语法,所以我该如何表示呢?

这是代码。我希望SSN成为Patient和Employee的候选键。我该怎么办?感谢。

create table Employee(
ID int(8),
Fname varchar(20),
Lname varchar(20),
SSN char(11),
Specialty varchar(15),
dateofHire date,
primary key(ID)

);

create table Patient(
num int(8),
Fname varchar(20),
Lname varchar(20),
SSN char(11),
dateofBirth date,   
primary key(num)

);

1 个答案:

答案 0 :(得分:1)

Candidate keys 直接在SQL关系数据库中作为单独的类型显示 - 它们是" left"在RA概念区。

但是,Unique Index / Constraint(超过一列或多列)可用于强制执行候选键基数(并提供有效的查找);其中主键可以被视为此类的专门化。

(它必须是唯一索引来建立基数;非唯一索引不能。)


话虽如此.SSN的可以重复(甚至不分配),因此不是通用候选键的绝佳选择。对于基于人的系统 - 以及特别是的患者 - 我只会使用代理键(除非有像员工ID一样的保证稳定)。让前端找到并解决冲突,并提供一种处理这些重复案例(名称,SSN等)的方法。

此外,根据使用情况,不要忘记与那些尚未知晓身份的患者打交道。