【问题标题】:How to store persons name in a record table如何将人员姓名存储在记录表中
【发布时间】:2011-05-16 23:49:47
【问题描述】:

简介

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

有些人有 camel-case 名称,例如 McDonaldO'Ferncher,有些人没有 双筒 名称,而是 连字符名称 喜欢Bowes-Lyon 或只是名字,喜欢Honovi Hohnihhohkaiyohos(强壮的高背狼)。在一些文化空间中,例如:

  • 葡萄牙语,您有 超过 1 个 个姓氏和 超过 1 个 个名字(默认情况下)。
  • 俄罗斯您有中间名(patronymic),这是必填

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

这样还不够——人们可以而且将会结婚(这种情况经常发生)(你可能会这样做多次),而且这是至少一个人的默认自定义 合作伙伴更改他们的姓氏。在大多数地方,人们可以更改自己的姓名或至少更改名字。

更多详情

如果你想回答这个问题,这并不重要,只是提示我正在尝试做什么。

我要存储名称的表位于 xml 和 appengine datastore 中,并带有 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 表示里面有羊的照片:-D
  • 关于您的问题,我想念的是为什么您会遇到这样的困难 - 我的意思是,对于初学者来说,您的输入来自哪里,为什么您需要如此烦恼确切的表示?有一个“名称”列并完成它有什么不好?
  • 好吧,不过,我会让我的生活更加艰难。例如:我可能需要按姓名或姓氏搜索人员,对表格进行排序,从模板生成通知,我可以在其中使用如下标签:{formal-name}。不确定你是否算得上正当理由,但对我来说,你这样做。
  • 是的,你让生活变得更艰难,因为 YAGNI。
  • @Ishtar 是的。它被称为“YAGNI DRY KISS”

标签: database-design


【解决方案1】:

如果您正在寻找一个简单、通用的解决方案,我想您会发现没有。阅读this blog posting,然后哭泣。

当你哭完后,看看this document,它试图为美国观众模仿名字。显然它做了很多简化的假设,这些假设可能是无效的。

【讨论】:

  • 老兄,我很喜欢你的回答。
  • “此文档”链接已损坏。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多