提问人:Glasnhost 提问时间:2/19/2020 更新时间:5/9/2020 访问量:49
您会使用数字或语义标签作为列值吗?
Would you use a numeric or semantic label as column values?
问:
我有一些应该“声明”的列,例如“完成”、“未完成”、“等待”、“是”、“否”等。 我的选择是:
- 整数列,记录映射,例如:0=未完成,1=完成等...
- 字符串列,带有实词“完成”、“未完成”等。
- 枚举数据类型? 问题是,决定使用哪一个是有一定道理的? 当然,整数会节省空间。但是代码将更难阅读,数据库更难理解,文档更难维护。 值得保存吗?
枚举数据类型是否结合了 1 和 2 的优势?
我个人更喜欢解决方案 2 或 3,可读性,但我不知道在那之后数据库是否会看起来很奇怪,或者性能是否会是一个关键点。
答:
1赞
Jojonete
5/9/2020
#1
在这种情况下,我总是选择解决方案 1(整数列),但此列是列出可能状态的新表的外键。使用此解决方案:
- DBMS 自动检查有效值。
- 实际上在状态表中自我记录。
- 占用的空间不会随着州名称的长而增长很多
- 避免相同状态(done/Done/DONE!/finished)的重复名称。
- 之后可以轻松添加新状态。
- 如果其他表(或同一表中的其他列)中需要状态,则可以重用新表。
- 州可以拥有比短名称更多的信息:州的单字母缩写、长名称和短名称、何时使用此州的描述、在列表中显示的顺序等。所有这些都可以是状态表中的列。
评论