sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server 2016:crear una relación

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.

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

  2. Abrir el cuadro de diálogo Relaciones de clave externa

    Seleccione Diseñador de tablas> Relaciones... del menú superior.

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

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

  5. 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á.

  6. La relación

    Su relación ahora se mostrará correctamente en el cuadro de diálogo Relaciones de clave externa.

    Haga clic en Cerrar .

  7. 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 para guardar ambas tablas.

    Si selecciona Diseñador de tablas> Relaciones... para la tabla principal, también verá la relación allí.