Puede crear una relación entre tablas utilizando la GUI o el script SQL. Aquí, demuestro ambos métodos.
En el diseño de bases de datos relacionales, una relación es donde dos o más tablas están vinculadas porque contienen datos relacionados. Esto permite a los usuarios realizar consultas de datos relacionados en varias tablas.
Aquí, crearemos las siguientes relaciones.
El Método
Así es como lo haremos:
- Usaremos SQL para crear los Álbumes tabla y una relación.
- Usaremos la GUI para crear la otra relación.
De esa manera, podrá ver ambos métodos para crear una relación.
Solo necesitamos crear una tabla porque ya hemos creado dos de estas tablas anteriormente en este tutorial (los Artistas tabla a través de la GUI y Genres tabla usando SQL).
Crear una relación usando SQL
Abra una nueva ventana de consulta en SSMS y ejecute el siguiente código:
CREATE TABLE Albums ( AlbumId int IDENTITY(1,1) NOT NULL PRIMARY KEY, AlbumName nvarchar(255) NOT NULL, ReleaseDate date NOT NULL, ArtistId int NOT NULL, GenreId int NOT NULL CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION );
La primera parte de esa instrucción crea la tabla.
La última parte define la relación. Esta parte:
CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE NO ACTION ON UPDATE NO ACTION
Las dos primeras líneas crean la relación. Crean una restricción de clave externa entre Albums.ArtistId columna y Artists.ArtistId columna.
Las dos últimas líneas especifican qué debe hacer SQL Server si alguien intenta eliminar o actualizar un registro principal al que hace referencia un registro en la tabla secundaria. En este caso, NO ACTION
significa que la eliminación/actualización no continuará. El usuario simplemente recibirá un error.
Puede cambiar esto a ON DELETE CASCADE
si desea poder eliminar el padre y el hijo de una sola vez (es decir, la eliminación se realizará en cascada del padre al hijo). La misma lógica se aplica a las actualizaciones, usando ON UPDATE CASADE
.
NO ACTION
es el valor predeterminado, por lo que podríamos haberlo hecho sin esas dos últimas líneas de código. Sin embargo, lo incluí porque es un factor importante a tener en cuenta al crear restricciones de clave externa.
¿Qué es una restricción de clave externa?
Una restricción de clave externa define una relación entre esta tabla y otra tabla. Cuando crea una restricción de clave externa, la crea contra una columna específica en el hijo tabla, para hacer referencia a una columna específica en parent mesa.
Esto hace que la columna en la tabla secundaria sea una clave externa . La restricción garantiza que cualquier valor que entre en esta columna (clave externa) se corresponda con un valor en la columna de clave principal de la tabla principal. Si alguien intenta ingresar un valor que no se corresponde con un valor en la columna de clave principal de la tabla principal, SQL Server generará un error.
Esto ayuda a reforzar la integridad referencial. Nos impide tener registros huérfanos (registros secundarios que no tienen padre). O en nuestro ejemplo, álbumes que no están asociados con ningún artista.
Crear una relación a través de la GUI
Ahora crearemos la otra relación a través de la GUI de SQL Server Mangement Studio.
Habría sido más fácil incluir esto en el script anterior, pero quería demostrar ambos métodos para crear una relación.
-
Abrir la tabla secundaria en el diseñador de tablas
Haga clic con el botón derecho en la tabla secundaria (nuestros Álbumes recién creados tabla) y seleccione Diseño del menú contextual.
Si no puede ver su tabla recién creada en el Explorador de objetos, probablemente necesite actualizar el Explorador de objetos.
Haga clic derecho en las Tablas y seleccione Actualizar .
-
Abrir el cuadro de diálogo Relaciones de clave externa
Seleccione Diseñador de tablas> Relaciones... del menú superior.
-
Agregar la relación
El cuadro de diálogo Relaciones de clave externa le mostrará las relaciones existentes para la tabla. Podemos ver la relación que establecimos justo antes, cuando creamos la tabla.
Haga clic en Agregar para agregar otra relación.
-
Seleccione la especificación de tablas y columnas
Aparece una nueva relación encima de la otra en la Relación seleccionada lista con un nombre de FK_Albums_Albums .
Asegurándose de que la nueva relación esté seleccionada, haga clic en Especificación de tablas y columnas en el panel derecho. Aparecen puntos suspensivos a la derecha de la propiedad.
Haga clic en los puntos suspensivos (... ) para iniciar el cuadro de diálogo Tablas y columnas.
-
Cuadro de diálogo de tablas y columnas
Aquí, selecciona la tabla de clave principal en el panel izquierdo y la tabla de clave externa en el derecho.
- En Tabla de clave principal: selecciona Géneros como la tabla y GenreId como la columna.
- En Tabla de claves externas: seleccione Álbumes como la tabla y GenreId como la columna.
Haga clic en Aceptar .
SQL Server sugerirá un nombre para la relación. Puedes editar esto si lo deseas. De lo contrario, déjalo como está.
-
La relación
Su relación ahora se mostrará correctamente en el cuadro de diálogo Relaciones de clave externa.
Haga clic en Cerrar .
-
Salvar la relación
Su relación no se guardará hasta que guarde la tabla. Cuando guarde la tabla, probablemente recibirá una advertencia de que se guardarán dos tablas. Esto es de esperar, ya que la relación afecta a dos tablas.
Haga clic en Sí para guardar ambas tablas.
Si selecciona Diseñador de tablas> Relaciones... para la tabla principal, también verá la relación allí.