使用多语种数据库的视图

时间:2015-04-09 10:07:36

标签: php mysql sql-server laravel multilingual

这是一个经过多次讨论的主题,它总是依赖于这种情况,但我想分享我的想法。

我正在构建一个必须支持多语言应用程序的新CMS,并且可以安装在现有应用程序之后。

我知道并找到的解决方案是:

[Product]
id
price
name_en
name_de
name_fr

only getting the fields you need in your language.

或使用像:

这样的mutliple表
[product]
id
price

[languages]
id
tag

[product_translation]
product_id
language_id
name

 Joining the correct language

这两种情况都有效,并且有其优点和缺点。根据您的选择,您必须重写您的查询。

我的想法:

[product]
id
price
name

[product_translations]
product_id
language_id
name

[product_es_view]
id -- references the product table
price -- references the product table 
name -- references the translation table

现在的想法是为每种语言创建一个视图,但视图与产品表相同。

为什么呢? 通过这种设置,我可以制作非多语言网站,多语言,而无需编辑现有的模型/表格。现在我在我的代码中唯一要做的就是使用另一个表格,我得到了我的模型的翻译版本(在php中,可以通过向模型添加一个简单的特征来完成)。使用SQL Server和Mysql,您可以使用可更新的视图来保存引用表中的值。

我很想听听你们对这个想法的看法,最重要的是对这个问题使用观点的最大缺点是什么?

1 个答案:

答案 0 :(得分:0)

我更喜欢第二个选项,其中每个实体都在自己的表中。如果您使用product_es_view,那么代码可能更容易但不太干净。

添加新语言通常不应包括添加新数据库表。在语言表中添加新行更好。