Использование представлений для многоязычной базы данных

Это тема, которая обсуждалась несколько раз и всегда зависит от ситуации, но я хотел бы поделиться своей идеей.

Я создаю новую 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 и Mysql вы можете использовать обновляемые представления, которые сохраняют значения в ссылочных таблицах.

Мне нравится слышать, что вы, ребята, думаете об этой идее, и больше всего, какие самые большие недостатки в использовании представлений для этой проблемы?

1

Решение

Я предпочитаю второй вариант, где каждая сущность находится в своей таблице. Если вы используете product_es_view, то это может быть проще, но менее чистый код.

Добавление новых языков обычно не должно включать добавление новых таблиц базы данных. Добавление новой строки в таблицы языков лучше.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]