Servidor SQL: claves foráneas

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

Servidor SQL: claves foráneas

Este tutorial de SQL Server describe cómo usar clave externa Sintaxis y ejemplos en SQL Server.

¿Qué son las claves foráneas en SQL Server?

Las claves foráneas son un método para hacer cumplir la integridad referencial en una base de datos de SQL Server. Una clave externa significa que un valor en una tabla también debe aparecer en la otra tabla.

La tabla a la que se hace referencia se denomina tabla principal y la tabla con la clave externa se denomina tabla secundaria. La clave externa en la tabla secundaria generalmente se refiere a la clave principal en la tabla principal.

Las claves foráneas se pueden crear utilizando la sentencia CREATE TABLE o la sentencia ALTER TABLE.

Crear claves foráneas – usando la instrucción CREATE TABLE

sintaxis

La sintaxis para crear una clave externa mediante la instrucción CREATE TABLE en SQL Server (Transact-SQL) es:

CREATE TABLE child_table
(
  column1 datatype [ NULL | NOT NULL ],
  column2 datatype [ NULL | NOT NULL ],
  ...

  CONSTRAINT fk_name
    FOREIGN KEY (child_col1, child_col2, ... child_col_n)
    REFERENCES parent_table (parent_col1, parent_col2, ... parent_col_n)
    [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
    [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
);

child_table El nombre de la tabla secundaria que desea crear. column1, column2 Las columnas que desea crear en la tabla. Cada columna debe tener un tipo de datos. La columna debe definirse como NULL o NOT NULL, si este valor se deja en blanco, la base de datos asume NULL como valor predeterminado. fk_name El nombre de la restricción de clave externa que desea crear. child_col1, child_col2, … child_col_n Columnas en child_table que harán referencia a la clave principal en parent_table. parent_table El nombre de la tabla principal cuya clave principal se usará en child_table. parent_col1, parent_col2, … parent_col3 Las columnas que componen la clave principal en parent_table. La clave foránea hará cumplir el vínculo entre estos datos y las columnas child_col1, child_col2, … child_col_n en child_table. AL ELIMINAR Opcional. Especifica qué hacer con los datos secundarios cuando se eliminan los datos principales. Puede elegir SIN ACCIÓN, CASCADA, ESTABLECER NULO o ESTABLECER POR DEFECTO. AL ACTUALIZAR Opcional. Especifica cómo manejar los datos secundarios cuando se actualizan los datos principales. Puede elegir SIN ACCIÓN, CASCADA, ESTABLECER NULO o ESTABLECER POR DEFECTO. SIN ACCIÓN Se utiliza junto con ON DELETE o ON UPDATE. Esto significa que cuando los datos principales se eliminan o actualizan, no se realiza ninguna acción en los datos secundarios. CASCADE se usa junto con ON DELETE o ON UPDATE. Esto significa que cuando los datos principales se eliminan o actualizan, los datos secundarios se eliminan o actualizan. SET NULL Se utiliza junto con ON DELETE o ON UPDATE. Esto significa que los datos secundarios se establecen en NULL cuando los datos principales se eliminan o actualizan. SET DEFAULT se usa junto con ON DELETE o ON UPDATE. Esto significa que cuando los datos principales se eliminan o actualizan, los datos secundarios se establecen en sus valores predeterminados.

ejemplo

Veamos un ejemplo de cómo crear una clave externa en SQL Server (Transact-SQL) usando la instrucción CREATE TABLE.

Por ejemplo:

CREATE TABLE products
( product_id INT PRIMARY KEY,
  product_name VARCHAR(50) NOT NULL,
  category VARCHAR(25)
);

CREATE TABLE inventory
( inventory_id INT PRIMARY KEY,
  product_id INT NOT NULL,
  quantity INT,
  min_level INT,
  max_level INT,
  CONSTRAINT fk_inv_product_id
    FOREIGN KEY (product_id)
    REFERENCES products (product_id)
);

En este ejemplo de clave externa, creamos la tabla principal como la tabla de productos. La tabla de productos tiene una clave principal que consiste en el campo product_id.

A continuación, creamos una segunda tabla llamada inventario, que será la tabla secundaria en este ejemplo de clave externa. Creamos una clave externa denominada fk_inv_product_id en la tabla de inventario utilizando la instrucción CREATE TABLE. La clave externa establece una relación entre la columna product_id en la tabla de inventario y la columna product_id en la tabla de productos.

El primer ejemplo muestra cómo crear una clave externa que involucre una columna. Veamos cómo crear una clave externa con un campo uno a uno.

Por ejemplo:

CREATE TABLE products
( product_name VARCHAR(50) NOT NULL,
  location VARCHAR(50) NOT NULL,
  category VARCHAR(25)
  CONSTRAINT products_pk PRIMARY KEY (product_name, location)
);

CREATE TABLE inventory
( inventory_id INT PRIMARY KEY,
  product_name VARCHAR(50) NOT NULL,
  location VARCHAR(50) NOT NULL,
  quantity INT,
  min_level INT,
  max_level INT,
  CONSTRAINT fk_inv_product
    FOREIGN KEY (product_name, location)
    REFERENCES products (product_name, location)
);

En este ejemplo de clave externa, nuestra tabla principal denominada productos tiene una clave principal que consta de columnas nombre_producto y ubicación. Por lo tanto, nuestra tabla secundaria y clave externa también deben hacer referencia a estas dos columnas.

Entonces, en este ejemplo, nuestra clave externa llamada fk_inv_product hace referencia a la tabla de productos en función de dos campos: los campos nombre_producto y ubicación.

CREAR CLAVE EXTERNA – USANDO ALTER TABLE DECLARACIÓN

sintaxis

La sintaxis para crear una clave externa mediante la declaración ALTER TABLE en SQL Server (Transact-SQL) es:

ALTER TABLE child_table
ADD CONSTRAINT fk_name
    FOREIGN KEY (child_col1, child_col2, ... child_col_n)
    REFERENCES parent_table (parent_col1, parent_col2, ... parent_col_n);

child_table El nombre de la tabla secundaria que desea modificar. fk_name El nombre de la restricción de clave externa que desea crear. child_col1, child_col2, … child_col_n Columnas en child_table que harán referencia a la clave principal en parent_table. parent_table El nombre de la tabla principal cuya clave principal se usará en child_table. parent_col1, parent_col2, … parent_col3 Las columnas que componen la clave principal en parent_table. La clave foránea hará cumplir el vínculo entre estos datos y las columnas child_col1, child_col2, … child_col_n en child_table.

ejemplo

Veamos un ejemplo de cómo crear una clave externa en SQL Server (Transact-SQL) usando la instrucción ALTER TABLE.

Por ejemplo:

ALTER TABLE inventory
ADD CONSTRAINT fk_inv_product_id
    FOREIGN KEY (product_id)
    REFERENCES products (product_id);

En este ejemplo de clave externa, hemos creado una clave externa en la tabla de inventario llamada fk_inv_product_id que hace referencia a la tabla de productos según el campo product_id.

También podemos crear una clave externa con múltiples campos, como en el siguiente ejemplo:

ALTER TABLE inventory
ADD CONSTRAINT fk_inv_product
    FOREIGN KEY (product_name, location)
    REFERENCES products (product_name, location);

En este ejemplo de SQL Server, hemos creado una clave externa en la tabla de inventario denominada fk_inv_product que hace referencia a la tabla de productos en función de las columnas nombre_producto y ubicación.

(Visited 136 times, 1 visits today)