多语言数据库:哪种方法更好?

时间:2013-04-16 23:47:57

标签: php mysql database multilingual

我有一个3种语言的网站。

构建数据库的最佳方法是什么?

1)创建3个表,每个语言一个(例如Product_en,Product_es,Product_de),并从表中检索带有标识符的数据:

e.g。在php页面上我有一个字符串:

$language = 'en'

所以我只获取数据

SELECT FROM Product_$language

2)创建1表:

ID  LANGUAGE   NAME    DESCR

仅在页面上发布

WHERE LANGUAGE = '$language'

3)创建1表:

ID  NAME_EN   DESCR_EN   NAME_ES   DESCR_ES   NAME_DE   DESCR_DE

谢谢!

3 个答案:

答案 0 :(得分:4)

我宁愿选择第二个选项

对我而言,第一个选项似乎不够灵活,无法搜索记录。如果您需要搜索两种语言怎么办?您可以采用的最佳方法是UNION两个SELECT语句的结果。第三个似乎有数据冗余。感觉就像你需要在每个名字上都有一种语言。

第二个非常灵活和方便。除非你想转动记录,否则你可以做任何你想要的操作而不添加一些特殊的方法。

答案 1 :(得分:1)

我会选择一两个选项。哪一个真正取决于您的应用程序以及您计划如何访问您的数据。当我过去做过类似的本地化时,我使用了单表方法。

我对此方法的偏好是,如果添加其他本地化,则根本不需要更改数据库架构。在这种情况下,您也不需要更改相关代码,因为语言标识符只是查询中使用的另一个值。

答案 2 :(得分:1)

这样你就可以在任何时候杀死数据库。

只需要表格如下:

TABLE languages with fields:

-- product name
-- product description
-- two-letter language code

这样,您不仅可以拥有更好的结构化数据库,而且甚至可以拥有只有一个翻译的产品。如果您愿意,如果没有指定其他语言,您甚至可以显示默认语言。你当然会以编程方式做,但我认为你明白了。