MySQL Tri-state字段

时间:2010-09-06 05:06:58

标签: mysql enums binary

我需要创建一个好的/中立/坏的字段。哪一种更容易理解/正确。

  1. 具有null的二进制字段(1 =良好,空=中性,0 =差)
  2. 一个int(1 =好,2 =中立,3 =坏)
  3. 一个枚举(好,中立,坏)
  4. 任何其他
  5. 这是唯一且信息丰富的领域,我不需要通过此搜索。

2 个答案:

答案 0 :(得分:2)

应为以下任何一个保留NULL值:

  • 未知数值;或
  • 不适用的值;

这两种情况都不是这样。

我只会自己存储一个CHAR值,其中一个是{'G','N','B'}。这可能是最简单的解决方案,占用的空间很小,同时仍然提供助记符值(例如,很容易将'G'转换为'Good')。

如果您不太关心空间,那么您甚至可以将它们存储为varchar(7)或等效,并存储实际值{'Good','Neutral','Bad'},这样您{{1}就不需要任何翻译了语句(假设这些是您要打印的实际值)。

答案 1 :(得分:0)

在Mysql中你应该使用枚举类型。您可以选择任何您喜欢的名称而不必担心空间,因为Mysql将数据存储为一个短整数。请参阅文档中的10.4.4. The ENUM Type