如何在记录表中存储人名

5

简介

该死,这比我想象中的要难。

有些人有驼峰式的名字,例如麦当劳奥弗切尔,有些人没有双姓氏,而是像鲍斯-里昂那样使用连字符号作为名字,或者只有给定名字,例如Honovi Hohnihhohkaiyohos(强壮的高背狼)。在某些文化背景下,例如:

  • 在葡萄牙,你有超过一个姓氏和超过一个名字(默认情况下)。
  • 在俄罗斯,你会有一个中间名(父称),它是必须的。

在一些地方存在性别不平等,为了正式称呼一个人,你需要使用前缀,例如:Sir(其中性别可以是男性、女性和中性)。是的,前缀会根据人的年龄而变化。

好像这还不够——人们会结婚(这种情况相当普遍)(他们可能会多次结婚),在至少一个伴侣改变他们的姓氏是一种默认习惯。在大多数地方,人们可以更改自己的名字或至少是给定名字。 alt text

更多细节

如果你想回答问题,这不重要,只是给出我试图做什么的提示。

我想要存储名称的表格位于 XML 中,并使用 App Engine 数据库Twig 对象存储接口(我使用 Twig 等工具编译模式)。数据本身可能来自各个地方,可能存在旧名称的情况(因此需要存储多个名称)。

我的最佳猜测是:

@XmlAttribute @Key protected Long id;
@XmlElement(required = true) final protected List<String> lastName;
@XmlElement(required = false) protected String middleName;
@XmlElement(required = true) final protected List<String> firstName;
@XmlElement(required = true) protected Boolean isMale;
@XmlElement(required = true) protected Date birthday;
//+locale for naming?

编写compareTo方法的函数或前提条件让我很开心...我正在认真考虑0故障容忍度。是的,意思是撇号、空格和其他符号或大小写差异的存在或缺失可能导致不同的结果。(对于愤世嫉俗的人来说 - 这不是作业。)

问题是:如何在记录表中存储人名?


1
+1 如果图片里有一只羊 :-D - Eldad Mor
我对你的问题不太明白的是,为什么你会遇到这样的困难——首先,你的输入来自何处,为什么你需要对确切的表示如此烦恼?使用“名称”列并完成它有何不好呢? - Eldad Mor
我认为这会让我的生活更加困难。例如:我可能需要通过姓名或姓氏搜索人员,对表格进行排序,从模板生成通知,在其中使用类似于“{formal-name}”的标签。不确定它们是否算作有效原因,但对我来说,它们是。 - Margus
2
是的,因为YAGNI,你正在让生活变得更加困难。 - Ishtar
@Ishtar 是的,它被称为“YAGNI DRY KISS”。 - Margus
可能是名字,中间名,姓氏。为什么不是全名?的重复问题。 - Raedwald
1个回答

4
如果你正在寻找一个简单的、通用的解决方案,我认为你会发现没有。请阅读这篇博客文章,然后哭泣。
当你哭泣完毕后,请看一下这份文档,它试图为美国受众建立名称模型。显然,它做出了很多简化假设,这些假设可能是无效的。

老兄,我非常喜欢你的回答。 - Margus
“此文档”链接已经出现了链接失效问题。 - the Tin Man

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接