在数据库中存储名称

时间:2012-10-09 06:49:14

标签: database database-design

我最近盯着建立一个小型的社交网络,对于存储这些名称我感到有点迷茫和困惑。

重点是,该网络将在4个不同的国家/地区开放,包括匈牙利,俄罗斯,法国和美国。

如果我想将名称first namelast name存储在数据库中,那么不好的部分是,这不是一个好主意,因为,例如,在匈牙利,名称是例如,如果Amirecian Citizen注册为Scott Summers,则Scott是first name而Summers是last,但例如在匈牙利语中它是完全不同的,第一个名字是姓氏,姓氏是第一个,所以如果斯科特在匈牙利,他的名字会是这样的:萨默斯斯科特。

我在我的国家(匈牙利)的经历,当他们在Facebook上注册时,他们的名字被切换时真的很不高兴,所以我想避免这种情况。

我想在表格中给出一个full name字段,但这也不是一个好主意(在我看来)。

所以如果可能的话,我想问一个更有经验的开发者意见,谢谢

2 个答案:

答案 0 :(得分:5)

如果您工作的每个区域都有一个约定,即每个人都有一个姓氏,一个或多个给定的名称,并且希望这些名称以特定格式格式化,你需要处理名称的各个部分,然后存储这些事实:

Family NameGiven NameOther NamesPreferred Name Format。我还建议您让他们输入Preferred Name

您通常会使用Preferred Name来解决这些问题,并且您将使用Preferred Name Format来控制将Family NameGiven NameOther Names汇集到一起在他们的文化中他们可以接受的格式。

设计UI以允许他们无错误地输入这些内容留给读者练习: - )

答案 1 :(得分:0)

您可以为包含名称的表创建视图,并在表本身中存储标志。您可以从SQL中检索全名。例如:

SELECT 
    IF(nametable.last_name_first,
        CONCAT(nametable.last_name,' ',nametable.first_name),
        CONCAT(nametable.first_name,' ',nametable.last_name)) AS fullname 
    FROM nametable;