字典应用的数据库设计

Far*_*ren 10 database database-design

目前我想为移动设备开发字典应用程序.字典本身使用脱机文件/数据库来翻译单词.它只翻译两种语言,例如英语 - 西班牙语词典.我脑子里有一个简单的设计.它将是两个表:英语表和西班牙语表.对于每个表包含:

  • word_id =将成为其他表的外键的id
  • word =这个词
  • word_description
  • correspondence_trans_id =其他表的id,是该单词翻译成其他语言的.

而且由于这是针对移动应用程序,数据库使用SQLite.

每个表的定义数据已按表上的字段'word'顺序提供.但是,如果有数据定义的附加内容,我仍然在考虑这个问题.因为表格将按字段'word'排序,是否有任何方法可以按字顺序放置(插入)新记录?或任何提高效率的想法?

vvu*_*rsT 16

至少每个翻译都有一些翻译可能性取决于上下文.如果你想为两种语言做一个双向字典,你至少需要三个表:

ENGLISH
ID | WORD
1  | 'dictionary'

GERMAN
ID | WORD
1  | 'lexikon'
2  | 'wörterbuch'

TRANSLATION_EN_DE
ID_EN | ID_DE
1     | 1
1     | 2
Run Code Online (Sandbox Code Playgroud)

前两个表包含该语言中已知的所有单词,双向映射由第3个映射表完成.这是一个常见的n:n映射案例.再加上两个表,你总能为你添加一种新语言.如果你用一个表做,你将有一个单词的多个定义,因此没有规范化的数据库.

您还可以将语言表合并到一个表中,该表通过另一列定义单词language(引用语言表).在这种情况下,你需要一个2列索引的语言和单词本身.