我在创建任何信息系统时遇到的最常见问题之一是人们有这么多不同的名字.名叫"比尔史密斯"的人可能选择"威尔史密斯","威廉史密斯","史密斯,威尔"等......如果说,我想编写一个应用程序将博客帖子链接到作者,我将不得不考虑对于所有这些名字.
我的问题是:您采取了哪些方法来保持整个应用程序中的一致数据.如何构建数据库,以便您可以引用单个标识符来查找所有这些名称?您采用哪些UI方法确保人们以一致的方式输入名称?
只要您为每个用户(不是他们的名字)拥有唯一ID,您就可以拥有一个表格,将名称变体映射到唯一ID,然后将每个帖子与该唯一ID相关联.
(Table mapping names to UIDs) Name UID Robert S 123456 Bob S 123456 Bert S 123456 Darren 987654
(Table with post information, including author's UID) Title Author ... Post 1 123456 Post 2 123456 Post 3 987654
(Table with author information) UID Preferred Name Webpage ... 123456 Robert Smith http://www.robert.com 987654 Darren Jones http://www.jones.com
从您的用户只接受一个名称并允许他们使用"昵称"或"公共名称"可能是个好主意.这使他们可以自由地拥有合法的名称,可能用于邮寄或计费,以及用于在您的网站上进行互动的公众可见名称.
除此之外,我不认为我会允许我的用户拥有多个名称,除非我的系统需要它.如果我这样做,我会把它分成两个表:
用户:
userid (例如:1821)
用户名:
userid (例如:1821)
firstName (例如:乔纳森)
lastName (例如:桑普森)
此外,您可以在usernames
表中添加一个名为' isPrimary
' 的字段.这将是一个布尔值,它将告诉您将哪个名称视为用户的主要名称.这与维基百科存储数据/更改历史的方式类似.他们保留所有,但标记"活跃",或在您的情况下"主要".