Локализация данных в таблицах SQL Server 2008 и сортировка - PullRequest
1 голос
/ 09 ноября 2009

Мне нужно локализовать данные в таблицах в базе данных SQL Server 2008. Каждый язык должен иметь свой собственный порядок сортировки при выборе записей. В другом потоке мне сказали, что создание отдельных таблиц для каждого языка сделало бы почти невозможным создание оператора выбора в сохраненном процессе. вернуть записи для культуры. Однако как мне разрешить разные порядки сортировки, если я помещаю все данные в одну таблицу с разными строками для каждого языка? У меня не было бы отдельных столбцов для каждого языка, но вместо этого было бы несколько строк. Может ли оператор select, используемый для извлечения записей, иметь порядок сортировки, связанный с ним, или он должен быть сохранен для таблицы или столбца?

Ответы [ 2 ]

2 голосов
/ 09 ноября 2009

Я предлагаю вам создать ваши локализованные таблицы с дополнительным столбцом, который называется ie. Locale, который будет хранить язык. Поскольку все данные ВСЕГДА будут содержаться в одних и тех же столбцах, не будет необходимости в разных порядках сортировки (если пользователям фактически не нужен другой порядок данных или asc / desc ... В любом случае:

Пример таблицы:

ID | Name | Description | Locale
--------------------------------
1    Me     This is me    en
2    Ich    Das bin ich   de
3    You    This is you   en
4    Du     Das bist du   de
....

Ваш порядок сортировки останется прежним. Все, что вы получаете, это дополнительная where оговорка

select ID,
       [Name],
       Description
from SampleTable
where Locale = 'en'
order by [Name]

Чтобы сделать вещи еще лучше, я нормализовал бы эти таблицы, создав таблицу поиска с аббревиатурами языковых стандартов, которые другие таблицы (например, эту, которую я создал) будут использовать с внешними ключами.

1 голос
/ 09 ноября 2009

Первое, что нужно сделать, это добавить столбец, чтобы определить, к какой культуре относится строка. После этого это просто вопрос фильтрации по этому столбцу.

Select * from myTable where Culture=1003

Вы можете также рассмотреть возможность добавления представлений к этой таблице. Оттуда вы можете добавлять индексы и сортировать содержимое вашего сердца.

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