为字典设计数据库

时间:2016-05-15 17:42:08

标签: database database-design

我想为英语 - 德语字典创建一个数据库。

我不知道我将如何设计它。

如果每个单词都有一个含义,我就会有2个数据库 - 英文单词和Deutsch单词 - 然后将它们链接在一起。

即便是单向解决方案对我来说也足够了。所以我可以查询Deutsch的工作并获得与之相关的所有英语单词(但是一个英语单词仍然可以链接到多个Deutsch单词)。

那你怎么做?我是否以错误的方式思考这个问题?

2 个答案:

答案 0 :(得分:2)

虽然Paparazzi提供了一个非常确定的answer,但我想补充一些关于数据库的详细信息。

你可以:

  • 英语单词表
  • Deutsch words的表格
  • 用于链接这些表的连接表

见下文:

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

要查找英语单词的Deutsch翻译,请使用以下查询:

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

要查找Deutsch字词的英语翻译,请使用以下查询:

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

答案 1 :(得分:1)

只需要一个复合键为

的连接表

EnglishID,DeutschID

你可以有1:0,0:1,1:多,多:1,或许多:很多