Шаблон проектирования многоязычной базы данных - PullRequest
5 голосов
/ 01 августа 2011

В настоящее время я работаю над Blog-Software, которая должна предлагать поддержку контента на нескольких языках.

Я думаю о способе проектирования моей базы данных (MySQL).Моей первой мыслью было следующее:

  • Каждая запись хранится в таблице (назовем ее entries).Эта таблица содержит информацию, которая не изменяется (например, уникальный идентификатор, опубликован он или нет, и тип публикации).
  • Другая таблица (назовем ее content) содержит строки (например, содержимое).(заголовок, дата и автор конкретного языка).
  • Затем к ним присоединяется уникальный идентификатор записи.

Идея заключается в том, что одна статья можетбыть переведены на несколько других языков, но это не обязательно.Если нет перевода на родной язык пользователя (определяется его IP или чем-то еще), он видит стандартный язык (который будет английский).

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

Если бы не было шаблона, как бы вы поступили с этим?Любой вклад приветствуется.

Ответы [ 3 ]

6 голосов
/ 01 августа 2011

Ваш подход - это то, что я видел в большинстве приложений с такими возможностями. Единственное изменение - это то, что некоторые места будут помещать значения «по умолчанию» в базовую таблицу (Entry), в то время как другие будут воспринимать это как просто Content строку.

1 голос
/ 01 августа 2011

Этот дизайн также даст вам возможность легко искать (или ограничивать поиск) на всех языках. С точки зрения дизайна БД, это imho лучший дизайн, который вы можете использовать.

0 голосов
/ 01 августа 2011

С небольшим количеством текста и простым приложением это будет работать. В целом вы можете быть укушены необходимыми дополнительными объединениями, особенно если ваша база данных больше, чем ram. Представление вещей в правильном порядке (сортировка) также может потребовать решения

...