列的最佳数据类型,表示枚举类型

时间:2017-09-28 04:33:13

标签: sql database oracle database-design database-schema

我需要将列添加到表中,该表表示另一列中的值的来源。即它是已知起源的枚举值。

表示该值的最佳数据类型是什么?我应该使用整数还是字符串?我意识到最佳设计会将两列都存储在另一个表中,但目前还不可能。

另外,用一些固定值表示未知原点还是null会更好吗?

1 个答案:

答案 0 :(得分:0)

  

“我意识到最好的设计会将两个列存储在另一个表中,但目前还不可能。”

如果无法创建查找表,则需要存储含义。因此,请选择符合其含义的数据类型。也就是说,如果您的枚举为“红色,琥珀色,绿色”,请选择varchar2(5)。使用检查约束将其限制为有效输入。

如果使用整数,则需要将翻译存储在其他位置。数据的含义必须驻留在数据库中。

显然,您需要在填充列的任何UI中复制值列表。这是因为没有创建查找表而产生的技术债务。

  

“用一些固定值表示未知来源还是空更好?”

最好的选择是显式值'unknown'或任何适合的值。下一个最佳选项是null:nulls很混乱并且可能使查询更难写,但是魔术值更糟,因为它们像真实数据一样工作,因此可能导致误导性结果。