我有一个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
谢谢!
答案 0 :(得分:4)
我宁愿选择第二个选项。
对我而言,第一个选项似乎不够灵活,无法搜索记录。如果您需要搜索两种语言怎么办?您可以采用的最佳方法是UNION
两个SELECT
语句的结果。第三个似乎有数据冗余。感觉就像你需要在每个名字上都有一种语言。
第二个非常灵活和方便。除非你想转动记录,否则你可以做任何你想要的操作而不添加一些特殊的方法。
答案 1 :(得分:1)
我会选择一两个选项。哪一个真正取决于您的应用程序以及您计划如何访问您的数据。当我过去做过类似的本地化时,我使用了单表方法。
我对此方法的偏好是,如果添加其他本地化,则根本不需要更改数据库架构。在这种情况下,您也不需要更改相关代码,因为语言标识符只是查询中使用的另一个值。
答案 2 :(得分:1)
这样你就可以在任何时候杀死数据库。
只需要表格如下:
TABLE languages with fields:
-- product name
-- product description
-- two-letter language code
这样,您不仅可以拥有更好的结构化数据库,而且甚至可以拥有只有一个翻译的产品。如果您愿意,如果没有指定其他语言,您甚至可以显示默认语言。你当然会以编程方式做,但我认为你明白了。