6

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

哪种是构建数据库的最佳方式?

1) 创建 3 个表,每个表对应一种语言(例如 Product_en、Product_es、Product_de),并使用标识符从表中检索数据:

例如在 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

谢谢!

4

3 回答 3

4

我宁愿选择第二个选项

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

第二个非常灵活和方便。除非您想透视记录,否则您可以执行任何您想要的操作而无需添加一些特殊方法。

于 2013-04-16T23:56:13.017 回答
1

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

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

于 2013-04-16T23:52:28.793 回答
1

这样,您将立即杀死数据库。

做一个像这样的表:

TABLE languages with fields:

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

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

于 2013-04-16T23:52:59.200 回答