4

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

所以重点是,这个网络将开放给 4 个不同的国家,匈牙利、俄罗斯、法国和美国。

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

我在我的国家(匈牙利)的经历,当他们在 Facebook 上注册时改名时,他们真的很沮丧,所以我想避免这种情况。

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

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

4

2 回答 2

5

如果您工作的每个领域都有一个约定,即每个人都有一个姓氏、一个或多个名字,并且更喜欢将这些名称格式化为特定格式,并且您需要处理名称的各个部分,然后存储这些事实:

Family Name, Given Name,Other NamesPreferred Name Format. 我还建议您让他们输入一个Preferred Name.

你通常Preferred Name用来解决它们的地方,你将Preferred Name Format用来控制组装Family NameGiven NameOther Names以他们的文化可以接受的格式。

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

于 2012-10-09T06:59:43.157 回答
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;
于 2012-10-09T06:57:44.000 回答