重构数据库以添加对国际化/多语言的支持

时间:2010-01-05 09:22:41

标签: database internationalization

有没有经过验证的方法来重构数据库以支持多个版本的条目?

我有一个很简单的数据库,有一些表格,如:

article(id, title, contents, ...) 
...

如果你只想存储每篇文章的一个版本,这显然就像一个魅力。我记得很清楚地向我的客户询问系统是否应该能够存储不同语言的文章,真的强调以后添加这种支持会很昂贵。你可以猜到当时客户说的是什么..

我目前的方法是创建几个新表,如:

language(id, code, name)
article_index(id, original_title) <- just to be able to group articles

然后在原始文章表中添加一个外键:

article(id, title, contents, article_index_id, ...)

我很想听听您对此方法的评论以及您对该主题的体验。

1 个答案:

答案 0 :(得分:0)

这是我过去成功使用的一种方法。另一种方法是用标识符(int,guid,你想要的任何东西)替换所有文本字段,然后将所有文本字段的翻译存储在一个表中,键入此标识符加上语言ID。

就个人而言,我在第一种方法(即你的方法)方面取得了更大的成功,并且例如通过ORM更容易处理。例如,在我当前的项目中使用NHibernate ORM,我创建了相当于语言感知的会话,它会自动返回每个对象的正确翻译集。这种方法的一致性显然有助于此。