Есть задача многоязычной БД.
Т.Е. к примеру есть таблица стран country
в ней поля id_country, name_country и т.д.
Так же нужна точно такая же таблица, но где name_country будет содержать данные на другом языке.
на индекс записи id_country ссылаются другие таблицы, в зависимости от параметры выбранного языка необходимо выберать соответствующую запись с таблицы country name_country.
Вот как бы ЭТО все проше организовать ?
Сводные таблицы для многоязычности
Мил человек, ну это же азбука, отношения 1:n и m:n
ссылаться на справочные таблицы с литералами, естественно, по двухсегментному ключу. Не нравится по двухсегментному - навесь на них свои ID в качестве PK и этот полуестественный сделай Unique. Или наоборот, дело вкуса.
Код: Выделить всё
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)