可能重复:
Surrogate Vs. Natural/Business Keys
如果给定两个表,Level1 ID、标题、数字Level2 ID、FKID??、标题、编号
系统的用户知道Level2与Level1的关系是基于等级1的数字,我的问题是,您是根据内部ID来建立关系并“模拟”与“数字”的关系,还是简单地使用“数字”字段来完成?
发布于 2010-01-19 17:18:03
在数据库ID而不是自然ID上关联的两个标准原因是:
很难保证在任何circumstance
发布于 2010-01-19 17:19:14
我想这件事已经被报道过很多次了。
使用标识/AUTONUMBER作为外键几乎总是安全的.
大多数自然键可以被复制(即使是错误的)。
在我的国家,我们甚至有问题的个人身份证号码的人X-)。
发布于 2010-01-19 17:20:38
如果'Number‘列可以以自然的方式将两个表关联起来,我就不会强制使用基于内部(代理项)键的关系。
一方面,'Number‘列可能足够好,所以您不会在ID列上浪费空间。另一方面,如果'Number‘列没有正确的特征(可能会改变,可能很难索引,等等),那么代理项ID可能是一个更好的选择。
这一切归结为'Number‘列的语义。
https://stackoverflow.com/questions/2095388
复制相似问题