Страница 1 из 1

Сводные таблицы для многоязычности

Добавлено: 04 июн 2008, 16:04
Bekass
Есть задача многоязычной БД.
Т.Е. к примеру есть таблица стран country
в ней поля id_country, name_country и т.д.
Так же нужна точно такая же таблица, но где name_country будет содержать данные на другом языке.
на индекс записи id_country ссылаются другие таблицы, в зависимости от параметры выбранного языка необходимо выберать соответствующую запись с таблицы country name_country.
Вот как бы ЭТО все проше организовать ?

Добавлено: 04 июн 2008, 16:07
kdv
юникод?

Добавлено: 04 июн 2008, 17:02
Bekass
Да, база в юникоде, но вопрос в том как организовать связи

Добавлено: 04 июн 2008, 18:09
Merlin
Объясните плиз старому пню механизм влияния кодовой страницы литералов на способ организации связей, а то, чую, проспал что-то в этой жизни :roll:

Добавлено: 04 июн 2008, 18:18
Bekass
у меня будет несколько таблиц одинаковых но с разными данными в зависимости от языка , у них будет разный счетчик, вопрос в том как прикрутить уникальный идентификатор указывающий на идентификаторы записей в этих таблицах

Добавлено: 04 июн 2008, 18:43
Merlin
Мил человек, ну это же азбука, отношения 1:n и m:n

Код: Выделить всё

Create Table Languages
(ID   Int Not Null,
Constraint Languages_PK Primary Key (ID))

Create Table Language_Names
(ID_Lang  Int Not Null,
 ID_On_Lang  Int Not Null,
 Name VarChar (50),
Constraint Language_Names_PK Primary Key (ID_Lang, ID_On_Lang),
Constraint Language_Names_FKLang Foreign Key (ID_Lang)
 References Languages,
Constraint Language_Names_FKONLang Foreign Key (ID_ON_Lang)
 References Languages)

Create Table Countries
(ID  Int Not Null
//список атрибутов и т.д. которые не символьные
Constraint Countries_PK Primary Key (ID))

Create Table Country_Names
(ID_Country  Int Not Null,
 ID_On_Lang  Int Not Null,
 Name VarChar (50),
//атрибуты и т.д. которые символьные
Constraint Country_Names_PK Primary Key (ID_Country, ID_On_Lang),
Constraint Country_Names_FKCountry Foreign Key (ID_Country)
 References Countries,
Constraint Language_Names_FKONLang Foreign Key (ID_ON_Lang)
 References Languages)
ссылаться на справочные таблицы с литералами, естественно, по двухсегментному ключу. Не нравится по двухсегментному - навесь на них свои ID в качестве PK и этот полуестественный сделай Unique. Или наоборот, дело вкуса.