【问题标题】:MySQL Tri-state fieldMySQL 三态字段
【发布时间】:2010-09-06 05:06:57
【问题描述】:

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

  1. 带有 null 的二进制字段(1=好,null=中性,0=坏)
  2. int(1=好,2=中性,3=坏)
  3. 枚举(好、中性、坏)
  4. 任何其他

这是唯一且信息丰富的字段,我不需要按此搜索。

【问题讨论】:

    标签: mysql enums binary


    【解决方案1】:

    NULL 值应为以下任一者保留:

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

    这两种情况都不是。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2020-12-20
        • 1970-01-01
        • 2012-08-31
        • 1970-01-01
        • 2018-05-05
        • 1970-01-01
        • 2011-11-24
        • 2010-10-30
        • 1970-01-01
        相关资源
        最近更新 更多