多语言翻译

时间:2015-02-04 08:18:31

标签: mysql database sqlite database-design

我正在为多语言翻译设计一个数据库。一个特定的单词可以在另一种语言中有多个单词(如单词的同义词)。

例如,单词a(在language1中) - >字b& c(语言2)。两者都是正确的。 我需要将所有单词存储在数据库中。我研究过ann Schema for a multilanguage database

但我面临的问题是我的话中有很多对很多的映射。 我还提到Good database and structure to store synonyms。 目前这是我的数据库设计

CREATE TABLE Language1 (
  Word_number  int,
  Word int,
  other char(10)
)
CREATE TABLE Language2 (
  Word_number  int,
  Word int
  other char(10)
)
CREATE TABLE Language3 (
  Word_number int,
  Word int,
 other char(10)
)
CREATE TABLE Linkwords (
  Language1_Word_number int,
  Language2_Word_number int,
  Language3_Word_number int
)

尽管语言表看起来很整洁。链接表很乱 例如,如果language3在语言1中有3个单词,则表中的2个条目看起来像

1 1 1,1 1 2, 1 1 3,...

有人可以建议更好的设计吗?

1 个答案:

答案 0 :(得分:1)

我设计的方式如下:

Words
id  // primary key
word  // the word itself

Languages
id   // primary key
langname

LangWords
word_id  // joint primary key
lang_id  // joint primary key
langword   

语言表将包含这样的条目

+----+-------------+
| id | langname    |
+----+-------------+
|  1 | French      |
|  2 | Italian     |
|  3 | German      |
+----+-------------+

我们要说我们要存储“红色”这个词。在表格'字词'中,id = 1,字='红色'。

' langwords'中有三个条目。表

+---------+---------+-----------------+
| word_id | lang_id | langword        |
+---------+---------+-----------------+
| 1       | 1       | rouge           |
| 1       | 2       | aldo            |
| 1       | 3       | rot             |
+---------+---------+-----------------+ 

&langwords'中的记录数量应该是单词数乘以语言数。上述结构允许轻松访问给定语言中的所有单词或每种语言中的相同单词。