名称IsFemale是否适合数据库列?

时间:2009-04-08 20:36:59

标签: naming-conventions

只需浏览我们的数据库架构,找到一个名为'IsFemale'的字段

这个名字好吗,还是有点可笑?

12 个答案:

答案 0 :(得分:44)

如果可能,你应该坚持ISO standard

  

ISO / IEC 5218 信息技术 - 代表人类性别的代码是一种国际标准,通过语言中性的单个数字来定义人类性别的表现形式码。 ...

     

ISO / IEC 5218中规定的四个代码是:

     
      
  • 0 =未知,
  •   
  • 1 =男,
  •   
  • 2 =女性,
  •   
  • 9 =不适用。
  •   
     

该标准规定其使用可由指定人员“SEX”引用。

答案 1 :(得分:27)

女性和男性不是互相排斥的,所以你必须为变性人,男女皆宜等提出一些东西。

要使其尽可能实现企业化,请创建GenderTypeID列:

GenderTypes
-----------
GenderTypeID  Name     Greeting

      1       Male     Dear Sir
      2       Female   Dear Madam
      3       Unisex   Dear Sir and Madam
      4       Unknown  Dear Sir or Madam
      5       Android  Dear Artificial Life Form

......等等。

答案 2 :(得分:6)

也许命名列“性别”(带有'M','F'的字符)会让我更“敏感”。

答案 3 :(得分:6)

嗯,典型的事情就是拥有“性别”专栏,但最终可能会有无能为力的客户尝试将其值设为“每周两次”。

其他问题是它依赖于语言。例如,在英语中,M表示 M an,而在西班牙语中,它可能表示 M ujer(女性)。

答案 4 :(得分:3)

isFemale表示您的架构存在更大的问题,类似的应该是概括的,或者甚至可以归一化:

就像,在你的桌子上有一个性别栏,这是性别表的FK:

---------------------
| ID   | Type       |
|-------------------|
|   1  | Male       |
|   2  | Female     |
|   3  | Yes Please |
---------------------

注意,除非你计划支持不寻常的性别,否则实际上不要这样做,这很愚蠢。我仍然认为通用列比isFemale位更好。

答案 5 :(得分:2)

很明显,提问者(正确地)关注数据库设计师未能将价值中立的语言考虑在内。

(请注意,政治上正确的(正确地)不再被视为被接受的,价值中立的语言。)

作为一名计算机设计师,您有义务确保您的设计不会无论是否包含或传播性别偏好或优越性。

虽然设计师可能天真地假设IsFemale会给女性一个1,因此更高/更高的值,但真值通常给出值-1。更不用说0是神圣价值的文化。

在下周的文章中,我们将介绍两性人和同性恋理论及其对变量命名标准的影响。

答案 6 :(得分:1)

你是否只需要检查“IsFemale”是真还是假?

像“PersonType”这样的列不是更合适吗?这样,你就可以拥有“女性”,“男性”,“公司”等等 - 更多可能的价值观。

马克

PS:但是如果你选择使用“位”(布尔)列,那么“Is”或“Has”前缀是一个不错的选择,在我看来 - 很明显它是一个布尔值!

答案 7 :(得分:1)

经典的“性”和支持子类型如M,F等有什么问题......

答案 8 :(得分:1)

我曾经使用过的每个数据库都使用了一个名为Gender的列名,其中0表示女性,1表示男性。我一直认为这些值的分配方式与电子设备的连接器被描述为女性或男性的方式大致相同。

IsFemale是否可笑取决于系统的意图,但它似乎确实将应用程序绘制成了一个角落。例如,性别字段可以增长以容纳额外的“类型”,但IsFemale显然只会变得真实或错误,因此根本不可扩展。

答案 9 :(得分:0)

Gender似乎是一个更好的选择,但如果您想要或需要使用布尔列,则只有两个选择 - IsMale或IsFemale。

答案 10 :(得分:0)

如果你问这是否可笑,那取决于。男人会变得更好吗? (开个玩笑!)

我的猜测是,设计数据库的人会想到女性的特殊商业规则,并以这种方式设计。

真正没有理由说男性应该是真的,女性应该是假的,并且您的数据库可能在使用字符和字符比较时效率较低。

从编程的角度来看,避免表中的布尔值是有意义的,因为避免函数参数中的布尔值是有道理的。

答案 11 :(得分:0)

对于没有性歧义的简单系统,我使用IsMale。如果您的要求包括双性人,则可以选择使用查找表。如果你只有男性和女性,使用布尔值以外的任何东西都会给系统带来不必要的复杂性和模糊性。