如何设计这个多对多数据库?

时间:2016-08-08 06:26:54

标签: mysql database jpa database-design

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

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

" isTranslated"是一个布尔值,表示该单词是否有翻译。

在Web前端,每次在表格英文的html页面中显示多个单词。例如:

2 love
3 you
4 hate

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

我认为西班牙语表格应该与英语表格相同;

西班牙语(id,word,isTranslated)

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

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

感谢您的见解和帮助。

1 个答案:

答案 0 :(得分:0)

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

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
...