只是出于好奇和缺乏明确的答案......
我只是在查看从第 3 方发送给我们的一些数据,他们的“性别”字段是 [0,1],表示女性 (0) 或男性 (1)。
有没有更好的理由使用 [0,1] 而不是 ["F","M"]?
它是否取决于场景和字段与其值之间的直观性?
数据访问速度和/或大小限制?
如果满月?
使用 [0,1] 与 ["Y","N"] 与 ["T","F"] 有什么区别?
只是出于好奇和缺乏明确的答案......
我只是在查看从第 3 方发送给我们的一些数据,他们的“性别”字段是 [0,1],表示女性 (0) 或男性 (1)。
有没有更好的理由使用 [0,1] 而不是 ["F","M"]?
它是否取决于场景和字段与其值之间的直观性?
数据访问速度和/或大小限制?
如果满月?
如果您想混淆您的数据以使其他程序员难以理解,最好使用 0 和 1 而不是 F 和 M。
否则,不,没有优势。
另外,我可以给你一个主要的缺点。 我正在开发一个处理猪的应用程序。公猪和其他一些雄性动物一样,如果它们将被用作食物而不是繁殖,它们会被阉割,因为它可以提高肉质。
该应用程序最初只跟踪男性和女性。但现在我们需要追踪三种不同的性别:雄性、雌性和手推车(阉割猪的术语)。如果有人决定在位字段中使用 0 和 1 来表示性别,那么改变这一点会很痛苦。
我们不是忽略了明显的使用 -> 外键吗?我知道最初的问题暗示了一个位字段,但如果它是真正的数字,0,1 性别列可能指的是性别表吗?
一个主要优点是,如果您的假设发生变化,可以自然扩展允许两个以上值的列。
此外,从哲学上讲,我们对性别/性的概念比在二元领域中的解释要灵活得多。例如,当同性婚姻法通过时,我受雇修复马萨诸塞州的一项主要政府申请,因为当时对婚姻做出了许多假设,但后来都失效了。
除非您想深入了解每个条目的位级别。我的意思是,您可以将 0 或 1 放入一位,而一个字符占用 8 位。在大多数情况下,这是不值得的。
我认为“M”或“F”更清晰,因为它提供了更多的语义信息。
我会在 sql 中创建一个用户定义的类型,或者在 c#/vb 中创建一个枚举类,并将 0,1 存储在数据库中,因为前面提到的大小和速度的原因。
奇怪的是没有人提到过语言。
M/F 英文没问题,但其他语言呢?
然后,您总是可以争辩说应该将另一个表用于列表。
虽然在这里我们正在创建一个复杂的解决方案。
只有当明确只有 2 个选择时,才应该使用位(或布尔)字段。
我的两分钱。
真的没关系。
如果您真的非常非常担心大小限制,[0,1] 会为您节省一些。
嗯,比较 Ints 比比较 Strings 容易一点;在比较字符串时,您必须考虑大写和小写。
性能上的差异将是微不足道的。选择更直观的人类 M/F。
为什么不使用枚举?这使您可以
简短的回答是否定的,因为单个字符占用与整数相同的存储空间。
长答案是这取决于您的应用程序是如何编写的。我曾经写过一个应用程序,它在数据库中有一个性别字段为 0 或 1,因为在应用程序层我有一个枚举,将 Gender.Female 和 Gender.Male 分别映射到 0 和 1 值。
好吧,在 SQL Server 中它肯定很重要。在这种情况下,您应该使用位列类型(1/0 或 True/False - 但是您想说)。与 char(1) 的 1 字节相比,这只是 1 位的存储空间。
对于记录中的标志,我更喜欢“Y”/“N”或“T”/“F”而不是 1/0。
如果您想将标志表述为问题,请使用 Y/N 明确表示“Y”同意正面回答问题,“N”表示否定回答,例如
SHOULD_SPECIAL_DISCOUNT_APPLY - Y or N
如果您想将标志表述为积极的陈述,则 T/F 更清晰。T - 表示该陈述为真,F 表示该陈述为假:
SPECIAL_DISCOUNT_APPLIES - T or F
0 或 1 没有直接映射到 True 或 False - 这取决于它的含义。您不能保证 '1' 表示 True/Yes 而 '0' 表示 False/No - 在电子和软件中并非总是如此,这取决于程序员的一致性以及字段命名的好坏是...
由于性别实际上不是二元的——男性和女性之间存在连续的“双性”条件,以及根本没有性别的人——最好使用浮点类型。0 代表女性(默认值,至少在哺乳动物中),1 代表男性,中间条件为中间值,没有值的为 NaN。
但请记住,这永远不会完全适用,因为人心没有类型。尽管复数通常是一个很好的近似值。
真的取决于数据库。
在阅读了所有这些并做了一些研究之后,我得出的结论是:
[0,1] 字段很有用,因为它是国际性的,当链接到静态定义表时,可以扩展以包含更多子句。
["Y","N"] 和 ["T","F"] 可能在世界范围内都被认可,但与英语有关。
["M","F"] 性别类型字段也是基于英语的,并且在考虑不想提及其性别或性别不确定(雌雄同体)的人时限制使用