【发布时间】:2019-12-09 20:27:14
【问题描述】:
我想为英德词典做一个数据库。
我不知道我会如何设计它。
如果每个单词都有一个含义,我就会有 2 个数据库 - 英语单词和德语单词 - 然后将它们链接在一起。
即使是一种方式的解决方案对我来说也可能就足够了。因此,我可以查询 Deutsch 作品并获取与其相关联的所有英文单词(但一个英文单词仍应可链接到多个 Deutsch 单词)。
那么你会怎么做呢?我是不是想错了?
【问题讨论】:
我想为英德词典做一个数据库。
我不知道我会如何设计它。
如果每个单词都有一个含义,我就会有 2 个数据库 - 英语单词和德语单词 - 然后将它们链接在一起。
即使是一种方式的解决方案对我来说也可能就足够了。因此,我可以查询 Deutsch 作品并获取与其相关联的所有英文单词(但一个英文单词仍应可链接到多个 Deutsch 单词)。
那么你会怎么做呢?我是不是想错了?
【问题讨论】:
虽然paparazzo 提供了一个非常明确的answer,但我只想添加更多关于您的数据库可能是什么样的细节。
你可以:
见下文:
+-----------------+
| TRANSLATION |
+-----------------+
+---------+ +-------| ENGLISH_ID (PK) | +---------+
| ENGLISH | | | DEUTSCH_ID (PK) |-------+ | DEUTSCH |
+---------+ | +-----------------+ | +---------+
| ID (PK) |<------+ +------>| ID (PK) |
| WORD | | WORD |
+---------+ +---------+
要查找英语单词的德语翻译,请使用以下查询:
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
要查找德语单词的英文翻译,请使用以下查询:
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
【讨论】:
只要有一个组合键为
的连接表EnglishID、DeutschID
您可以有 1:0、0:1、1:many、many:1 或 many:many
【讨论】: