La diferencia clave entre la clave externa y la clave principal es que la clave externa es una columna o un conjunto de columnas que hacen referencia a una clave principal o una clave candidata de otra tabla, mientras que la clave principal es una columna o un conjunto de columnas que se puede usar para identificar de forma única una fila en una tabla.
Una columna o un conjunto de columnas que se puede usar para identificar o acceder a una fila o un conjunto de filas en una base de datos se denomina clave. Una clave principal en una base de datos relacional es una combinación de columnas en una tabla que identifica de forma única una fila de la tabla. La clave externa en una base de datos relacional es un campo en una tabla que coincide con la clave principal de otra tabla. La clave foránea se utiliza para cruzar tablas de referencia.
¿Qué es la clave externa?
La clave externa es una restricción referencial entre dos tablas. Identifica una columna o un conjunto de columnas en una tabla, denominada tabla de referencia que hace referencia a un conjunto de columnas en otra tabla, denominada tabla referenciada. La clave externa o las columnas en la tabla de referencia deben ser la clave principal o una clave candidata (una clave que se puede usar como clave principal) en la tabla a la que se hace referencia. Además, las claves externas permiten vincular datos en varias tablas. Por tanto, la clave foránea no puede contener valores que no aparezcan en la tabla a la que hace referencia. Luego, la referencia proporcionada por la clave externa ayuda a vincular la información en varias tablas y esto se volvería esencial con las bases de datos normalizadas. Múltiples filas en la tabla de referencia pueden hacer referencia a una sola fila en la tabla a la que se hace referencia.
Figura 01: Asignación de clave externa
En el estándar ANSI SQL, la restricción FOREIGN KEY define claves foráneas. Además, es posible definir las claves foráneas al crear la propia tabla. Una tabla puede tener varias claves externas y pueden hacer referencia a diferentes tablas.
¿Qué es la clave principal?
La clave principal es una columna o una combinación de columnas que define de forma única una fila en una tabla de una base de datos relacional. Una tabla puede tener como máximo una clave principal. La clave principal impone la restricción implícita NOT NULL. Por lo tanto, una columna con clave principal no puede tener valores NULL. La clave principal puede ser un atributo normal en la tabla que se garantiza que es único, como un número de seguro social, o podría ser un valor único generado por el sistema de administración de la base de datos, como un identificador único global (GUID) en Microsoft SQL Server.
Figura 02: Clave principal
Además, la restricción PRIMARY KEY en ANSI SQL Standard define las claves primarias. También es posible definir una clave principal al crear la tabla. Además de eso, SQL permite que la clave principal se componga de una o más columnas, y cada columna que se incluye en la clave principal se define implícitamente como NOT NULL. Pero algunos sistemas de administración de bases de datos requieren que las columnas de clave principal sean explícitamente NO NULA.
¿Cuál es la diferencia entre la clave externa y la clave principal?
Clave externa vs Clave principal |
|
La clave externa es una columna o grupo de columnas en una tabla de una base de datos relacional que proporciona una asociación entre los datos de dos tablas. | La clave principal es una columna de tabla de base de datos relacional especial o una combinación de varias columnas que permite identificar de forma única todos los registros de la tabla. |
NULO | |
La clave externa acepta valor NULL. | El valor de la clave principal no puede ser NULL. |
Número de teclas | |
La tabla puede tener varias claves externas. | La tabla solo puede tener una clave principal. |
Duplicación | |
Las tuplas pueden tener un valor duplicado para un atributo de clave externa. | Dos tuplas en una relación no pueden tener valores duplicados para un atributo de clave principal. |
Resumen: clave externa frente a clave principal
La diferencia entre clave externa y clave principal es que la clave externa es una columna o un conjunto de columnas que hacen referencia a una clave principal o una clave candidata de otra tabla, mientras que la clave principal es una columna o un conjunto de columnas que se puede usar para identificar de forma única una fila en una tabla.