【问题标题】:Should flags only be binary?标志应该只是二进制的吗?
【发布时间】:2014-05-28 09:10:25
【问题描述】:

我可能在这里犯了迂腐的错误,但假设我在数据库中有一个字段,当前有两个值(但将来可能包含更多值)。我知道我可以将其命名为包含值 0 和 1 的标志(例如 MY_FLAG),但如果需要更多值(例如 0、1、2、3、4),将字段称为标志仍然正确吗?

我似乎记得以前读过一些东西,标志应该始终是二进制的,其他任何东西都应该更合适地标记,但我可能弄错了。有谁知道我的想法是否正确?如果是这样,你能给我指点这方面的任何信息吗?我的谷歌搜索没有任何结果!

非常感谢:o)

【问题讨论】:

    标签: database standards naming


    【解决方案1】:

    标志通常是二进制的,因为当我们说标志时,它意味着它是 up(1) 或 down(0)。 就像它在军事上用来上下旗帜以显示战争迹象一样。标记的概念就是从那里得到的。

    关于你在说什么

    "your words : values be required (e.g. 0,1,2,3,4)"
    

    在这种情况下使用 Enum枚举是为这种情况构建的,或者有时我们所做的是,我们在 cmets 或单独的文件中证明这些数值的含义,以便可以节省更多内存(我们使用 tinyInt 或位字段)。但永远不要将这种情况命名为Flag。

    标志的标准含义是 UpDown。这并不意味着你会得到错误或其他东西,但这不是一个好习惯。希望你能明白。

    【讨论】:

    • 感谢您的回复!我已经考虑过枚举,但认为 MY_ENUM 在我需要使用它的上下文中可能有点模棱两可(不会详细说明)。我现在没有使用 _FLAG,而是选择了与其支持的业务规则更相关的东西。
    【解决方案2】:

    这完全取决于约定和有效维护数据库/代码的能力。从技术上讲,您可以将名为my_flag 的列定义为varchar,并保存"batman""barak obama" 之类的值。

    按照惯例,标志是boolean。如果您打算在其中使用其他值,最好将该列称为其他名称,例如 some_enummy_code

    【讨论】:

      【解决方案3】:

      人们偶尔会谈论(例如)三态标志,但我读过的维基百科和大多数字典定义都为二进制/两态使用保留“标志”1。 p>

      当然,维基百科或任何字典都没有权威说某些英语用法是“不正确的”。 “正确”的用法确实是“常规”的用法;即其他人说/写的内容。

      我认为说或写“三州旗”是非常规的,但它是明确的,并且可以充分传达一个概念。 (而且使用是合理的......)


      1 - 大多数,但不是全部;见http://www.oxforddictionaries.com/definition/english/flag

      【讨论】:

        【解决方案4】:

        不要称任何东西为“旗帜”。或“计数”或“标记”或“整数”或“代码”。像代码中的其他所有内容一样命名它:按照它的含义。

        workday {mon..fri}
        tall {yes,no}
        zip_code {00000..99999}
        state {AL..WY}
        

        请注意,(类似的)是/否扮演了指示永久二分法的“标志”角色。 (代替布尔值,它在 SQL 之外的其他宇宙中执行此操作)。因为当规范/合同真的是某事是否如此时。如果设计可能会添加更多值,您应该使用不同的类型。

        当然,如果您想为名称添加更多信息,您可以。如果可以的话,添加有意义的区别。

        workday {monday..friday}
        workday_abbrev {mon..fri}
        is_tall {yes,no}
        zip_plus_5 {00000-99..99999-99}
        state_name {Alabama..Wyoming}
        state_2 {AL..WY}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-16
          • 1970-01-01
          • 1970-01-01
          • 2011-09-18
          相关资源
          最近更新 更多