作为主键的列的内容是否应该是可解释的或纯粹唯一的整数

时间:2016-09-07 21:03:00

标签: database

我可以从头开始设计数据库。设计列作为唯一键时,我应该使用唯一的整数,还是应该尝试使值可解释。因此,如果我在医院中有一个病房名称的查找表,那么id列是否包含与病房名称或仅仅是唯一整数有关的唯一代码?

2 个答案:

答案 0 :(得分:1)

抵制带有意义的id值重载的诱惑。使用其他属性来存储您正在考虑填入ID的信息。

使用"意思"重载id。是坏事,因为:

  • 如果填入ID的数据发生变化,您的ID也必须更改。 ID 永远不会更改
  • 如果数据 type 的数据发生变化,您将遇到问题,例如:
    • 如果您的ID是数字,并且填充的信息会从数字更改为文本,那么您将遇到大问题
    • 如果填充数据从简单字段更改为一对多子项,则模型将中断
  • 你认为有什么重要的"现在意义可能在将来不重要。然后你的"特别编码"数据将变得无用和负担,甚至是严重的限制
  • 目前"标识"随着业务的发展,产品可能会发生变化

如果多次尝试过这个想法,那就永远不会成功。在每种情况下,该想法都被删除,并引入surrogate IDs来替换神奇的ID,并承担与该任务相关的所有风险和开发成本。

在我的职业生涯中,已经看到上面列出的大多数问题确实发生了。

答案 1 :(得分:0)

您不应该使用查找表。使表格成为innodb并使用参照完整性将表连接在一起。您的id列应始终设置为primary列,并应设置为auto increment。永远不要试图弥补自己的ID。您应该查看有关参照完整性的一些教程,并学习如何将表与其他表相关联。