SQL数据库结构

Bra*_*rad 6 sql database database-design data-modeling

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

我正在考虑使用关系数据库设计,但不知道它是否是最好的.使用此数据库将有相当数量的流量.

我在想Table1会是这样的

Id

Table2
Id
InterlinkID (Table1 Id)
Word
Run Code Online (Sandbox Code Playgroud)

这会是最好的方式吗?可能有1到20个以上的链接词.我从这个设置中看到的另一个问题是如果我有一个单词作为多个单词的同义词.

不太好用它如何使用的例子,但是你明白了:


    Table 1
    Id 1 
    Id 2

    Table 2
    Id 1
    InterlinkID 1
    Word One
    Id 2
    InterlinkID 1
    Word 1
    Id 3
    InterlinkID 1
    Word First
    Id 4
    InterlinkID 2
    Word Two
    Id 5
    InterlinkID 2
    Word 2
    Id 6
    InterlinkID 2
    Word Second

OMG*_*ies 6

建模关系的最小方法是作为一个包含三列的单个表:

  • id - 主键,整数
  • word - 唯一的单词,应该有一个独特的约束来阻止重复
  • parent_id - 可空的

使用此选项parent_id可存储要与当前单词关联的单词的ID号.IE:

id  |  word  |  parent_id
---------------------------
1   | abc    |  NULL
2   | def    |  1
Run Code Online (Sandbox Code Playgroud)

...显示abc首先添加,并且def是它的同义词.

建立关系的更明显和灵活的方法是使用两个表:

  1. WORDS

    • id, 首要的关键
    • wordvalue
  2. SYNONYMS

    • word_id
    • synonym_id

表中的两列SYNONYMS都是主键,以确保不会出现重复.但是,它不会以相反的顺序停止重复.但它允许您映射多个组合以在单词之间具有"蜘蛛网"关系,而单表格格式仅支持层次关系.