我可能在这里犯了迂腐,但是说我在数据库中有一个字段,当前有两个值(但将来可能包含更多)。我知道我可以将其命名为包含值0和1的标志(例如MY_FLAG),但是如果需要更多值(例如0,1,2,3,4),将字段称为标志仍然是正确的吗? / p>
我似乎记得曾经读过一些东西,一个标志应该总是二进制,其他任何东西都应该贴上标签,但我可能会弄错。有谁知道我的想法是否正确?如果是的话,你能指点我这方面的任何信息吗?我的谷歌搜索没有任何改变!!
非常感谢:o)
答案 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_enum
或my_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}