Таблица с несколькими языками - PullRequest
1 голос
/ 13 июня 2009

Я хочу сохранить несколько переводов текста в базе данных MSSQL.

например, одно табличное произведение со столбцами

  • PRODUCTID
  • Цена продукта
  • ProductNameId
  • первичный ключ = ProductId

и таблица с названиями продуктов

  • Id
  • Язык
  • Имя
  • primairy key = Id и Language

Как создать внешний ключ для связи Product.ProductNameId с ProductName.Id

Ответы [ 2 ]

0 голосов
/ 13 июня 2009

Я бы изменил таблицу ProductNames на:

Id
ProductId
Language
Name

С этими ограничениями:

  • Первичный ключ на Id
  • Внешний ключ в ProductId
  • Уникальное ограничение для (ProductId, Language)
0 голосов
/ 13 июня 2009

Я думаю, что наиболее подходящие отношения pk-fk между ProductId в таблице Product и ProductId (без языка) в таблице ProductName. Поле в таблице Product - это pk, а поле в таблице ProductName - это fk. Это обеспечит отсутствие записей в таблице PeoductName, которые не соответствуют записи в таблице ProductName.

Если вы хотите относиться к языку аналогично, вы можете создать таблицу языков с полем LanguageId. затем создайте поле LanguageId в таблице ProductNames и сделайте его fk.

при получении информации о продукте вы СОЕДИНЯЕТЕ Product и ProductName в их полях ProductId, а затем указываете LanguageId в предложении WHERE.

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