SQL数据库结构

时间:2010-02-26 04:00:22

标签: sql database database-design data-modeling

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

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

我在考虑Table1就像

Id

Table2
Id
InterlinkID (Table1 Id)
Word

这会是最好的方法吗?可能有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

1 个答案:

答案 0 :(得分:6)

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

  • id - 主键,整数
  • word - 唯一的字,应该有一个唯一的约束来阻止重复
  • parent_id - 可以为空的

使用parent_id存储要与当前单词关联的单词的ID号。 IE:

id  |  word  |  parent_id
---------------------------
1   | abc    |  NULL
2   | def    |  1

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

对这种关系建模的一种更为明显和灵活的方法是使用两个表:

  1. WORDS

    • id,主键
    • wordvalue
  2. SYNONYMS

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