拥有单个记录的几个同义词

时间:2013-10-13 21:45:49

标签: database synonym

我有一张表,其中包含学校,公司等的列表,用户可以选择他们的工作地点。如果某人输入的工作场所记录不存在,则会将其添加到表中。但是有一些令人困惑的名字。例如,想象一所名为7月4日的学校。一个人可能会进入“七月四日”,其他人会写“七月四日”。我需要输入这样的名字的同义词,以确保没有工作场所有2个或3个不同的记录(不同的ID)。

我想出了两个不同的想法:

  1. 使用单个表,同义词具有相同的gid(组ID)

    ID      Name              Gid         IsDefaultDictation
    
    1       Google            1              1
    2       4th of July       2              1
    3       Forth of July     2              0
    
  2. 有另一个名为sysnonyms的表,如:

  3. 表1:

    ID      Name
    -------------------------
    1       Google 
    2       4th of July
    

    表2:

    ID        Name                SynonymForID
    ------------------------------------------
    3         Forth of July          2
    

    哪一个更合适?

1 个答案:

答案 0 :(得分:0)

根据经验,我强烈建议如果找不到记录,则不允许用户输入他们想要的内容。官方同义词可能没问题(StackOverflow会为标签执行此操作),但为了您自己的理智,我建议您不要这样做。

一些原因:

  1. 您可能最终会编写一个合并同义词的工具。考虑您可能想要运行的报告和统计信息。想想搜索。所有这些都因同义词而变得复杂。

  2. 用户对数据非常有创意。你不会只看到“7月4日”的一个变种,你会看到其中的100个。

  3. 考虑网络上的其他网站。像Glassdoor这样的东西没有我所知道的同义词。公司只有一个正式名称。搜索引擎可能与官方公司的同义词匹配,但我猜他们实际上并不存储它。

  4. 与一个拥有150万个同义词的表一起工作,我记得与利益相关者合作是很难的。 “只要确保它检查我们的同义词列表!”是我经常听到的。它不具备高性能,并且任何必须处理它的代码都非常复杂。