Clave externa


Una clave externa es un conjunto de atributos en una tabla que se refiere a la clave principal de otra tabla. La clave externa vincula estas dos tablas. Otra forma de decirlo: en el contexto de las bases de datos relacionales , una clave externa es un conjunto de atributos sujetos a cierto tipo de restricciones de dependencia de inclusión , específicamente una restricción de que las tuplas que consisten en los atributos de clave externa en una relación , R, deben también existen en alguna otra relación (no necesariamente distinta), S, y además esos atributos también deben ser una clave candidata en S. [1] [2] [3]En palabras más simples, una clave externa es un conjunto de atributos que hace referencia a una clave candidata. Por ejemplo, una tabla llamada EQUIPO puede tener un atributo, MEMBER_NAME, que es una clave externa que hace referencia a una clave candidata, PERSON_NAME, en la tabla PERSON. Dado que MEMBER_NAME es una clave externa, cualquier valor que exista como el nombre de un miembro en TEAM también debe existir como el nombre de una persona en la tabla PERSON; en otras palabras, cada miembro de un EQUIPO es también una PERSONA.

La tabla que contiene la clave externa se denomina tabla secundaria y la tabla que contiene la clave candidata se denomina tabla principal o referenciada. [4] En el modelado e implementación relacional de bases de datos, una clave candidata es un conjunto de cero o más atributos, cuyos valores están garantizados como únicos para cada tupla (fila) en una relación. El valor o la combinación de valores de los atributos de clave candidatos para cualquier tupla no se puede duplicar para ninguna otra tupla en esa relación.

Dado que el propósito de la clave externa es identificar una fila particular de la tabla referenciada, generalmente se requiere que la clave externa sea igual a la clave candidata en alguna fila de la tabla principal, o de lo contrario no tenga ningún valor (el valor NULL . [ 2] ). Esta regla se denomina restricción de integridad referencial entre las dos tablas. [5] Debido a que las violaciones de estas restricciones pueden ser la fuente de muchos problemas de bases de datos, la mayoría de los sistemas de administración de bases de datos proporcionan mecanismos para asegurar que cada clave externa no nula corresponda a una fila de la tabla referenciada. [6] [7] [8]

Por ejemplo, considere una base de datos con dos tablas: una tabla CLIENTE que incluye todos los datos del cliente y una tabla PEDIDO que incluye todos los pedidos de los clientes. Suponga que la empresa requiere que cada pedido se refiera a un solo cliente. Para reflejar esto en la base de datos, se agrega una columna de clave externa a la tabla ORDER (por ejemplo, CUSTOMERID), que hace referencia a la clave principal del CLIENTE (por ejemplo, ID). Debido a que la clave principal de una tabla debe ser única, y debido a que CUSTOMERID solo contiene valores de ese campo de clave principal, podemos asumir que, cuando tiene un valor, CUSTOMERID identificará al cliente en particular que realizó el pedido. Sin embargo, esto ya no se puede suponer si la tabla ORDER no se mantiene actualizada cuando se eliminan las filas de la tabla CLIENTE o se modifica la columna ID, y trabajar con estas tablas puede resultar más difícil.Muchas bases de datos del mundo real solucionan este problema "inactivando" en lugar de eliminar físicamente las claves externas de la tabla maestra, o mediante programas de actualización complejos que modifican todas las referencias a una clave externa cuando se necesita un cambio.

Las claves externas juegan un papel esencial en el diseño de bases de datos . Una parte importante del diseño de la base de datos es asegurarse de que las relaciones entre las entidades del mundo real se reflejen en la base de datos mediante referencias, utilizando claves externas para hacer referencia de una tabla a otra. [9] Otra parte importante del diseño de la base de datos es la normalización de la base de datos , en la que las tablas se dividen y las claves externas hacen posible su reconstrucción. [10]

Varias filas en la tabla de referencia (o secundaria) pueden hacer referencia a la misma fila en la tabla de referencia (o principal). En este caso, la relación entre las dos tablas se denomina relación de uno a muchos entre la tabla de referencia y la tabla de referencia.