Los diseños de la base de datos están estrechamente relacionados con las relaciones de la base de datos, la asociación entre dos columnas en una o más tablas. Las relaciones se definen sobre la base de las columnas clave coincidentes. En el servidor SQL, estas relaciones se definen usando Clave principal-Clave externa restricciones Se crea un enlace entre dos tablas donde la clave principal de una tabla está asociada con la clave externa de otra tabla mediante relaciones de base de datos.
Considere el siguiente ejemplo. Tabla de libros (pk_book_id, título, ISBN) está asociado con Autor (pk_author_id, author_name, phone_no, fk_book_id). Un libro puede tener muchos autores. Esta relación se puede implementar utilizando (PK_Author_Id como clave principal) y (Fk_Author_Id como clave externa).
Tipos de relaciones
a. Relación Uno-Uno (Relación 1-1)
segundo. Relación Uno-Muchos (Relación 1-M)
do. Relación Muchos-Muchos (Relación M-M)
Esta receta técnica cubre solo Relación 1-1 y 1-M.
1. Una relación uno (relación 1-1)
La relación uno a uno (1-1) se define como la relación entre dos tablas donde ambas tablas deben asociarse entre sí basándose en una sola fila coincidente. Esta relación puede ser creada usando Clave primaria: restricciones de clave externa única.
Con la Relación Uno a Uno en SQL Server, por ejemplo, una persona solo puede tener un pasaporte. Vamos a implementar esto en SQL Server.
CREAR TABLA dbo.Persona (Pk_Person_Id INT IDENTITY CLAVE PRIMARIA, Nombre VARCHAR (255), EmailId VARCHAR (255),); CREAR TABLA dbo.PassportDetails (Pk_Passport_Id INT PRIMARY KEY, número de pasaporte VARCHAR (255), Fk_Person_Id INT UNIQUE FOREIGN KEY REFERENCES dbo.Person (Pk_Person_Id)); INSERTAR EN VALORES de dbo.Person ('Niraj', '[correo electrónico protegido]'); INSERT INTO dbo.Person VALUES ('Vishwanath', '[correo electrónico protegido]'); INSERTAR EN VALORES de dbo.Person ('Chetan', '[correo electrónico protegido]'); IR INSERTAR EN dbo.PassportDetails VALUES (101, 'C3031R33', 1); Insertar en dbo.PassportDetails VALUES (102, 'VRDK5695', 2); INSERTAR EN dbo.PassportDetails VALUES (103, 'A4DEK33D', 3); GO SELECT * FROM dbo.Person SELECT * FROM dbo.PassportDetails;
La relación uno a uno se implementa usando dbo.Person (Pk_Person_Id) como la clave principal y dbo.PassportDetails (fk_person_id) como (restricción de clave única-clave externa).
Por lo tanto, siempre tendrá una sola fila coincidente entre la tabla Person-PassportDetails basada en el dbo.Person (Pk_Person_Id) -dbo.PassportDetails (Fk_Person_Id) relación.
1. Cree dos tablas (Tabla A y Tabla B) con la clave principal en ambas tablas.
2. Cree una clave externa en la tabla B que haga referencia a la clave principal de la tabla A.
3. Agregue una restricción única en la columna de clave externa de la tabla B.
¿Qué sucede si intentamos insertar los detalles del pasaporte para el mismo fk_person_id que ya existe en la tabla passportDetails?
Obtenemos un error de violación de clave única.
Msg 2627, nivel 14, estado 1, línea 1 Violación de la restricción UNIQUE KEY 'UQ__Passport__04554C334F12BBB9'. No se puede insertar una clave duplicada en el objeto 'dbo.PassportDetails'. El valor de la clave duplicada es (3). La instrucción se ha terminado.
2. Relación uno-muchos (relación 1-M)
La relación uno a varios se define como una relación entre dos tablas donde una fila de una tabla puede tener varias filas coincidentes en otra tabla. Esta relación puede ser creada usando Relación clave primaria-clave externa.
En la relación uno a varios en SQL Server, por ejemplo, un libro puede tener varios autores. Vamos a implementar esto en SQL Server.
CREAR TABLA dbo.Book (Pk_Book_Id INT PRIMARY KEY, nombre VARCHAR (255), ISBN VARCHAR (255)); CREAR TABLA dbo.Autor (Pk_Author_Id INT PRIMARY KEY, FullName VARCHAR (255), MobileNo CHAR (10), Fk_Book_Id INT FOREIGN KEY REFERENCES Book (Pk_Book_Id)); Insertar valores de libro (1, 'Let is Snow', 'ISBN3030303'); INSERTE EN LOS VALORES del libro (2, 'Tres tazas de té', 'ISBN638242'); IR INSERTAR EN dbo. Autor VALORES (100, 'John Green', '30303', 1); Insertar en dbo. Autor VALUES (101, 'Maureen Johnson', '4343', 1); INSERTAR EN dbo. Autor VALORES (102, 'Lauren Myracle', '76665', 1); Insertar en dbo. Autor VALORES (103, 'Greg Mortenson', '6434', 2); Insertar en dbo. Autor VALORES (104, 'David Oliver Relin', '72322', 2); GO SELECT * DESDE dbo.Book; SELECT * FROM dbo.Author;
La relación uno a muchos se implementa usando dbo.Book (Pk_Book_Id) como clave principal y dbo.Author (Fk_Book_Id) como (clave externa). Por lo tanto, siempre tendrá solo filas de uno a muchos (Autores de un solo libro) entre la tabla Libro-Autor basada en la relación dbo.Book (Pk_Book_Id) -dbo.Author (Fk_Book_Id).
1. Cree dos tablas (tabla A y tabla B) con la clave principal en ambas tablas.
2. Cree una clave externa en la tabla B que haga referencia a la clave principal de la tabla A.