2016-08-24 159 views
1

我正在建立一个简单的网站来保存我在日语中学习的所有东西(个人爱好^^)。多张桌子与同一张桌子有关系

我有几个表,说kanjis(其中列出所有的汉字课),grammars,new_words。等等。对于每种类型的列表,我希望每个项目都有一个或多个示例句子(每个汉字信函的例句,每个新语法或新单词...)

所以我的问题在于:我应该有单独的example_sentences表上面的每个类型的项目,或者我可以共享1 example_sentences与所有kanjis,new_grammars,new_words。等等。

这里的另一个问题是:如果我想要1 sample_sentences可以重复使用(比如说,1个句子可以连​​接到1个以上的新单词,或者1个新单词和1个语法注释等)。一个多到多 - 的关系,我仍然只需要1通用sample_sentences,然后为每个类型的kanjisnew_wordsgrammars一个join_table ...

我画的图像对于这里的第二个问题(不好意思,我用油漆画出来。)

enter image description here

+0

在办公室里,看不到图像。我编辑了我的答案,添加了一个多对多的提案,并检查它是否可行 –

回答

0

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


在一对多的关系中,你的第一个问题,那很简单。 只有一个example表与列以知道它来自哪个orig表。

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

0

例句是一个实体,应该有它自己的表。例句可能会有多个“新单词”以及多个“语法”因此,您希望例句和语法之间存在M到M的关系,并且您希望例句和例子之间存在不同的M到M关系新词。