标志应该只是二进制吗?

时间:2014-05-28 09:10:25

标签: database standards naming

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

我似乎记得曾经读过一些东西,一个标志应该总是二进制,其他任何东西都应该贴上标签,但我可能会弄错。有谁知道我的想法是否正确?如果是的话,你能指点我这方面的任何信息吗?我的谷歌搜索没有任何改变!!

非常感谢:o)

4 个答案:

答案 0 :(得分:0)

标志通常是二进制的,因为当我们说标志时它意味着它是向上(1)或向下(0)。 就像它用于军事上下标记,以显示战争标志。标记的概念取自那里。

关于你在说什么

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

在这种情况下使用 Enum Enumerations 是针对此类情况构建的,或者有时我们所做的是,我们在注释或单独文件中证明这些数值的含义,以便可以保存更多内存(我们使用tinyInt或bit字段)。但永远不要说出这样的情况Flag。

标志具有标准含义,即向上向下。这并不意味着你会得到错误或其他什么,但这不是一个好习惯。希望你明白。

答案 1 :(得分:0)

所有这些都是约定和有效维护数据库/代码的能力。从技术上讲,您可以将名为my_flag的列定义为varchar,并保留"batman""barak obama"等值。

按照惯例,标志为boolean。如果您打算在那里使用其他值,则可能最好将列调用为其他内容,例如some_enummy_code

答案 2 :(得分:0)

很偶然,人们谈论(例如)三州旗,但维基百科和我读过的大多数字典定义都保留了#34; flag"对于二进制/两个状态使用 1

当然,维基百科或任何词典都没有权限来说某些英语用法是"不正确"。 "正确"用法真的是"传统"用法;即其他人说/写的内容。

我认为说或写'三国旗'"是非常规的,但它是明确的,并且有助于充分传达一个概念。 (而且用法可以证明......)


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

答案 3 :(得分:0)

不要打电话给任何东西" flag"。或者"计算"或"标记"或" int"或"代码"。将其命名为代码中的所有其他内容:在其含义之后。

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

请注意,(类似的)yes / no会播放'标记'表明永久二分法的作用。 (代替boolean,它在SQL之外的其余Universe中执行此操作)。因为当规范/合同确实是某些事情是这样的时候。如果设计可能会添加更多值,则应使用其他类型。

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

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}