【发布时间】:2010-09-06 05:06:57
【问题描述】:
我需要创建一个好/中性/坏的字段。哪种方式更容易理解/正确。
- 带有 null 的二进制字段(1=好,null=中性,0=坏)
- int(1=好,2=中性,3=坏)
- 枚举(好、中性、坏)
- 任何其他
这是唯一且信息丰富的字段,我不需要按此搜索。
【问题讨论】:
我需要创建一个好/中性/坏的字段。哪种方式更容易理解/正确。
这是唯一且信息丰富的字段,我不需要按此搜索。
【问题讨论】:
NULL 值应为以下任一者保留:
这两种情况都不是。
我自己会简单地存储一个CHAR 值,这是{'G','N','B'} 集合中的一个。这可能是最简单的解决方案,占用的空间很小,同时仍然提供助记符值(例如,轻松地将“G”转换为“Good”)。
如果您不太关心空间,那么您甚至可以将它们存储为 varchar(7) 或等效值并存储实际值 {'Good','Neutral','Bad'} 以便在您的 select 语句中根本不需要翻译(假设那些是您将要打印的实际值)。
【讨论】:
在 Mysql 中你应该使用枚举类型。您可以选择任何您喜欢的名称而不必担心空间,因为 Mysql 将数据存储为一个短整数。请参阅文档中的10.4.4. The ENUM Type。
【讨论】: