将用户名存储为单独的名/姓,还是作为单个全名String?

时间:2010-07-11 03:24:54

标签: google-app-engine

我有一个网络应用程序,我希望用户提供他们的真实姓名,以便朋友搜索。我不确定是将它存储在我的用户类中的两个单独字段中,还是作为单个字段存储:

class User {
    @Persistent
    private String mFirstName;

    @Persistent
    private String mLastName;
}

    .. or ..

class User {
    @Persistent
    private String mFullName;
}

我只会用它来让用户搜索人。例如,他们可能搜索“John”,或“John Doe”或“Doe”。我不确定应用引擎查询引擎允许我们在这里做什么,在部分匹配等方面 - 有没有人经历过这个并且可以推荐一个好的解决方案?我倾向于只存储全名以使搜索更容易,

由于

2 个答案:

答案 0 :(得分:2)

简短回答:存储全名。

长答案here(Falsehoods程序员相信名字,作者Patrick McKenzie)。

  

我将列出您的系统可能对名称做出的假设。所有这些假设都是错误的。

     
      
  • (#1)人们只有一个规范的全名。
  •   
  • (#20)人们有姓氏,姓氏,或其他被公认为亲属的人共享。
  •   

答案 1 :(得分:2)

这不仅仅是关于如何存储名称的问题,还要考虑您在网络表单上询问姓名的方式。

如果你提示第一个和最后一个字段,绝大多数输入可能会符合,但你仍然会有许多例外(前缀,中间名,后缀,标点符号等)。

如果您明确提示使用单独的前缀,名字,中间名,姓氏,后缀字段,则会有更少的例外,但用户可能会感到不安或困惑。

您甚至可以同时提供:简单的单场输入或预先准备的多场输入。探索其他网站所做的事情,看看你是否觉得它们有吸引力/令人困惑/无论如何。

另请注意,如果您输入单独的字段,您可以随时轻松地加入它们,但如果您只输入一个字段,如果您需要稍后解析,则不会有打字员的帮助。