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

Database 重构数据库以添加对国际化/多语言的支持,database,internationalization,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, ...) 
...
language(id, code, name)
article_index(id, original_title) <- just to be able to group articles
如果你只打算存储每篇文章的一个版本,那么这显然是一种魅力。我记得我非常清楚地问过我的客户,系统是否应该能够以不同的语言存储文章,并强调以后添加这种支持会很昂贵。你大概可以猜到客户当时说了什么

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

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

我很想听听你对这一方法的评论和你在这一主题上的经验

这是我过去成功使用的方法。另一种方法是将所有文本字段替换为标识符(int、guid,任何您想要的),然后将所有文本字段的翻译存储在一个表中,键入该标识符和语言id

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

我认为这是一个几乎相同的问题