Рефакторинг базы данных для добавления поддержки интернационализации / нескольких языков - PullRequest
0 голосов
/ 05 января 2010

Существуют ли проверенные способы реорганизации базы данных для поддержки нескольких версий записей?

У меня есть довольно простая база данных с некоторыми таблицами, такими как:

article(id, title, contents, ...) 
...

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

Мой текущий подход заключается в создании пары новых таблиц, таких как:

language(id, code, name)
article_index(id, original_title) <- just to be able to group articles

А затем добавить внешний ключ в исходную таблицу статей:

article(id, title, contents, article_index_id, ...)

Мне бы очень хотелось услышать ваши комментарии к этому подходу и ваш опыт по этой теме.

1 Ответ

0 голосов
/ 05 января 2010

Это подход, который я успешно использовал в прошлом. Другой способ - заменить все текстовые поля идентификатором (int, guid, что угодно), а затем сохранить переводы для всех текстовых полей в одной таблице с указанным идентификатором и языковым идентификатором.

Лично у меня был больший успех с первым подходом (т. Е. Вашим), и, например, мне было легче иметь дело с помощью ORM. Например, с помощью NHibernate ORM в моем текущем проекте я создал то, что составляет сеанс с учетом языка, который автоматически возвращает правильный набор переводов для каждого объекта. Последовательность в подходе, очевидно, помогает здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...