【发布时间】:2016-11-21 05:44:12
【问题描述】:
我认为没有(自然)备用键的表具有代理键是没有意义的(请记住,代理键的属性之一是它在数据库之外没有意义环境)。
例如说我有下表:
假设employee_id 是代理主键,并且表中没有(自然)备用键。
现在假设某个员工想要更改他的电话号码,我们如何识别该员工在表格中的记录?我们无法使用代理键识别它,因为代理键在现实世界中是未知的(即我们不知道每个员工的employee_id)。
因此,表中必须有一个(自然)备用键来识别现实世界中的每个员工(例如:SSN)。
我是对的,还是我遗漏了什么?
【问题讨论】:
-
但在此设计中,我们希望员工 ID 被称为旧业务流程或新业务流程的一部分,而与数据库无关,因此 是 自然键。 (请参阅我更新的答案“代理”和“自然”。)
标签: database database-design relational-database