我有一个同义词列表,需要为此在SQL中创建一个数据库。

我当时正在考虑使用关系数据库设计,但不知道这是否是最好的。使用该数据库的流量将会很大。

我在想Table1会像

Id

Table2
Id
InterlinkID (Table1 Id)
Word

这是最好的方法吗?可能有1-20个以上的链接词。从该设置中我看到的另一个问题是,如果我有一个单词可以用作多个单词的同义词。

不太好使用它的示例,但是您可以理解:

表格1
ID 1
ID 2

表2
ID 1
InterlinkID 1
一字
ID 2
InterlinkID 1
字1
ID 3
InterlinkID 1
单词优先
4号
InterlinkID 2
第二个字
5号
InterlinkID 2
字2
6号
InterlinkID 2
词第二

最佳答案

对关系进行建模的最简单方法是将其作为具有三列的单个表:

  • id-主键,整数
  • word-唯一单词,应具有唯一约束以阻止重复
  • parent_id-可为空的

  • 使用parent_id存储要与当前单词相关联的单词的ID号。 IE:
    id  |  word  |  parent_id
    ---------------------------
    1   | abc    |  NULL
    2   | def    |  1
    

    ...表明abc是首先添加的,而def是它的同义词。

    建立关系的一种更明显,更灵活的方法是使用两个表:
  • WORDS
  • id,主键
  • wordvalue
  • SYNONYMS
  • word_id
  • synonym_id
  • SYNONYMS表中的两列都是主键,以确保不会重复。但是,它不会以相反的顺序停止重复项。但是,它允许您映射许多组合以使单词之间具有“蜘蛛网”关系,而单个表格格式仅支持层次关系。

    09-28 12:39