mysql - 如何设计这种多对多的数据库?

标签 mysql database jpa database-design

我想要这样的数据库设计。它用于存储一种语言的单词列表,即英语,以及它们的另一种语言的翻译,即西类牙语。所以最初我有一张英文表(id,word,isTranslated)。

1 i     false
2 love  false
3 you   false
4 hate  false
5 him   false
...

“isTranslated”是一个 bool 值,表示这个词是否有翻译。

在Web前端,每次从表格English中在一个html页面中显示一些单词。例如:

2 love
3 you
4 hate

然后用户单击每个单词并以 Web 表单提交翻译后的单词,这些单词将存储到西类牙语表中。与英语表不同,西类牙语表以零记录开始。它通过 html 表单逐渐填充。

我认为西类牙语表格应该具有与英语相同的结构;

西类牙语 (id,word,isTranslated)

这样我就可以有另一个关联表 EnglishSpanish(English_ID, Spanish_ID),它将翻译后的对存储在两个表中。这是一个多对多的关系。该表的目的是方便检索语言中单词的对应词。

这有意义吗?我遇到的问题是,随着用户随着时间的推移提交翻译,如何逐渐填充其他两个表西类牙语和英语西类牙语?第一个表格英语是预加载的。

感谢您的见解和帮助。

最佳答案

我曾经设计过一个字典(一对一)关系,在现实世界中,你只会为每个英文短语选择一个最佳翻译:

id, term, lang, english_id
1   I     En    1
2   Love  En    2
3   You   En    3
4   我    Cn    1
5   爱    Cn    2
6   你    Cn    3
7   ichi  De    1
...

Above Designed 也适用于一对多关系

如果你想要它作为多对多关系,你需要 2 个表:

id, term, lang
1   xyz   en
2   ...

id1, id2
1    2
1    3
2    5
...

关于mysql - 如何设计这种多对多的数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38822499/

相关文章:

PHP/MySQL : Path Error: [function. require]:无法打开流:

database - MongoDB 中 updateOne 与 findOneAndUpdate 的用例

php - 回滚 MySQL 查询

java - 如何使用连接获取的一个查询来获取父实体及其子实体及其子实体

java - 如何在 JPA/EclipseLink 中使用 "group by"子句查询 select 中的记录数?

计数列的 MySQL 约束

php - 如何在dompdf中创建多个页面

java - 为什么即使值没有改变,JPA 也会将对象标记为脏对象?

javascript - 如何增加 dhtmlxgantt 图表的日期

php 购物车缺货 mysql