这是一个经过多次讨论的主题,它总是依赖于这种情况,但我想分享我的想法。
我正在构建一个必须支持多语言应用程序的新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,您可以使用可更新的视图来保存引用表中的值。
我很想听听你们对这个想法的看法,最重要的是对这个问题使用观点的最大缺点是什么?
答案 0 :(得分:0)
我更喜欢第二个选项,其中每个实体都在自己的表中。如果您使用product_es_view,那么代码可能更容易但不太干净。
添加新语言通常不应包括添加新数据库表。在语言表中添加新行更好。