【发布时间】:2011-05-09 17:16:26
【问题描述】:
我想以尽可能少的(大小/性能)成本将用户的性别存储在数据库中。
到目前为止,我想到了 3 个场景
- Int - 与代码中的 Enum 对齐(1 = 男,2 = 女,3 = ...)
- char(1) - 存储 m、f 或其他单个字符标识符
- 位 (布尔值) - 此选项是否有合适的字段名称?
我问的原因是因为answer 提到 chars smaller 比 booleans。
我应该澄清一下,我使用的是 MS SQL 2008,它确实实际上具有位数据类型。
【问题讨论】:
-
FWIW,您引用的那个 SO 问题是指 .NET 如何在内存中表示这些类型。它与 SQL Server 如何表示它们没有任何关系。位 msdn.microsoft.com/en-us/library/ms177603.aspx
-
你使用性别字段做什么?它可以只是一个字符串,所以人们可以输入他们喜欢的内容吗?试图列举对这个问题的所有可能的回答会很棘手。
-
@ThePassenger:我认为通常的选择基本上是 m/f/other,所以是的,像你建议的那样三元就可以了。您可能想要区分“其他”和“未指定”(如“我不告诉”和/或“我们尚未询问用户”)。我不知道性别流动的人想要一个带有每天可以设置的滑块的浮点值;我的猜测是,他们中的大多数人(以及其他非传统性别的人)会很乐意在几乎任何网站上选择“其他”或“未指定”。但是不,我不认为用“性”代替“性别”是个好主意。
-
@PeterCordes 我不太了解“性别流动”,在我的村子里,你要么是男人,要么是女人……要么是母牛。如果流派现在是流动的,那么为计算机的声音创造一个价值尺度似乎有点过分要求。在我的国家,我们宁愿要求性,它不那么复杂。哦,不要相信到目前为止我们还处于石器时代,嗯!我们已经发现了上帝,自上次殖民以来,我们大部分时间都是一神论者。
-
@PeterCordes :由于在当前的政治气候下要求这样的事情会给人们带来优势,让他们比其他人更有优势,只要你包含一个浮动值滑块,就会有人站出来要求一个多维度一。 “只有一个滑块?你在石器时代吗?”
标签: sql database-design