【发布时间】:2011-07-21 07:59:57
【问题描述】:
我被分配将数据库迁移到中级 ERP。 新系统到处使用复合主键,从实用的角度来看,为什么?
与自动生成的 ID 相比,我只能看到负面的方面;
- 外键变得模糊
- 更难的迁移或数据库重新设计
- 随着业务变化不灵活。 (我的车没有 reg.plate..)
- 通过约束更好地实现相同的完整性。
又回到了候选键的设计理念,我没看出来。
这是软盘时代的习惯/神器(最小化空间/索引),还是我错过了什么?
//编辑// 刚刚找到好的 SO-post:Composite primary keys versus unique object ID field //
【问题讨论】:
-
@dportas:候选键的意义何在?
-
强制候选键的重点是通过防止重复数据进入系统来确保需要唯一的属性的唯一性。指定和使用候选键的重点是:提供标识符,用户可以通过这些标识符正确识别他们感兴趣的数据;帮助确保数据准确地对应于话语领域;执行业务规则。这些显然是相关且互补的原因,它们共同意味着基本相同的事情:数据完整性。
-
您可以强制一列是唯一的,而不必将其绑定到主键。按照问题中的建议将主键保留为自动生成的 ID,并确保需要具有唯一值的列执行该规则。
-
@dportas:你确定你理解正确的候选键是什么?
-
@JNK:屈尊于
$person关于$subject可能不会让$condescendent走得太远(无论相关知识水平如何)
标签: mysql sql-server database-design