2010-02-25 69 views
10

我最近一直在思索名称和我们存储它们的方式。一般来说,一个人将有一个名字,一个名字,一个名字,如果你想特别完整,你可以添加一个后缀字段,甚至可以添加一个标题字段。所以如果有人想成为“Dr. John Q. Public III”,他们可以。但一个人可以有不止一个敬语和多个后缀。对于那个问题,那么也可能会有一个连字符的姓氏。那么,如果你是“John Quintus Maximus Public-Doe III博士MD.RPh。”呢?你可以这样做: 在数据库中存储名称的标准方法

 
Persons 
    PersonID 
    Prefix 
    FirstName 
    MiddleName 
    LastName 
    Suffix 
PersonHonorifics 
    PHID 
    PersonID 
    Honorific 
PersonNames 
    PANID 
    PersonID 
    NameOrder 
但随后它会是一起工作了熊,用它们反正没有一个结束。

是否有一个普遍接受的“标准方式”来存储名称数据?

+0

取决于你的需要。你需要搜索例如。通过名字或组的前缀?你会存储多少个名字?你会对这些名字进行什么样的操作? – aefxx 2010-02-25 16:00:22

+1

你为什么要分别处理尊敬的人?你打算处理一个KG排名在CGB之前的侠义订单吗? – 2010-02-25 16:19:56

+3

@ S.Lott我想要一个独立于需求的学术讨论,它似乎是一个很好的例子,在这里有一个权衡。在你想通过特定凭证组合查询人口的情况下(比如:所有的MCDBAs也是MCITP),那么规范化版本可能比“垃圾场”更受欢迎。 – 2010-02-25 18:10:54

回答

4

我喜欢AD naming style

First Name givenName 
Last Name sn 
Initials initials 
Display Name displayName 
Description description 
Office physicalDeliveryOfficeName 
Telephone Number telephoneNumber 
Telephone: Other otherTelephone 
E-Mail mail 
Web Page wWWHomePage 
Web Page: Other url 
+1

+1:名字,姓氏(用于排序)和显示名称(包括人们喜欢的所有装饰)。并且与其他方式存储关于人的信息。这就是LDAP(和AD)的用途。 – 2010-02-25 16:16:46

+15

+1(用于LDAP)以标准方式封装最需要的字段,-100用于方式不一致的命名('givenName','sn' ......什么?)和奇怪的camelCaps('wWWHomePage'?认真?)。 – 2010-02-28 10:52:12

1

我会通过看vCard标准启动;它需要一点规范化。

2

的标准方法是看你的需求,并把所需的数据。虽然这是一个有趣的学术问题,但事实是,在我工作的几十个系统中,姓和名通常就足够了。有时候我们会存储一个中间的首字母,但大部分时间甚至不需要。

如果你有存储所有约翰Quintus的马克西姆斯公母鹿III博士博士的要求MD。 RPh的信息,然后你为此设计存储。但只要您的姓氏能够提供足够的数据,那么Maximus博士可以尽可能多地或尽可能少地输入他的姓名和头衔。

0

从我的经验,通常是

  • 标题(作为FK,链接出标题表)
  • 用的名字
  • 中间名
  • 上的姓氏(如果需要,赶上已婚妇女的姓名变化)
  • 后缀

别的往往是矫枉过正(除非需要在特定的应用程序)和疼痛管理

1

下面是一个糟糕的主意(见第一个评论):

KISS!释放自己,并使用“FullName”:-)(如果您需要它,字符串中的最后一个单词是“姓氏”)

您可以随时使用:Dear“Fullname”。

你如何处理敬语取决于你的要求和你的观众。你可以收集“称呼”。

+2

一般的坏主意。是的,你可以有一个全名字段,但它应该建立在单独的文件中,否则按姓氏排序或按姓氏排序意味着使用类似'%Smith%'这意味着你可以使用索引。我绝不会只存储全名。 – HLGEM 2010-02-25 16:14:41

+0

好点:-)我改变了答案。 (可能是一些公共Web应用程序,这将是足够好的 - 你应用YAGNI,甚至不收集姓氏(但这不是问题)... – Robert 2010-02-25 16:20:51

+1

不要按“姓氏”排序,问题 – 2016-06-08 02:50:44

1

您应该设计围绕你希望如何使用您的数据存储格式。如果您需要知道名字和姓氏之间的差异,请为每个姓氏和每个姓名添加一列。同样,如果您(或您的企业)关心后缀/前缀/中间名/等等......足以想要以特定方式使用它们(例如发送垃圾邮件的所有客户都是医生),那么请为每个客户提供专栏。但是,如果您需要的只是在报告或电子邮件致敬中识别它们,那么请考虑一种更简单的方法:First_names和Last_Names,然后将其留在那里。

问问自己,你的组织将如何分别存储一个人姓名的每个组成部分将会有什么实际的好处。看看governmentforms,看看有多少information关于他们觉得需要捕捉的人名。

0

除非您正在处理像医生这样的专业人群,您可能需要以易于搜索的方式存储所有后缀(我们通常在此处搜索专业后缀),那么您可以将它们存储在lastname字段或单独的后缀字段中(如果sufffix是一个单独的字段,则会搜索名为smith的所有人更加可靠)。但用逗号分隔列表。前缀相同。我建议名字,姓氏和中间名(有助于区分dups,如果没有提交,即使用户知道,也不太可能存在)通常是能够正确搜索和报告数据的必要条件。我wopuld还建议一个计算字段,它格式化您的电子邮件的方式显示全名。等

13

有时你只会认为你知道你的要求。图书出版业有一个名为ONIX的信息标准,它使用以下内容。有趣的是,第一和中间的名字被合并成一个字段。

    名之前
  • 标题(例如:教授亲王殿下,圣)
  • 名之前的键名(名字和/或中间有大写字母 - 例如:布伦丹JE)
  • 前缀键名(例如:面包车,如贝多芬)
  • 按键名称(姓)
  • 名称后键名(例如:易卜拉欣在安瓦尔·易卜拉欣)
  • 后缀键名(例如:JR,III)
  • 合格fications和荣誉键名后(例如:MB,博士)
  • 标题后的名称(例如:爱丁堡公爵)
+0

喜欢这个,因为它在国际上有效,并且找到了实际文件的链接:http://www.editeur.org/93/Release-3.0-Downloads/#Specification – danielson317 2014-09-04 20:52:04

+0

哇,这太好了,可以用这个一个我自己。 – 2015-07-28 17:42:43