Clave principal vs clave externa: ¿Cuál es la diferencia?

Antes de aprender la diferencia entre la clave principal y la clave externa, aprendamos:

¿Qué son las llaves?

Las claves son atributos que le ayudan a identificar una fila (tupla) en una relación (tabla). Le permiten encontrar la relación entre dos tablas. Las claves le ayudan a identificar de forma única una fila en una tabla mediante una combinación de una o más columnas en esa tabla. La clave de la base de datos también es útil para encontrar un registro o una fila únicos de la tabla.

¿Qué es la relación de base de datos?

La relación de la base de datos son asociaciones entre una o más tablas que se crean mediante declaraciones de combinación. Se utiliza para recuperar datos de la base de datos de manera eficiente. Existen principalmente tres tipos de relaciones: 1) Uno a uno, 2) Uno a muchos, 3) Muchos a muchos.

¿Qué es la clave principal?

Una restricción de clave primaria es una columna o grupo de columnas que identifica de manera única cada fila en la tabla del sistema de administración de base de datos relacional. No puede ser un duplicado, lo que significa que el mismo valor no debe aparecer más de una vez en la tabla.

Una tabla puede tener más de una clave principal. La clave principal se puede definir a nivel de columna o de tabla. Si crea una clave primaria compuesta, debe definirse a nivel de tabla.

¿Qué es la clave externa?

La clave externa es una columna que crea una relación entre dos tablas. El propósito de la clave externa es mantener la integridad de los datos y permitir la navegación entre dos instancias diferentes de una entidad. Actúa como una referencia cruzada entre dos tablas, ya que hace referencia a la clave principal de otra tabla. Todas las relaciones de la base de datos deben estar respaldadas por una clave externa.

DIFERENCIAS CLAVE:

  • Una restricción de clave primaria es una columna que identifica de forma única cada fila en la tabla del sistema de administración de base de datos relacional, mientras que la clave externa es una columna que crea una relación entre dos tablas.
  • La clave principal nunca acepta valores nulos, mientras que la clave externa puede aceptar varios valores nulos.
  • Puede tener solo una clave principal en una tabla, mientras que puede tener varias claves externas en una tabla.
  • El valor de la clave principal no se puede eliminar de la tabla principal, mientras que el valor de la clave externa se puede quitar de la tabla secundaria.
  • No hay dos filas que puedan tener valores idénticos para una clave principal, por otro lado, una clave externa puede contener valores duplicados.
  • No hay limitación para insertar los valores en la columna de la tabla mientras inserta cualquier valor en la tabla de clave externa, asegúrese de que el valor esté presente en una columna de una clave principal.

¿Por qué utilizar la clave principal?

Estos son los contras / beneficios de usar la clave principal:

  • El objetivo principal de la clave principal es identificar todos y cada uno de los registros en la tabla de la base de datos.
  • Puede utilizar una clave principal cuando no permite que nadie introduzca valores nulos.
  • Si elimina o actualiza registros, se llevará a cabo la acción que especificó para garantizar la integridad de los datos.
  • Realice la operación de restricción para rechazar la operación de eliminación o actualización de la tabla principal.
  • Los datos se organizan en una secuencia de índice agrupado siempre que organiza físicamente la tabla DBMS.

¿Por qué utilizar Foreign Key?

Estas son las razones importantes por las que se usa una clave externa:

  • Las claves externas le ayudan a migrar entidades utilizando una clave principal de la tabla principal.
  • Una clave externa le permite vincular dos o más tablas juntas.
  • Hace que los datos de su base de datos sean consistentes.
  • Se puede usar una clave externa para hacer coincidir una columna o combinación de columnas con la clave principal en una tabla principal.
  • La restricción de clave externa de SQL se utiliza para asegurarse de que la integridad referencial del padre de datos coincida con los valores de la tabla secundaria.

Ejemplo de clave principal

Sintaxis:

A continuación se muestra la sintaxis de la clave principal:

CREATE TABLE (Column1 datatype,Column2 datatype, PRIMARY KEY (Column-Name).);

Aquí,

  • Table_Name es el nombre de la tabla que tiene que crear.
  • Column_Name es el nombre de la columna que tiene la clave principal.

Ejemplo:

StudID Rollo No Nombre de pila Apellido Correo electrónico
1 11 Tomás Precio Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo.
2 12 Mella Wright Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo.
3 13 Dana Natan Esta dirección de correo electrónico está protegida contra spambots. Necesita tener JavaScript habilitado para verlo.

En el ejemplo anterior, hemos creado una tabla de estudiantes con columnas como StudID, Roll No, First Name, Last Name y Email. StudID se elige como clave principal porque puede identificar de forma única otras filas en la tabla.

Ejemplo de clave externa

Sintaxis:

A continuación se muestra la sintaxis de Foreign Key:

CREATE TABLE 
(column1 datatype,column2 datatype,constraint (name of constraint)FOREIGN KEY [column1, column2… ]REFERENCES [primary key table name] (List of primary key table column)… );

Aquí,

  • El parámetro Nombre de la tabla indica el nombre de la tabla que va a crear.
  • Los parámetros column1, column2 ... representan las columnas que deben agregarse a la tabla.
  • Restricción denota el nombre de la restricción que está creando.
  • Las referencias indican una tabla con la clave principal.

Ejemplo:

DeptCode DeptName
001 Ciencias
002 inglés
005 Ordenador
Identificación del profesor Fname Lname
B002 David Warner
B017 Sara José
B009 Miguel Brunton

En el ejemplo anterior, tenemos dos mesas, un profesor y un departamento en una escuela. Sin embargo, no hay forma de ver qué búsqueda funciona en qué departamento.

En esta tabla, agregando la clave externa en Deptcode al nombre del Profesor, podemos crear una relación entre las dos tablas.

Identificación del profesor DeptCode Fname Lname
B002 002 David Warner
B017 002 Sara José
B009 001 Miguel Brunton

Este concepto también se conoce como integridad referencial.

Diferencia entre clave primaria y clave externa

Aquí está la diferencia importante entre la clave principal y la clave externa:

Clave primaria Clave externa
Una restricción de clave primaria es una columna o grupo de columnas que identifica de manera única cada fila en la tabla del sistema de administración de base de datos relacional. La clave externa es una columna que crea una relación entre dos tablas.
Le ayuda a identificar de forma única un registro en la tabla. Es un campo de la tabla que es una clave principal de otra tabla.
La clave principal nunca acepta valores nulos. Una clave externa puede aceptar múltiples valores nulos.
La clave principal es un índice agrupado y los datos de la tabla DBMS están organizados físicamente en la secuencia del índice agrupado. Una clave externa no puede crear automáticamente un índice, agrupado o no agrupado.
Puede tener la clave principal única en una tabla. Puede tener varias claves externas en una tabla.
El valor de la clave principal no se puede eliminar de la tabla principal. El valor del valor de la clave externa se puede eliminar de la tabla secundaria.
Puede definir la clave principal implícitamente en las tablas temporales. No puede definir claves externas en las tablas temporales locales o globales.
La clave principal es un índice agrupado. De forma predeterminada, no es un índice agrupado.
No hay dos filas que puedan tener valores idénticos para una clave principal. Una clave externa puede contener valores duplicados.
No hay limitación para insertar los valores en la columna de la tabla. Al insertar cualquier valor en la tabla de claves foráneas, asegúrese de que el valor esté presente en una columna de una clave principal.

Articulos interesantes...