如何构建可交叉引用的多语言词典数据库?

时间:2011-11-08 21:08:36

标签: database-design

此数据库应支持蒙古语,英语,中文之间的三种交叉引用,以及每种语言的字典。

英语编码的信息包括以下内容:Word,IPA发音,定义,例句,复数拼写,复数发音,同义词,反义词,单词类型,学习笔记,中文等价物,蒙古语C.当量,蒙古语S.当量

中文:繁体字,简体字,定义,拼音发音,例句(s),同义词,反义词,HSK测试等级,笔画,部首(s),查找激进,配置测量单词,单词类型,字符的简单解释,字符的深入解释,学习笔记,英语等价物,蒙古语C.等价物,蒙古语S.等效物

蒙古语西里尔语:西里尔字,西里尔字母定义,西里尔字母定义,西里尔字母例子,c。同义词,c。反义词,中文等价,内蒙古语(脚本)等价意思,蒙古语脚本等效拼写,Eng。中国。 EQIV。(S)

蒙古语脚本:脚本,脚本替代结尾,脚本定义,脚本定义,s。同义词,s。反义词词类型,学习笔记,英语。中国。 Eqiv。(s),外蒙古语(西里尔语)等效含义,蒙古语西里尔语等效拼写。

我对数据库很新。起初我考虑为每种语言制作一个表格,但这会使所有复数项目出现问题。 现在我想知道我是否需要为每种语言的每个项目提供一个表格,以确保我不会无法包含我需要的所有信息。我在想,对于每个条目,语言之间的链接将基于它的ID / PK。

  1. 我对数据库有正确的想法吗?
  2. 如果我想要包含这么多信息,那么每个可能包含多个值的项目都需要自己的表,不是吗?
  3. 但是,编辑它应该很容易,只要每个都通过它的PK链接,我可以从一个界面编辑语言(或交叉语言)的所有值,对吗?
  4. 不知道可能有多少条目的问题怎么办?例如,某些单词可能具有比其他单词更多的等价物或更多相同的语言同义词。这是一个问题,还是只是在表格中添加更多列,没问题?

1 个答案:

答案 0 :(得分:4)

我会为所有语言建立统一的结构。这将使维护更容易,并为其编写编辑器。

此外,我会normalize属性,因此您没有很多重复或未使用的列。这也有助于属性可以具有多个值,例如多个定义或多个复数形式。

这就是我要开始的方式,我将打开许多设计决策,例如是否始终使用数字ID,是否强制执行外键约束等等。我已经粗略化了表名和主键(s )。

  • 表: word_language (域表)
    • word_id :一个数字,可能是自动递增。主键,FK到word_attributes
    • language(_id):字符串(例如:“english”),FK into“languages”域表,或两者兼有
    • name(可选,也可以是属性):字符串,单词(例如:“lamp”)
  • 表: word_attributes (一对多)
    • word_id :主键,FK到word_language
    • attribute(_id | _key):FK到“属性”域表,字符串(例如:“复数”),或两者兼有
    • attribute_value:字符串,实际值(例如:“灯”)
  • 表:语言(可选,域表)
    • 语言(_id):自动递增数字或字符串(例如:英语)主键
    • name(可选,如果是id,则使用语言):string(例如:“english”)等
    • (其他描述语言的有用列)
  • 表:属性(可选,域表)
    • 属性(_id | _key):数字或字符串,主键
    • 语言(_id)(可选):可以轻松查找语言的属性,主键的一部分
    • description:描述属性,也许会在编辑工具中显示什么
  • 表:等价物(可选,多对多,也可以是属性)
    • source_word_id :单词主键
    • destination_word_id:使用其他语言的等效词