作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据库中有许多类似枚举的字段。只是一个整数,它是另一个可能包含显示名称或可能包含一些额外数据的表的 FK。问题是,这个数字毫无意义,而且在代码中使用起来也不是很好。此外,如果您尝试合并来自不同数据库的这些枚举中的一些,或者四处移动数据,或者如果它是一个自动增量,您可能会遇到一些名称/键冲突......
只使用短字符串有什么缺点吗?有点像常数?并将其用作主键?一个 int 通常是 4 个字节,我想我真的不需要超过 10 个字符,所以 varchar(10) 就可以了……我不怀疑磁盘使用量真的是个问题。
最佳答案
我个人的方法是对需要更改代码才能添加或删除的项目使用文本键。如果给定的项目是用户应该能够添加或删除的东西,那么我会坚持使用代理键。这允许您的代码使用更容易阅读的文本值。一个例子可能是“状态”(例如开/关、已获取/待定/已出售)。总会有一些代码根据状态采取不同的行为,因此,该代码需要查找特定的状态值。这些“状态”不是任何人都可以简单地添加或删除甚至重命名的东西。代码依赖于它们。因此,对于这些,我使用字符串 PK。但是,用户应该能够随意添加或删除诸如“类别”之类的内容,在这些情况下,代理键(结合适当的业务键)会更好。
关于database-design - 使用短字符串作为枚举而不是 int 的缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5722822/
我是一名优秀的程序员,十分优秀!