Возможно, мне придется хранить некоторые данные i18n-ed в моей базе данных, используя XML, если я не сопротивляюсь. Это не мой выбор, но в спецификации я должен следовать. Мы бы, к примеру, что-то вроде следующего в столбце «Страна»:Хранение данных i18n в базе данных с использованием XML
<lang='fr'>Etats-Unis</lang>
<lang='en'>United States</lang>
Это будет применяться ко многим столбцов в базе данных.
Я не думаю, что это хорошая идея. Я склонен думать, что ячейка в базе данных должна представлять собой единый фрагмент данных (лучше для поиска) и что база данных должна иметь два размера максимум, а не 3 или более (один запрос больше потребуется для каждого измерения/a размер здесь будет равен числу атрибутов XML).
Моя идея состояла в том, чтобы иметь отдельную таблицу для всех переводов с такими столбцами, как: ID/Language/Translation. Тем не менее, я должен признать, что я на самом деле не уверен, что это лучший способ для хранения данных на различных языках в БД ...
Спасибо за ваши советы :)
Что вы думаете о XML-способе его выполнения? – TigrouMeow
Одним словом - сумасшедший. =) Чтобы вытащить нужные данные, вам понадобится вспомогательный UDF, который сканирует это поле (используя некоторую сложную подстроку), а затем возвращает значение. Это само по себе дорого. Тогда подумайте, есть ли у вас несколько таблиц с этим XML-форматом. Экстраполируйте удар производительности, я не вижу, чтобы это было возможно. Почему «требование» хранится как XML? Это формат данных, поступающий из другой системы, которую вы должны хранить в БД? Если это так, почему бы не сопоставить XML с полями, которые вы хотите в БД, в вашем DAL вашего приложения или отдельном модуле. – RPM1984
Если вы говорите о MS SQL 2005 (или новее), то XML будет не так уж плох, поскольку есть встроенные функции для запроса полей XML. Причина, по которой я столкнулся, состояла в том, что я размышляю над тем же. Я предпочитаю использовать XML-поля, имея таблицы для переводов. Для меня это кажется более логичным. – Brendan