【问题标题】:Designing database for a dictionary为字典设计数据库
【发布时间】:2019-12-09 20:27:14
【问题描述】:

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

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

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

即使是一种方式的解决方案对我来说也可能就足够了。因此,我可以查询 Deutsch 作品并获取与其相关联的所有英文单词(但一个英文单词仍应可链接到多个 Deutsch 单词)。

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

【问题讨论】:

    标签: database database-design


    【解决方案1】:

    虽然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
    

    【讨论】:

    • 只是为了确保我明白这一点 - 这意味着我将为单个“英语”行(如果需要)有多个“翻译”行,对吗?否则非常感谢。这对我很有帮助。
    • @DavidMašek 这种方法非常灵活。除其他基数外,它还允许您为一个英语单词使用多个德语单词。
    【解决方案2】:

    只要有一个组合键为

    的连接表

    EnglishID、DeutschID

    您可以有 1:0、0:1、1:many、many:1 或 many:many

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多