Как использовать многоязычную схему базы данных с ORM?

Добрый день!

Я ищу лучший способ реализовать многоязычную схему базы данных, подход, который я использую, такой же, как здесь: Каковы наилучшие методы для разработки многоязычной базы данных? (одна таблица с нейтральными по языку данными и одна для всего перевода). Это кажется хорошим и чистым и не ограничивает число возможных языков.

Но я хочу использовать простой ORM (например, LINQ в С#, Outlet for PHP и т.д.), где каждая таблица сопоставляется с классом сущности. Это может работать, но запросы стали более сложными.

Может быть, есть некоторые специальные методы для использования такой DB shema с ORM? Или я могу воспользоваться более сложными ORM, которые поддерживают более сложные сопоставления?

Спасибо заранее!

Ответ 1

Использование только одной таблицы для всех переводов может быстро привести к серьезным проблемам производительности и сложности для любой операции (select/insert/update/delete); просто попробуйте понять, что я имею в виду.

Тогда я бы пошел на следующий метод (две таблицы на "переводимый" объект), что, по-видимому, является хорошим балансом между проблемами производительности, сложности и обслуживания.

product
  - id (PK)
  - number1
  - number2
  - date1
  - date2
  ...

product_i18n
  - id (PK)
  - product_id (FK)
  - language_id (FK)
  - string1
  - string2
  ...

language
  - id (PK)
  - name

Проверьте, как это делается с Propel ORM (PHP): http://propelorm.org/blog/2011/01/11/propel-gets-i18n-behavior-and-why-it-matters.html

НТН