我想要这样的数据库设计。它用于以一种语言(即英语)存储单词列表,并以另一种语言(即西班牙语)存储它们的翻译。因此,最初我有一张表格English(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


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

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

西班牙语(id,word,isTranslate)

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

这有意义吗?我遇到的麻烦是,随着用户随着时间的推移提交翻译,如何逐步填充其他两个表Spanish和EnglishSpanish?第一个表English已预加载。

感谢您的见解和帮助。

最佳答案

我曾经设计过一种字典(一对一)关系,就像在现实世界中一样,对于每个英语短语,您只会获得一种最佳翻译:

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


上面设计的也适用于一对多关系

如果您想要多对多关系,则需要2个表:

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

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

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

10-15 08:03