Je to jednoduchšie s príkladom. Mám dve tabuľky: Knihy a kapitoly. Obaja majú stĺpce Názov a Id. Kapitoly tiež obsahuje stĺpec Kniha, ktorá je cudzím kľúčom knihy. Books.Title je jedinečná (nechcem dve knihy s rovnakým titulom).
Teraz môj problém definuje kapitolu.Jednoznačnosť názvu. Chcem, aby to bolo jedinečné, pokiaľ Books.Id je to isté. Takže jedna kniha nemusí mať dve kapitoly s rovnakým názvom, ale dve knihy môžu mať rovnaký názov v kapitole.
Je to možné v systéme SQL Server 2008? Ako?
odpovede:
5 pre odpoveď č. 1UNIQUE CONSTRAINT alebo UNIQUE index. Buď jeden bude.
ALTER TABLE dbo.MyTable WITH CHECK ADD
CONSTRAINT UQ_MyTable_BookTitle UNIQUE (BookID, Title)
alebo
CREATE UNIQUE INDEX IXU_MyTable_BookTitle ON dbo.MyTable (BookID, Title)
3 pre odpoveď č. 2
Vytvorte UNIQUE INDEX na kapitolách pomocou stĺpcov BookID a Title (indexy môžu obsahovať niekoľko stĺpcov, nie iba jeden)
2 pre odpoveď č. 3
Takže vnútri Chapter
, je to kombinácia Book
a Title
to musí byť jedinečné. Jednoducho vytvorte UNIQUE index prekrývajúci tieto stĺpce a vy ste to urobili.
Mimochodom, nemôžem pomôcť, ale myslím to
(Nechcem dve knihy s rovnakým titulom)
sa chystáte vrátiť a uhryznúť vás, ak v skutočnosti hovoríte o knihách v reálnom svete.Ak je to len príklad, potom žiadne obavy.