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

这是代码。我希望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)

);

最佳答案

Candidate keys不会在SQL关系数据库中直接显示为单独的类型-它们在RA概念区域中是“左侧”。

但是,Unique Index / Constraint(在一个或多个列上)可用于强制执行候选键基数(并提供对此的有效查找);主键可以看作是这种键的一种特殊形式。

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



话虽这么说.. SSN可以复制(甚至不分配),因此对于通用候选密钥不是一个很好的选择。对于基于个人的系统-特别是对于患者-我只会使用代理密钥(除非有像雇员ID这样的保证稳定的密钥)。让前端找到并解决冲突,并提供一种处理此类重复情况(名称,SSN等)的方法。

另外,根据用例,不要忘记允许与身份未知的患者打交道。

关于mysql - MySQL —添加候选 key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26351546/

10-11 03:30