database - 为字典设计数据库

标签 database database-design

我想为英德词典制作一个数据库。

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

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

即使是一种方式的解决方案对我来说也可能就足够了。所以我可以查询德语作品并获得所有与之链接的英语单词(但一个英语单词仍然可以链接到多个德语单词)。

那么你会怎么做呢?我是不是想错了?

最佳答案

同时 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

关于database - 为字典设计数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37241593/

相关文章:

java - 如何为 Oracle JDBC 瘦驱动程序设置环境变量

ios - 核心数据中的嵌套问题

database - 使用 testcafe 从数据库返回数据集

database - Access 数据库表不断获取不属于它们的汉字

c# - 使用 Linq asp.net c# 在 InsertOnSubmit() 的两个不同表中插入数据

mysql - 从查询使用和查询类型频率测量 MySQL 'load'

mysql - 在 MySQL 中存储不同格式的数字

sql - 构建数据库表的最佳方式是什么?

sql-server - 使用 GUID 作为主键的最佳实践是什么,特别是在性能方面?

sql - 在存储过程中接受多种数据类型