0

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

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

  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 的表,例如:

表格1:

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

表2:

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

哪个更合适?

4

1 回答 1

0

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

一些原因:

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

  2. 用户对数据非常有创意。您不会只在“7 月 4 日”看到一种变体,而是会看到 100 种变体。

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

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

于 2013-10-14T15:53:33.917 回答