Agregar Una Llave Foranea A Una Tabla En Mysql

Una llave foránea, también llamada foreign key, es una columna o conjunto de columnas en una tabla que apuntan a la llave primaria de otra tabla. Sirve para establecer y reforzar una relación entre dos tablas.
Crear una llave foránea ayuda a garantizar la integridad referencial. Esto significa que los valores en la columna de llave foránea deben coincidir con los valores existentes en la llave primaria de la tabla referenciada.
Pasos para Agregar una Llave Foránea
Primero, debes tener dos tablas. Una será la tabla "hija" que contendrá la llave foránea. La otra será la tabla "padre" con la llave primaria a la que apuntará la llave foránea.
Must Read
Necesitarás conocer el nombre de la tabla padre. También, el nombre de la columna de la llave primaria en esa tabla es importante. Por último, identifica el nombre de la columna en la tabla hija donde almacenarás la llave foránea.
Aquí te muestro cómo agregar una llave foránea a una tabla existente en MySQL.
Opción 1: Usando la Sentencia ALTER TABLE
La manera más común de agregar una llave foránea es usando la sentencia ALTER TABLE. Esta sentencia permite modificar la estructura de una tabla ya existente.

La sintaxis básica es la siguiente:
ALTER TABLE nombre_tabla_hija
ADD CONSTRAINT nombre_constraint
FOREIGN KEY (columna_llave_foranea)
REFERENCES nombre_tabla_padre(columna_llave_primaria);
nombre_tabla_hija es el nombre de la tabla a la que le agregas la llave foránea. nombre_constraint es un nombre que le das a la restricción de la llave foránea. Debe ser único dentro de la base de datos.
columna_llave_foranea es la columna en la tabla hija que actuará como llave foránea. nombre_tabla_padre es el nombre de la tabla padre. Y columna_llave_primaria es la columna de la tabla padre a la que se hace referencia (generalmente la llave primaria).

Ejemplo: Supongamos que tienes una tabla llamada `ordenes` y una tabla llamada `clientes`. Quieres agregar una llave foránea en la tabla `ordenes` que haga referencia a la tabla `clientes`.
Asume que la tabla `clientes` tiene una llave primaria llamada `id_cliente` y la tabla `ordenes` tiene una columna llamada `cliente_id` que almacenará el `id_cliente` de la tabla `clientes`.
La sentencia SQL sería:

ALTER TABLE ordenes
ADD CONSTRAINT fk_cliente_orden
FOREIGN KEY (cliente_id)
REFERENCES clientes(id_cliente);
Opción 2: Creando la Tabla con la Llave Foránea
Puedes definir la llave foránea al momento de crear la tabla. Esto se hace dentro de la sentencia CREATE TABLE.
La sintaxis es similar a la anterior, pero se incluye dentro de la definición de la tabla:
CREATE TABLE nombre_tabla_hija (
...otras columnas...,
columna_llave_foranea TIPO_DE_DATO,
CONSTRAINT nombre_constraint
FOREIGN KEY (columna_llave_foranea)
REFERENCES nombre_tabla_padre(columna_llave_primaria)
);
Ejemplo:

CREATE TABLE ordenes (
id_orden INT PRIMARY KEY AUTO_INCREMENT,
cliente_id INT,
fecha_orden DATE,
CONSTRAINT fk_cliente_orden
FOREIGN KEY (cliente_id)
REFERENCES clientes(id_cliente)
);
Es importante que el TIPO_DE_DATO de la columna de llave foránea en la tabla hija coincida con el tipo de dato de la llave primaria en la tabla padre. Si no coinciden, MySQL arrojará un error.
Consideraciones Adicionales
Al agregar una llave foránea, MySQL verificará que los valores existentes en la columna de la tabla hija correspondan a valores existentes en la llave primaria de la tabla padre. Si no, la operación fallará. Deberás corregir los datos primero.
Puedes usar la cláusula `ON DELETE` y `ON UPDATE` para especificar qué sucede cuando se borra o actualiza un registro en la tabla padre. Por ejemplo, `ON DELETE CASCADE` eliminará los registros relacionados en la tabla hija cuando se elimine un registro en la tabla padre. Otra opción es `ON DELETE SET NULL`, que establecerá el valor de la llave foránea a NULL.
Agregar una llave foránea es una práctica importante para mantener la integridad de tus datos en MySQL. Ayuda a asegurar la consistencia y validez de las relaciones entre las tablas en tu base de datos.
