如何在数据库(MySQL)中存储多种语言数据?

时间:2011-10-28 06:10:54

标签: php mysql database-design

我有一个项目表,我们称之为ITEMS。现在我需要以多种语言存储每个项目的名称。我正在寻找最有效的方法来做到这一点。到目前为止,我在下面有这些可能的解决方案,但我真的想因某些特定原因选择一个。

为了提问,让我们保持简单,ITEMS表的结构:

id INT PRIMARY KEY
name VARCHAR(20)

现在,第一个最简单的解决方案可能是在ITEMS表中为每种语言添加列,例如name_english,name_german,name_spanish等......但是在添加新语言时,这可能涉及PHP的大量工作。

第二个解决方案 - 我会创建表LANGS:

id INT PRIMARY KEY,
language VARCHAR(10)

和表格ITEMS_LANGS:

id_items INT
id_langs INT
translated_name VARCHAR(20)

所以每次我都要加入表ITEMS和ITEMS_LANGS,但添加新语言要容易得多。

我应该选择哪种解决方案,或者您有更好的解决方案?在此先感谢,希望我已经详细解释了我的问题。

2 个答案:

答案 0 :(得分:1)

如果符合以下条件,第二个选项会更好:

  • 您需要添加新语言
  • 您需要在数据库的其他字段中支持多语言(在这种情况下,id_items没有任何意义,您需要一个全局实体ID)。

我将通过TEXTS更改ITEMS_LANGS(更通用):

id_text INT
id_entity INT
id_langs INT
translated_name VARCHAR(20)

答案 1 :(得分:0)

我会在开头描述时为ITEMS创建一个表,其中id为主键,然后为每种语言分别使用表(与id作为外键和名称相同)。

这将使您更容易添加不同的语言/删除一些/添加项目,如果名称不存在您需要的语言,则仍然具有后备值...等等...