una relaciones referencial llave integridad hacer foranea eliminar dependencias create crear como clave sql-server foreign-keys primary-key

sql-server - relaciones - integridad referencial sql server



Clave primaria y externa al mismo tiempo (4)

Claro, no hay problema:

CREATE TABLE dbo.[User] ( Id int NOT NULL IDENTITY PRIMARY KEY, Name nvarchar(1024) NOT NULL ); CREATE TABLE [Group] ( Id int NOT NULL IDENTITY PRIMARY KEY, Name nvarchar(1024) NOT NULL ); CREATE TABLE [UserToGroup] ( UserId int NOT NULL, GroupId int NOT NULL, PRIMARY KEY CLUSTERED ( UserId, GroupId ), FOREIGN KEY ( UserId ) REFERENCES [User] ( Id ) ON UPDATE NO ACTION ON DELETE CASCADE, FOREIGN KEY ( GroupId ) REFERENCES [Group] ( Id ) ON UPDATE NO ACTION ON DELETE CASCADE );

Esto se usa comúnmente para modelar relaciones de muchos a muchos.

¿Sería posible en SQL Server 2008 tener una tabla creada con 2 columnas que son al mismo tiempo claves primarias y externas? En caso afirmativo, ¿cómo se vería ese código? He buscado y no encontré nada.


Estas son construcciones totalmente diferentes.

Una clave principal se utiliza para imponer la exclusividad dentro de una tabla y ser un identificador único para un determinado registro.

Una clave externa se utiliza para la integridad referencial, para asegurarse de que exista un valor en otra tabla.

La clave externa necesita hacer referencia a la clave primaria en otra tabla.

Si desea tener una clave externa que también sea única, puede hacer una restricción FK y agregar un índice / restricción único a ese mismo campo.

A modo de referencia, SQL Server permite que un FK haga referencia a una UNIQUE CONSTRAINT , así como a un campo PRIMARY KEY .



Solo una nota rápida: de las páginas de Microsoft ( http://msdn.microsoft.com/en-us/library/ms189049.aspx ) ...

"Una restricción de clave externa no tiene que estar vinculada solo a una restricción de clave primaria en otra tabla, sino que también se puede definir para hacer referencia a las columnas de una restricción ÚNICA en otra tabla".

No se usa a menudo, pero es útil en algunas circunstancias.