我有一张表,其中包含学校,公司等的列表,用户可以选择他们的工作地点。如果某人输入的工作场所记录不存在,则会将其添加到表中。但是有一些令人困惑的名字。例如,想象一所名为7月4日的学校。一个人可能会进入“七月四日”,其他人会写“七月四日”。我需要输入这样的名字的同义词,以确保没有工作场所有2个或3个不同的记录(不同的ID)。
我想出了两个不同的想法:
使用单个表,同义词具有相同的gid(组ID)
ID Name Gid IsDefaultDictation
1 Google 1 1
2 4th of July 2 1
3 Forth of July 2 0
有另一个名为sysnonyms的表,如:
表1:
ID Name
-------------------------
1 Google
2 4th of July
表2:
ID Name SynonymForID
------------------------------------------
3 Forth of July 2
哪一个更合适?
答案 0 :(得分:0)
根据经验,我强烈建议如果找不到记录,则不允许用户输入他们想要的内容。官方同义词可能没问题(StackOverflow会为标签执行此操作),但为了您自己的理智,我建议您不要这样做。
一些原因:
您可能最终会编写一个合并同义词的工具。考虑您可能想要运行的报告和统计信息。想想搜索。所有这些都因同义词而变得复杂。
用户对数据非常有创意。你不会只看到“7月4日”的一个变种,你会看到其中的100个。
考虑网络上的其他网站。像Glassdoor这样的东西没有我所知道的同义词。公司只有一个正式名称。搜索引擎可能与官方公司的同义词匹配,但我猜他们实际上并不存储它。
与一个拥有150万个同义词的表一起工作,我记得与利益相关者合作是很难的。 “只要确保它检查我们的同义词列表!”是我经常听到的。它不具备高性能,并且任何必须处理它的代码都非常复杂。