在说西班牙语的国家/地区,我们使用多个姓氏,例如:
姓氏↙姓氏
Pedro ArturoRodríguezLoyola
中间名↗(?)
我正在尝试为患者姓名建模数据。在我们国家,这很重要,因此我不能忽略第二个名字,但我想构建一个对其他开发人员,尤其是英语国家的开发人员有意义的应用程序。
我在English.SE上创建了一个类似的问题,它对为什么坚持两个价值观很重要有一些见解。
name
字段?
在说西班牙语的国家/地区,我们使用多个姓氏,例如:
姓氏↙姓氏
Pedro ArturoRodríguezLoyola
中间名↗(?)
我正在尝试为患者姓名建模数据。在我们国家,这很重要,因此我不能忽略第二个名字,但我想构建一个对其他开发人员,尤其是英语国家的开发人员有意义的应用程序。
我在English.SE上创建了一个类似的问题,它对为什么坚持两个价值观很重要有一些见解。
name
字段?
Answers:
问:DBA如何计算?
答:0、1,很多
一个人有1个或多个给定名称和1个或多个姓氏,可能还有一个头衔。这些名称具有顺序。由本地化和文化决定如何称呼一个人。
ContactId NamePart {“ John”,“ Smith”,...} NameType {标题,给定,家庭,???} 顺序{1,2,3,...}
对于Pedro Arturo Rodríguez Loyola
(联系人1),您将有四行:
1 /佩德罗/给予/ 1 1 /阿图罗/给予/ 2 1 /罗德里格斯/家庭/ 3 1 /洛约拉/家庭/ 4
这样,它不限于任何给定的结构,但仍然对那里的给定接触有意义。当您给一个姓氏为3或4的人或姓氏时,该怎么办?还是娘家姓?
请注意,我已更改了此答案的先前修订版本中的顺序-该顺序是整个名称的顺序,而不仅仅是名称类型中的顺序,因为在某些文化中,姓氏排在第一位,您可能已经分了标题部分为“约翰·史密斯二世爵士”。
这可能会有所帮助。这篇文章很幽默,但是很有见地。
[名字] [姓氏]不是通用的名称规则。你住的地方很普通。如果您在其中强加规则,迟早会有一些无法添加到系统中的人员。
基本上,请确保施加尽可能少的限制,并在实际存储的名称和任何其他名称之间留出灵活性。
我会选择这样的东西:
例如,由于罗马尼亚语特定的变音符号,我的名字在大多数欧洲语言中均无法正确书写(因此,每当我在祖国以外的地方写下我的名字时,从技术上讲我都会错误地写出该名字,因此人们可以阅读和发音)。
一些有趣的名称示例和链接:
http://en.wikipedia.org/wiki/Nicholas_Barbon
http://en.wikipedia.org/wiki/Prince_%28musician%29
这不是一件复杂的事情.....或者我错过了一些东西。
具有以下字段:name
(varchar),lastname
(varchar)。
然后是一个填写完整名称的表格,例如:Jorge Patricio
和姓氏Pèrez Gonzáles
。
在搜索中,您有许多比较运算符,例如在MySQL中,这样like
可以帮助您查找。
通常情况下,组成的姓氏总是有序的。Pérez González
通常以这种方式说出姓氏,而不是用相反的顺序。
您将以其他方式过度设计数据库。
有三种类型的个人名称:Polynyms(具有多个组成部分的名称),Mononyms(仅具有一个组成部分的名称,例如“ Cher”)和Pictonyms(由图片表示的名称,例如The Artist)。
一个人可以有多个姓名,扮演角色,例如“法定姓名”和“首选姓名”。
一个多义词有几个组成部分,应给定名称和姓氏。有几种姓氏:
第三点很重要,因为预计他将被任命为费尔南德斯·德·卡尔德龙先生,而不是费尔南德斯·德·卡尔德龙·加西亚·伊格莱西亚斯先生。
因此,基本上,有一个必填的姓氏字段和一个可为空的secondarySurname字段。
您如何模拟某人姓名的各个组成部分? 你不。不必为某个人的法定姓名的所有组成部分建模单独的字段,而是为其首选的称呼,称呼,非正式名称,用户名,昵称和句柄建模,而仅对您关心的内容建模。
奇怪的是,您的系统最多只真正关心某人的四个“名称”:
许多系统只会将某人的正式名称用于#1和#2,而您唯一关心的名称是“代表用户名的字符串”和“代表应如何排序的字符串”。
从数据建模的角度来看,仅定义您实际需要的那些值。如何最好地优化这些值的存储是一项实现细节-只有过分优化才会使您头痛。(当然,您“可以”仅存储名字和姓氏,但是对于只有一个名字的人该怎么办?)
让我们以另一种方式来考虑。
您的系统必须连接到其他系统,如果不灵活,则无所谓。那么,您必须使用哪些系统来传输数据?
当我打电话给医生预约时,他们问我我的生日,然后系统向他们显示匹配的人的名单,然后他们问我我的名字,最后问我的地址以确认他们已经选择了正确的人。
当与我交谈时,医生需要知道这个名字的名字。如果他们给我写信,他们还需要知道写在信上的名字。
因此,方法不只是允许空格的单个文本字段。除非您将以相同的方式处理它们,否则甚至没有理由将名字和姓氏分开。
Almodóvar
,而不是Fernando
。