/ / ¿Cómo especifico que una columna sea única en el ámbito de una relación en SQL Server 2008? - restricciones de sql, sql-server, tsql, sql-server-2008

¿Cómo especifico que una columna sea única en el ámbito de una relación en SQL Server 2008? - sql, sql-server, tsql, sql-server-2008, restricciones

Es más fácil con un ejemplo. Tengo dos tablas: libros y capítulos. Ambos tienen columnas Título e Id. Los capítulos también tienen una columna de libro que es una clave externa para Books.Id. Books.Title es único (no quiero dos libros con el mismo título).

Ahora mi problema es la definición del Capítulo.Título singularidad. Quiero que sea único, siempre y cuando Books.Id sea el mismo. De modo que un libro puede no tener dos capítulos con el mismo título, pero dos libros diferentes pueden tener el mismo título en un capítulo.

¿Es esto posible en SQL Server 2008? ¿Cómo?

Respuestas

5 para la respuesta № 1

ÍNDICE DE RESTRICCIÓN ÚNICA o ÚNICA. Cualquiera de las dos hará.

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

o

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

3 para la respuesta № 2

Cree un ÍNDICE ÚNICO en los capítulos utilizando las columnas BookID y Title (los índices pueden incluir varias columnas, no solo una)


2 para la respuesta № 3

Así que dentro de Chapter, es la combinacion de Book y Title Eso debe ser único. Simplemente cree un índice ÚNICO que abarque esas columnas, y listo.

Por cierto, no puedo evitar pensar que

(No quiero dos libros con el mismo título)

volverá y te morderá, si realmente estás hablando de libros del mundo real. Si esto es solo un ejemplo, entonces no te preocupes.