Descubre Cómo Declarar Varias Claves Foráneas en SQL: Guía Definitiva y Sintaxis Fácilpost-template-default single single-post postid-46 single-format-standard et_pb_button_helper_class et_fixed_nav et_show_nav et_secondary_nav_enabled et_primary_nav_dropdown_animation_fade et_secondary_nav_dropdown_animation_fade et_header_style_left et_pb_footer_columns4 et_cover_background et_pb_gutter et_pb_gutters3 et_right_sidebar et_divi_theme et-db
771 715 4434

Una de las características clave de las bases de datos relacionales es la capacidad de enlazar datos almacenados en diferentes tablas. Estos enlaces, llamados referencias, actúan esencialmente como conexiones entre tablas. En este artículo, aprenderemos qué hace la restricción FOREIGN KEY (FK) en SQL, cómo es su sintaxis para declarar una o varias claves foráneas y cuáles son las mejores prácticas para mantener la integridad referencial.

¿Qué es una clave foránea y por qué es importante?

Una FOREIGN KEY (clave foránea) es una restricción que vincula una columna (o conjunto de columnas) de una tabla con la PRIMARY KEY (o una UNIQUE) de otra tabla. Para entender el concepto de la restricción FOREIGN KEY en SQL, puede pensar en ella como un enlace de referencia entre las tablas que se conocen como primaria (o padre) y extranjera (o hija).

La integridad referencial asegura que se mantengan las referencias entre las claves primarias y las externas. Al utilizar la restricción FOREIGN KEY, aseguramos la integridad, la corrección y la compacidad de los datos. De este modo:

  • Actúa en inserciones: Si intentamos ingresar un registro con un valor de clave foránea que no existe en la tabla referenciada, el motor de base de datos muestra un mensaje de error.
  • Actúa en eliminaciones y actualizaciones: Si intentamos eliminar un registro o modificar un valor de clave primaria de una tabla si una clave foránea hace referencia a dicho registro, SQL Server (u otro motor) no lo permite, garantizando la existencia de la fila referenciada.

Sintaxis para declarar varias FK en SQL

Cuando diseñamos bases de datos relacionales, es sumamente común que una tabla deba relacionarse con múltiples tablas padres. Para declarar varias restricciones FOREIGN KEY dentro de una misma sentencia CREATE TABLE, se deben separar las definiciones mediante comas en el nivel de tabla.

A continuación, se detalla la estructura sintáctica estándar para definir una tabla con múltiples claves foráneas:

Lea también: IVA 21% Excel

CREATE TABLE NombreTablaHija (
    Columna1 TipoDatos,
    Columna2 TipoDatos,
    ColumnaFK1 TipoDatos,
    ColumnaFK2 TipoDatos,
    CONSTRAINT FK_NombreRelacion1 FOREIGN KEY (ColumnaFK1) REFERENCES TablaPadre1 (ColumnaPK1),
    CONSTRAINT FK_NombreRelacion2 FOREIGN KEY (ColumnaFK2) REFERENCES TablaPadre2 (ColumnaPK2)
);

En esta sintaxis, luego de "references" indicamos el nombre de la tabla referenciada y el campo que es clave primaria en la misma, a la cual hace referencia la clave foránea. Una restricción FOREIGN KEY especificada en el nivel de tabla debe tener el mismo número de columnas de referencia que la lista de columnas de la restricción.

Ejemplo práctico: Relación de varias claves foráneas

Pensemos en una tabla intermedia para registrar vuelos. La tabla AirplaneFlight tiene una clave externa (AirplaneId) que hace referencia a la columna AirplaneId de la tabla Airplane. También tiene una clave foránea (FlightId) que hace referencia a la columna FlightId de la tabla Flight.

CREATE TABLE AirplaneFlight (
    AirplaneId INT,
    FlightId INT,
    Fecha Varchar(50),
    CONSTRAINT FK_AirplaneId FOREIGN KEY (AirplaneId) REFERENCES Airplane(AirplaneId),
    CONSTRAINT FK_FlightId FOREIGN KEY (FlightId) REFERENCES Flight(FlightId)
);

Acciones al actualizar o eliminar (ON DELETE / ON UPDATE)

Otra ventaja de la restricción FOREIGN KEY (FK) es que garantiza la corrección de la referencia incluso cuando se modifican o eliminan los valores de la tabla primaria. Existen diversas opciones que podemos añadir a la sintaxis de nuestras FK:

Lea también: Guía IVA reducido

  • RESTRICT (o NO ACTION): impide borrar/actualizar el padre si hay hijos que lo referencian. Es la opción más segura por defecto.
  • CASCADE: al borrar/actualizar el padre, propaga la operación a los hijos (borra o actualiza la FK de forma automática).
  • SET NULL: al borrar/actualizar el padre, la FK del hijo se vuelve NULL (la columna de la FK debe permitir valores nulos).
  • SET DEFAULT: establece un valor por defecto predefinido en la FK del hijo.

Límites y reglas al usar múltiples FK

El motor de base de datos no tiene un límite predefinido para el número de restricciones FOREIGN KEY que puede contener una tabla y que hacen referencia a otras tablas. Sin embargo, existen restricciones físicas y de diseño según el SGBD:

  • Una tabla puede hacer referencia a otras 253 tablas y columnas como claves externas (referencias de salida) como máximo.
  • SQL Server aumenta el límite para la cantidad de otras tablas y columnas que pueden hacer referencia a las columnas de una sola tabla (referencias de entrada) hasta 10 000 en sus versiones recientes.
  • Las restricciones FOREIGN KEY solo pueden hacer referencia a las tablas de la misma base de datos en el mismo servidor.
  • La FK debe tener el mismo tipo de datos y longitud idéntica que la columna referenciada en la tabla primaria para evitar errores de incompatibilidad.

Lea también: ¿Cómo localizar tus XML del SAT?

tags: #como #declarar #varias #fk #en #sql