/ / Ako môžem špecifikovať stĺpec, aby bol jedinečný v rozsahu vzťahu v systéme SQL Server 2008? - sql, sql-server, tsql, sql-server-2008, obmedzenia

Ako môžem špecifikovať stĺpec, aby bol jedinečný v rámci vzťahu v systéme SQL Server 2008? - sql, sql-server, tsql, sql-server-2008, obmedzenia

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ď č. 1

UNIQUE 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.