Definición: ¿Qué significa Foreign Key?
Una clave externa es una columna o grupo de columnas en una tabla de base de datos relacional que proporciona un vínculo entre los datos de dos tablas. Actúa como una referencia cruzada entre tablas porque hace referencia a la clave principal de otra tabla, estableciendo así un vínculo entre ellas.
La mayoría de tablas en un sistema de base de datos relacional se adhiere al concepto de clave externa. En bases de datos y almacenes de datos complejos, los datos de un dominio deben agregarse en varias tablas, manteniendo así una relación entre ellas. El concepto de integridad referencial se deriva de la teoría de claves foráneas.
Las claves externas y su implementación son más complejas que las claves primarias.
Techinfo explica la clave externa
Si bien una clave principal puede existir por sí sola, una clave externa siempre debe hacer referencia a una clave principal en algún lugar. La tabla original que contiene la clave principal es la tabla principal (también conocida como tabla de referencia). Esta clave puede ser referenciada por varias claves externas de otras tablas, conocidas como tablas "secundarias".
Para cualquier columna que actúe como clave externa, debe existir un valor correspondiente en la tabla vinculada. Se debe tener especial cuidado al insertar datos y eliminar datos de la columna de clave externa, ya que una eliminación o inserción descuidada podría destruir la relación entre las dos tablas.
Si la integridad entre las dos bases de datos se ve comprometida, pueden producirse errores.
Por ejemplo, si hay dos tablas, cliente y pedido, se puede crear una relación entre ellas introduciendo una clave externa en la tabla de pedidos que hace referencia al CUSTOMER_ID en la tabla de clientes. La columna CUSTOMER_ID existe en las tablas de pedidos y de clientes.
El CUSTOMER_ID en la tabla de pedidos se convierte en la clave externa, refiriéndose a la clave principal en la tabla de clientes. Para insertar una entrada en la tabla de pedidos, se debe cumplir la restricción de clave externa.
Un intento de ingresar un CUSTOMER_ID que no está presente en la tabla de clientes falla, manteniendo así la integridad referencial de la tabla.
En las bases de datos del mundo real, la integridad entre la clave externa y las tablas de clave principal se puede garantizar mediante la aplicación de restricciones de referencia siempre que las filas de una tabla referenciada se actualicen o eliminen.
Algunas acciones referenciales asociadas con una acción de clave externa incluyen las siguientes:
cascada
Cuando se eliminan las filas de la tabla principal, las columnas de clave externa coincidentes en la tabla secundaria también se eliminan, creando una eliminación en cascada.
Establecer nulo
Cuando una fila a la que se hace referencia en la tabla principal se elimina o actualiza, los valores de clave externa en la fila de referencia se establecen en nulos para mantener la integridad referencial.
disparadores
Las acciones referenciales se implementan normalmente como disparadores. En muchos sentidos, las acciones de clave externa son similares a los disparadores definidos por el usuario. Para garantizar una ejecución adecuada, las acciones referenciales ordenadas a veces se reemplazan con sus activadores equivalentes definidos por el usuario.
Establecer predeterminado
Esta acción referencial es similar a "establecer nulo". Los valores de clave externa en la tabla secundaria se establecen en el valor de columna predeterminado cuando la fila a la que se hace referencia en la tabla principal se elimina o actualiza.
restringir
Ésta es la acción referencial normal asociada con una clave externa. Un valor en la tabla principal no se puede eliminar ni actualizar siempre que una clave externa lo haga referencia en otra tabla.
No Acción
Esta acción referencial es similar en función a la acción "restringir" excepto que se realiza una verificación de no acción solo después de intentar alterar la tabla.