2016-05-15 2 views
1

English-Deutsch辞書のデータベースを作ってみたい。辞書のデータベースを設計する

私はそれをどのように設計するのか分かりません。

すべての単語が1つの意味を持つ場合、私はちょうど2つのデータベース(英語の単語とDeutschの単語)を持っていて、それらを一緒にリンクします。

私にとっては、片方向の解決でも十分でしょう。だから私はDeutschの仕事を照会し、それにリンクされているすべての英語の単語を得ることができます(しかし、1つの英語の単語は複数のDeutschの単語にリンク可能でなければなりません)。

これはどのように行いますか?私はこれについて間違って考えていますか?

答えて

2

パパラッチィは非常に確定的なanswerを提供していましたが、私はちょうどあなたのデータベースがどのようなものかについていくつかの詳細を追加したいと思います。

あなたが持っている可能性があり:

  • テーブルをドイツ語の英語単語
  • テーブル
  • Aが

は、以下を参照してくださいこれらのテーブルをリンクするテーブルの参加のために:

       +-----------------+       
           | TRANSLATION  |       
           +-----------------+       
    +---------+  +-------| ENGLISH_ID (PK) |    +---------+ 
    | ENGLISH |  |  | DEUTSCH_ID (PK) |-------+  | DEUTSCH | 
    +---------+  |  +-----------------+  |  +---------+ 
    | ID (PK) |<------+         +------>| ID (PK) | 
    | WORD |             | WORD | 
    +---------+             +---------+ 

ドイツ語を見つけるには英語の単語の翻訳(s)は、次のクエリを使用します。ただ、私を確認する

SELECT 
    e.word 
FROM english e 
JOIN translation t 
    ON e.id = t.english_id 
JOIN deutsch d 
    ON d.id = t.deutsch_id 
WHERE d.word = :deutsch_word 
+0

:次のクエリを使用し、ドイツ語のための英語翻訳(複数可)を検索するに

SELECT d.word FROM deutsch d JOIN translation t ON d.id = t.deutsch_id JOIN english e ON e.id = t.english_id WHERE e.word = :english_word 

をこれを取得する - これは、私は単一の '英語'行(必要な場合)、複数の '翻訳'行を持っていることを意味、右か?それ以外の場合は非常にありがとうございます。これは本当に私を助けました。 –

+0

@DavidMašekこのアプローチは本当に柔軟です。他のカーディナリティの中でも、1つの英単語に対して複数のDeutsch単語を持つことができます。 –

1

ちょうどあなたが1持つことができます

EnglishID、DeutschID

の複合キーを持つテーブルを参加さ:0,0:1、1:多くの、多くの:1、または多く:多くの