如果我在使用MYSQL设计此数据库时犯了错误,请告诉我

时间:2018-05-11 22:20:38

标签: mysql sql relational-database

我的基本要求是我在语言表中有一些语言。然后我用不同的语言添加我的单词和翻译。所以为了存储这些数据我希望我是对的,情况就是一对多的关系。 请看一下图片。 enter image description here

我正在使用正确的设计吗?或者它可能比这更好?有什么建议吗?

2 个答案:

答案 0 :(得分:1)

可以使用以下表格:

  • 语言
    • id(key)
    • 简短文字
  • 术语
    • 语言ID(密钥)
    • id(key)
    • 文本
  • 翻译
    • language_id1(key)
    • term_id1(key)
    • language_id2(key)
    • term_id2(key)

答案 1 :(得分:0)

这是我的建议。 我通常在表名前面添加ID,以便于阅读。显然,您可以使用您喜欢的命名标准。

Language
- LanguageID
- Description

Term
- TermID

Translation
- LanguageID
- TermID
- Text

至于翻译表的密钥,它取决于每种语言允许的翻译量。

如果您允许多个,请添加TranslationID。

如果您只想强制使用一个,请使用LanguageID和TermID的连锁键。见How to properly create composite primary keys - MYSQL

我知道有一个只有一个键的表看起来很奇怪,但这个结构有很多优点。

  • 无论您是从英语翻译还是翻译英语,它都可以让您在进行搜索时只查询一个字段。
  • 如果有一天,您需要在英语以外的语言之间进行翻译,那么您已经设置了。
  • 您可以多次翻译同一个单词,具体取决于其不同的含义。

以下是如何使用它的示例

Language
1 English
2 French
3 Spanish

Term
1

Translation
1 1 Dog
1 1 Hound  -- (if this is allowed, add a TranslationID)
2 1 Chien
3 1 Perro