Как определить уникальные отношения в таблице мостов, чтобы они применялись моделью данных? - PullRequest
0 голосов
/ 18 марта 2011

Это вопрос интервью, с которым я столкнулся

Дано ТРИ таблицы

  • GRADUATE - Выпускник
  • ЧЕСТИ - Предметы с отличием
  • GRADHONS - Мостовая таблица для связи выпускников с определенным предметом с отличием

Вопрос - Как должны быть определены ГРЕЙДОНЫ в модели данных, чтобы модель данных применяла ограничение, согласно которому выпускник может иметь только один предмет с отличием?

Интервьюер не был в восторге от моих предложений

  • Используйте только ключ выпускника в качестве PK в таблице GRADHONS
  • Измените модель данных и ссылочные награды как часть таблицы Graduate.

Мой вопрос такой же, как и в исходном вопросе об интервью. Как бы вы определили отношение «уникальный-1-1» в таблице мостов, чтобы оно выполнялось моделью данных?

Ответы [ 2 ]

0 голосов
/ 18 марта 2011

Самый простой способ - это создать составной первичный ключ на GRADHONS (первичный ключ, который состоит из полей GraduateID и HonoursID) в вашей соединительной таблице, состоящей из FK Graduate и Honors.

Если вы 'Если вы собираетесь использовать LINQ to SQL или другие решения ORM, такие как ActiveRecord в RoR, имейте в виду, что им не нравятся эти типы PKeys.В этом случае лучше было бы вместо этого создать автоинкремент PK для таблицы соединений GRADHONS, а затем уникальный индекс для двух полей FKey.

0 голосов
/ 18 марта 2011

Оба ваших предложения звучат разумно. Если вы предпочитаете иметь отдельный столбец в GRADHONS для ссылки на GRADUATE, то сделайте, чтобы GRADHONS имел ссылку на внешний ключ для GRADUATE, и сделайте этот столбец уникальным. Поэтому для GRADUATE может быть только одна строка в GRADHONS.

...