Как указать уникальный столбец в области отношений в SQL Server 2008? - PullRequest
0 голосов
/ 22 июня 2009

С примером проще. У меня есть две таблицы: книги и главы. Оба имеют столбцы заголовка и идентификатора. В главах также есть столбец Book, который является внешним ключом для Books.Id. Books.Title уникален (мне не нужны две книги с одинаковым названием).

Теперь моя проблема заключается в определении уникальности главы. Я хочу, чтобы он был уникальным, пока Books.Id одинаков. Таким образом, одна книга не может иметь две главы с одинаковым названием, но две разные книги могут иметь одинаковое название в главе.

Возможно ли это на SQL Server 2008? Как?

Ответы [ 3 ]

5 голосов
/ 22 июня 2009

УНИКАЛЬНОЕ ОГРАНИЧЕНИЕ или УНИКАЛЬНЫЙ индекс. Любой из них подойдет.

ALTER TABLE dbo.MyTable WITH CHECK ADD
    CONSTRAINT UQ_MyTable_BookTitle UNIQUE (BookID, Title)

или

CREATE UNIQUE INDEX IXU_MyTable_BookTitle ON dbo.MyTable (BookID, Title)
3 голосов
/ 22 июня 2009

Создание УНИКАЛЬНОГО ИНДЕКСА для глав с использованием столбцов BookID и Title (индексы могут включать несколько столбцов, а не только один)

2 голосов
/ 22 июня 2009

Таким образом, в Chapter комбинация Book и Title должна быть уникальной. Просто создайте УНИКАЛЬНЫЙ индекс, охватывающий эти столбцы, и все готово.

Кстати, я не могу не думать, что

(мне не нужны две книги с одинаковым названием)

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

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