Diferencia entre llave primaria (Primary Key) y llave foránea (Foreign Key)

Llaves primarias (Primary Key o PK).

Para que una tabla califique como tabla relacional debe tener una llave primaria.

Las llaves primarias consisten de una o más columnas cuyos datos contenidos sean utilizados para identificar de manera única cada registro (fila) en la tabla.

Cuando la llave primaria se compone de múltiples columnas, los datos de cada columna son utilizados para determinar si un registro es único.

No puede haber duplicados en la columna(s) que compone(n) la llave primaria y no puede estar en blanco o ser NULL.

Sólo puede haber una llave primaria por tabla.

La llave primaria para cada tabla es almacenada en un índice. El índice se utiliza para asegurarse que cada registro (fila) es único.

Llaves foráneas (Foreign Key o FK).

Una llave foránea es un grupo de una o más columnas en una tabla que referencias la llave primaria de otra tabla. No existe un código especial, configuración o definición de tabla que necesites establecer para “designar” oficialmente una llave foránea.

llave-forane

Una llave foránea puede también ser parte de una llave primaria.

llave-foranea-2

En el ejemplo de arriba BusinessEntityID de la tabla PersonPhone es una llave foránea que apunta a la llave primaria BusinessEntityID de la tabla Person. La llave primaria de PersonPhone está conformada por 3 columnas: BusinessEntityID, PhoneNumber y PhoneNumberTypeID.

Es un poco confuso pero está permitido y no es una mala práctica.

A diferencia de las llaves primarias, las llaves foráneas pueden contener duplicados y permiten valores NULL.

Ningún índice es automáticamente creado para las llaves foráneas. Tú como buen DBA (Administrador de Bases de Datos) tienes que definirlos.

Una tabla puede tener múltiples llaves foráneas.

Encontrando llaves primarias y foráneas en el Explorador de Objetos.

Cuando usas Microsoft SQL Server Management Studio (SSMS), puedes ver claramente las llaves primarias, son las columnas que tienen las llaves doradas a su costado.

PrimaryKeyInObjectExplorer

Si has definido un “constraint” de tipo llave foránea, esas columnas tendrán FK luego del nombre do columna. En la imagen de arriba están dentro de un círculo verde.

Restricciones de llaves foráneas o Foreign Key Constraints.

Algunos sistemas de bases de datos permiten establecer foreign key constraints. Ayudan a asegurar la integridad referencial. Evitan que puedas ingresar valores que no se encuentren en la llave primaria de la tabla relacionada.

Estos “constraints” funcionan de la siguiente manera:

  • Evitan que puedas cambiar el valor de una llave foránea a uno que no exista como un valor en la llave primaria de la tabla relacionada.
  • Evitan que borres un registro de la tabla de la llave primaria. Lo cual evita crear registros huérfanos. Registros huérfanos son registros hijos que no tienen padres.
  • Evitan que agregues un valor a la llave foránea que no exista en la llave primaria.

En conclusión, las restricciones hacen cumplir las reglas de la relación de llaves primarias y llaves foráneas.

Tabla comparativa.

Item Llave primaria Llave foránea
1 o más columnas
Permite duplicados No
Permite NULL No
Identifica una fila de manera única Quizás
Número permitido por tabla 1 1 o más
Indexado Automáticamente No se crea ningún índice automáticamente

Escrito por essentialSQL ver artículo aquí.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s