Локализация данных в SQL Server с GUID или ...?
Мне нужно сделать базу данных, которая сильно локализована. Почти для всех организаций мне нужен перевод на 5+ языков. Некоторым объектам даже требуется и локализованный дополнительный ресурс (например, изображения, которые я ввожу как пути).
Вопрос сейчас:
1: LOOKUP TABLE НА ENTITY / TABLE (вроде раздутая схема?)я должен создать «Локализованную» таблицу поиска локализации для каждой таблицы, мне нужны локализованные значения (и использовать стандартные PK int / bigint для элементов), как здесь:
MYITEMS
-------
- MyItemId BIGINT PK
- MyItemPrice DECIMAL
MYITEMLOCALIZED
---------------
- CPK_MyItemId BIGINT FK
- CPK_LanguageCode NCHAR
- LocalizedName NVARCHAR
- LocalizedResourcePath NVARCHAR
CUSTOMERS
---------
- CustomerId BIGINT PK
- CustomerName NVARCHAR
CUSTOMERLOCALIZED
---------------
- CPK_CustomerId BIGINT FK
- CPK_LanguageCode NCHAR
- LocalizedName NVARCHAR
- LocalizedResourcePath NVARCHAR
или же
2: НАПРАВЛЯЮЩИЕ С ОДНОМ СТОЛОМ LOOKUP LOCALIZATION (интенсивное использование guid?)я должен использовать GUID в качестве PK, а затем просто использовать одно имя и одну таблицу локализации ресурса.
MYITEMS
-------
- MyItemId uniqueidentifier PK
- MyItemPrice DECIMAL
CUSTOMERS
---------
- CustomerId uniqueidentifier PK
- CustomerName NVARCHAR
LOCALIZED
---------------
- CPK_ElementGuid uniqueidentifier FK
- CPK_LanguageCode NCHAR
- LocalizedValue NVARCHAR
- LocalizedResourcePath NVARCHAR
3: ОДНОЗНАЧНОЕ ОБЪЕДИНЕНИЕ, НО РУКОВОДСТВО ТОЛЬКО ДЛЯ ЛОКАЛИЗАЦИИ (лучший из 2 миров?)я должен использовать обычные PK int / bigint, а затем добавить столбец GUID для каждого нужного мне столбца и сохранить локализованные значения в одной таблице поиска локализации.
MYITEMS
-------
- MyItemId BIGINT PK
- MyItemPrice DECIMAL
- ItemNameLocalizationGuid uniqueidentifier(GUID)
- ItemPictureLocalizationGuid uniqueidentifier(GUID)
CUSTOMERS
---------
- CustomerId BIGINT PK
- CustomerName NVARCHAR
- CustomeerNameLocalizationGuid uniqueidentifier(GUID)
LOCALIZED
---------------
- CPK_ElementGuid uniqueidentifier FK
- CPK_LanguageCode NCHAR
- LocalizedValue NVARCHAR
4: СМОТРЕТЬ ТАБЛИЦУ, КОТОРЫЙ ВОЗВРАЩАЕТ ЛОКАЛИЗАЦИЮ ID (переходить туда-сюда?)я должен создать таблицы без направляющих, но хранить идентификатор локализации в материнской таблице?
Как здесь:
MYITEMS
-------
- MyItemId BIGINT PK
- MyItemPrice DECIMAL
- MyItemNameLocalizedId BIGINT
CUSTOMERS
---------
- CustomerId BIGINT PK
- CustomerName NVARCHAR
- CustomerGenderLocalizedId BIGINT
LOCALIZED
---------------
- LocalizationId BIGINT PK
- CustomerId BIGINT FK
- LanguageCode NCHAR
- LocalizedName NVARCHAR
- LocalizedResourcePath NVARCHAR
Если я буду использовать GUID в качестве прочитанных PK, я понесу огромные потери производительности и размера данных, но я также сразу же столкнусь с уникальностью элементов на разных серверах, dbs ...