2016-08-24 10 views
1

私は日本語で学ぶことすべてを保存するための簡単なウェブサイトを構築しています(個人的な趣味^^)。複数のテーブルが同じテーブルと関係しています

私はいくつかのテーブル、例えばkanjis(授業中のすべての漢字をリストしています)、grammarsnew_wordsを持っています。等。そのようなリストの種類ごとに、各項目(例:漢字の例文、新しい文法や新しい単語など)ごとに1つまたは複数のサンプル文があります。

私の質問はここにあります:上記の項目の種類ごとに別々のexample_sentencesテーブルを用意するか、1 example_sentencesをすべてkanjisnew_grammarsnew_wordsなどと共有することができます。

もう1つ質問があります:1を希望する場合sample_sentencesは再利用できます(たとえば、1つの文が1つの新しい単語または1つの新しい単語と1つの文法メモなどにリンクできます)。この場合 - with多対多 - の関係は、私はまだ1つだけの一般的なsample_sentencesを必要とし、その後kanjisnew_wordsgrammarsの種類ごとにjoin_tableを持っていない...

私はここで2番目の質問(申し訳ありませんが、用の画像を描画私は塗料でそれを描く)

enter image description here

+0

オフィスでは画像が見えません。私は、多対多の提案を追加するための私の答えを編集し、それをチェックし、それがうまくいくかどうかを見ています –

答えて

0

あなたの例のために保存された "マテリアル"は常に文章ですので、同じマテリアルなので、必要なテーブルは1つだけです。


1対多関係では、最初の質問は簡単です。 ただ1つのexampleテーブルは、どのorigテーブルから来るのかを知るための列を持っています。多対多の関係、あなたの2番目の質問で

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テーブルだろうbe:

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の関係が必要になります新しい単語。

関連する問題