您是否将数字或语义标签用作列值?

问题描述 投票:0回答:1

我有某些应“声明”的列,例如“完成”,“未完成”,“正在等待”,“是”,“否”等。我的选择是:

  1. 整数列,记录映射,例如:0 =未完成,1 =完成等...
  2. 字符串列,带有真实单词“ done”,“ not done”等]
  3. 枚举数据类型?问题是,有一些基本原理可以决定使用哪个?整数会节省空间。但是代码将更难阅读,db难以理解,文档更难以维护。值得节省吗?

枚举数据类型结合了1和2的好处吗?

我个人对解决方案2或3的偏好是可读性,但是我不知道在那之后数据库是否看起来很奇怪,或者性能是否是关键点。

database database-design language-agnostic
1个回答
0
投票

在这种情况下,我总是选择解决方案1(整数列),但是此列是新表的外键,其中列出了可能的状态。使用此解决方案:

  • DBMS自动检查有效值。
  • 实际上是在状态表中自我证明的。
  • 使用长状态名占用的空间不会增加很多
  • 避免相同状态的重复名称(完成/完成/完成!/完成)。
  • 之后可以轻松添加新状态。
  • 如果其他表(或同一表中的其他列)需要状态,则可以重用新表。
  • 州/省/州/省/自治区/直辖市/自治区/直辖市/自治区/直辖市/自治区/直辖市/自治区/直辖市/自治区/直辖市/自治区9州,不只是一个简短的名字,还有更多信息:状态的单字母缩写,长和短的名称,何时使用该状态的描述,在列表中显示的顺序等。所有这些都可以是表中的列。状态。
© www.soinside.com 2019 - 2024. All rights reserved.