Уникальное ограничение на два внешних ключа, чтобы всегда быть другой комбинацией - PullRequest
0 голосов
/ 07 мая 2018

У меня есть таблица с именем Followers, которая содержит один столбец PK и два столбца FK, в которых будут храниться целые числа таблицы с именем User. Однако я не хочу иметь реплицированные значения в столбцах - комбинация двух FK всегда должна быть разной. Как мне это сделать?

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Уникальный индекс или ограничение решит вашу проблему. Уникальные ограничения реализованы в виде уникальных индексов за кулисами, поэтому выбор любого решения тривиален.

Для демонстрации предположим следующий надуманный сценарий.

create table User (
  Id int identity primary key,
  name varchar(255) not null
);
go

create table Follower (
  Id int identity primary key,
  UserId int foreign key references User(Id),
  FollowerId int foreign key references User(Id)
);
go

Чтобы обеспечить уникальность UserId & FollowerId, добавьте следующий уникальный индекс.

create unique index ux_follower_userid_followerid
  on Follower
  (
    UsrId
    ,FollowerId
  );
go

Обратите внимание, что обычно рекомендуется включать некластеризованные индексы в столбцы внешнего ключа для облегчения объединений.

0 голосов
/ 07 мая 2018

Создать один уникальный ключ для обоих столбцов

...