多语言网站的数据库设计

时间:2012-09-06 13:01:55

标签: database database-design relational-database

我需要创建支持多种语言的网站,但我从未这样做过,我需要帮助为我的应用程序创建数据库。

网站将是商业,所以我们以ITEM表为例。我唯一可以快速提出的是这个模型,但我不认为这很好,因为语言表与Item表绑定,但我也有公司表,其他也可能。

Item
    ID
    Price

Language
    ID
    ItemID
    Language (example: en-US)
    Field (example: title)
    Value (example: Good Title)

有人可以帮我设计支持多种语言的优秀数据库吗?

2 个答案:

答案 0 :(得分:2)

如何在数据库中存储多语言数据有多种方法,我通常这样做:

Item
  ID
  price
  title_translation_key_id (is a TranslationKey foreign key)
  desc_translation_key_id (is a TranslationKey foreign key)

TranslationKey
  ID
  key (string)

Translation
  ID
  translation_key_id (is a TranslationKey foreign key)
  content (string)
  language_id (is a Translation foreign key)

Language 
  ID
  code

如何检索数据?

您可以使用子选择,或者如果数据库运行不正常,您可以从中生成特定于语言的表。

答案 1 :(得分:0)

另一种可能的方法是将翻译保留为json对象。例如

Item
  Id   Price                       Name
   1    100     {"en":"Car", "fr":"voiture", "am":"մեքենա"}

这非常简单,您无需实现任何联接即可检索数据。但是,您始终必须获得所有翻译。如果您支持多种语言,那可能就不太好了。