多表与同一个表

时间:2016-08-24 14:20:39

标签: sql

我正在建立一个简单的网站来保存我用日语学习的一切(个人爱好^^)。

我有几张桌子,说kanjis(列出课程中的所有kanjis),grammarsnew_words。等等。对于每种类型的列表,我希望每个项目都有一个或多个样本句子(每个汉字字母的例句,每个新的语法或新单词......)

所以我的问题是:我应该为上面的每种类型的项目分别使用example_sentences个表格,还是我可以与所有example_sentenceskanjis分享1个new_grammarsnew_words。等。

这里的另一个问题是:如果我想要1 sample_sentences可以重复使用(例如,1个句子可以链接到1个以上的新单词,或1个新单词和1个语法单注.etc。)案例 - 具有多对多关系,我仍然只需要1个通用sample_sentences,然后为join_tablekanjis,{new_wordsgrammars { {1}} ...

我在这里为第二个问题画了一张图片(对不起,我用油漆画了。)

enter image description here

2 个答案:

答案 0 :(得分:0)

为您的示例存储的“材料”将始终是一个句子,因此它是相同的材料,因此您只需要一个表。

在一对多关系中,你的第一个问题就是这么简单。 只有一个example表,其中有一列可以知道它来自哪个原始表。

ID | Orig     | OrigID |   Sentence
----------------------------------------------
1  | Kanji    | 1      | whatever   
2  | grammars | 1      | whatever
3  | Kanji    | 2      | whatever   
4  | Kanji    | 3      | whatever
5  | grammars | 2      | whatever           
6  | new_words| 1      | whatever    

在多对多关系中,你的第二个问题,这有点复杂

example表将是:

ID |   Sentence                   
--------------------------        
1  | whatever                     
2  | whatever                     
3  | whatever                     
4  | whatever                     
5  | whatever                     
6  | whatever                     

Many-to-Many表将是:

ID | ExampleID| OrigID| Orig     |
----------------------------------
1  | 1        | 1     | Kanji    |
2  | 1        | 1     | grammars |
3  | 2        | 2     | Kanji    |
4  | 3        | 3     | Kanji    |
5  | 2        | 2     | grammars |
6  | 6        | 1     | new_words|

您需要使用Orig + OrigID

的组合来查询此表

答案 1 :(得分:0)

一个例句是一个实体,应该有自己的表。例句可能会有多个“新词”以及多个“语法”因此你会想要一个例子句和语法之间的M-to-M关系,你会想要一个不同的M-to-M关系。新词。