Database 在数据库中存储名称

Database 在数据库中存储名称,database,database-design,Database,Database Design,我最近开始建立一个小型的社交网络,我对储存这些名字有点迷茫 重点是,这个网络将向4个不同的国家开放,匈牙利、俄罗斯、法国和美国 糟糕的是,如果我想将姓名存储为数据库中的first name,last name,这不是一个好主意,因为,例如,在匈牙利,如果一个阿米杰亚公民注册为Scott Summers,Scott是名,Summers是姓,但在匈牙利语中完全不同,姓是名,姓是名,所以如果Scott是匈牙利语,他的名字应该是这样的:Summers Scott 我在我的国家(匈牙利)的经历是,当人们在

我最近开始建立一个小型的社交网络,我对储存这些名字有点迷茫

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

糟糕的是,如果我想将姓名存储为数据库中的
first name
last name
,这不是一个好主意,因为,例如,在匈牙利,如果一个阿米杰亚公民注册为Scott Summers,Scott是名,Summers是姓,但在匈牙利语中完全不同,姓是名,姓是名,所以如果Scott是匈牙利语,他的名字应该是这样的:Summers Scott

我在我的国家(匈牙利)的经历是,当人们在facebook上注册时,他们的名字发生了变化,这让他们非常不安,所以我想避免这种情况

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


因此,我想征求更有经验的开发人员的意见,如果可能的话,谢谢您

您可以为包含名称的表创建一个视图,并在表本身中存储一个标志。您可以从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;
如果您工作的每个领域都有一个惯例,即每个人都有一个姓氏、一个或多个已知姓名,并且希望这些姓名以特定格式格式化,您需要处理姓名的各个部分,然后存储这些事实:

其他名
首选名格式
。我还建议您让他们输入一个
首选名称

您通常会使用
首选姓名
来称呼他们,并且您会使用
首选姓名格式
来控制将
姓氏
给定姓名
其他姓名
组合成他们在其文化中可以接受的格式


将UI设计为允许用户无误地输入这些内容,留给读者作为练习:-)

您是否要单独处理名称的某些部分?如果不是的话,
全名
似乎并不合理。你为什么不喜欢这种方法?不,全名不是个好主意。它根本不是标准化的——想想按姓氏排序——这种方式是不可能的(或者至少非常昂贵)。你可能还想阅读。谢谢@Damien\u,不信者会检查它的out@Argeman:数据库设计器是否选择将名称存储为“全名”、“名”和“姓”、“首选名”,或者任何其他方式都与规范化无关。谢谢你的回答,我有一个愚蠢的问题(对不起,我喜欢问我没有经验的愚蠢问题),如果我不使用首选名称而添加显示名称,这是一个坏主意吗?@LeventeNagy-是的,这是另一种说法。