/ / Jak określić kolumnę, aby była unikalna w zakresie relacji w SQL Server 2008? - sql, sql-server, tsql, sql-server-2008, ograniczenia

Jak określić kolumnę, aby była unikalna w zakresie relacji w SQL Server 2008? - sql, sql-server, tsql, sql-server-2008, ograniczenia

Łatwiej jest z przykładem. Mam dwie tabele: książki i rozdziały. Oba mają kolumny Tytuł i ID. Rozdziały mają również kolumnę Książka, która jest obcym kluczem do Books.Id. Books.Title jest wyjątkowy (nie chcę dwóch książek o tym samym tytule).

Teraz mój problem polega na zdefiniowaniu rozdziału.Unikalność tytułu. Chcę, żeby była wyjątkowa, o ile Books.Id jest taka sama. Tak więc jedna książka może nie mieć dwóch rozdziałów o tym samym tytule, ale dwie różne książki mogą mieć ten sam tytuł w jednym rozdziale.

Czy to możliwe w SQL Server 2008? W jaki sposób?

Odpowiedzi:

5 dla odpowiedzi № 1

UNIQUE CONSTRAINT lub UNIQUE index. Każda z nich to zrobi.

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

lub

CREATE UNIQUE INDEX IXU_MyTable_BookTitle ON dbo.MyTable (BookID, Title)

3 dla odpowiedzi № 2

Stwórz UNIKALNY INDEKS na rozdziałach używając kolumn BookID i Title (indeksy mogą zawierać kilka kolumn, a nie tylko jeden)


2 dla odpowiedzi nr 3

Więc wewnątrz Chapter, jest to połączenie Book i Title to musi być wyjątkowe. Po prostu utwórz indeks UNIQUE obejmujący te kolumny i gotowe.

Przy okazji, nie mogę pomóc, ale pomyśl o tym

(Nie chcę dwóch książek o tym samym tytule)

powróci i cię ugryzie, jeśli rzeczywiście mówisz o książkach z prawdziwego świata, jeśli to tylko przykład, to nie martw się.