Se establece una relación entre dos tablas de base de datos cuando una tabla tiene una clave externa que hace referencia a la clave primaria de otra tabla. Este es el concepto básico detrás del término base de datos relacional.
Cómo funciona una clave externa para establecer una relación
Repasemos los fundamentos de las claves primarias y externas. Una clave principal identifica de forma única cada registro en la tabla. Es un tipo de clave candidata que suele ser la primera columna de una tabla y la base de datos la puede generar automáticamente para garantizar que sea única.
Una clave externa es otra clave candidata (no la clave principal) utilizada para vincular un registro a datos en otra tabla.
Por ejemplo, considere estas dos tablas que identifican qué maestro enseña qué curso.
Aquí, la clave principal de la tabla Cursos es Course_ID. Su clave externa es Teacher_ID:
Course_ID | Nombre del curso | ID del profesor |
---|---|---|
Curso_001 | Biología | Profesor_001 |
Curso_002 | Mates | Profesor_001 |
Curso_003 | Inglés | Profesor_003 |
Puede ver que la clave externa en los cursos coincide con una clave principal en los profesores:
ID del profesor | Nombre del profesor |
---|---|
Profesor_001 | Carmen |
Profesor_002 | Verónica |
Profesor_003 | Jorge |
Podemos decir que la clave foránea Teacher_ID ha ayudado a establecer un relación Entre los cursos y las mesas de profesores.
Tipos de relaciones de base de datos
Usando claves externas u otras claves candidatas, puede implementar tres tipos de relaciones entre tablas:
Doce y cincuenta y nueve de la noche: Este tipo de relación permite solo un registro en cada lado de la relación.
La clave principal se relaciona con un solo registro, o ninguno, en otra tabla. Por ejemplo, en un matrimonio, cada cónyuge tiene solo otro cónyuge. Este tipo de relación se puede implementar en una sola tabla y, por lo tanto, no utiliza una clave externa.
Uno a muchos: Una relación de uno a varios permite que un solo registro en una tabla se relacione con múltiples registros en otra tabla.
Considere un negocio con una base de datos que tenga tablas de Clientes y Pedidos.
Un solo cliente puede comprar varios pedidos, pero un solo pedido no puede estar vinculado a varios clientes. Por lo tanto, la tabla Pedidos contendría una clave externa que coincidía con la clave principal de la tabla Clientes, mientras que la tabla Clientes no tendría una clave externa que apunte a la tabla Pedidos.
Muchos a muchos: Esta es una relación compleja en la que muchos registros de una tabla pueden vincularse con muchos registros de otra tabla. Por ejemplo, nuestro negocio probablemente no solo necesite las tablas de Clientes y Pedidos, sino que probablemente también necesite una tabla de Productos.
Nuevamente, la relación entre la tabla de Clientes y Pedidos es de uno a muchos, pero considere la relación entre la tabla de Pedidos y Productos. Un pedido puede contener varios productos y un producto podría estar vinculado a varios pedidos: varios clientes pueden enviar un pedido que contenga algunos de los mismos productos. Este tipo de relación requiere como mínimo tres tablas.
¿Qué son importantes las relaciones de base de datos?
Establecer relaciones consistentes entre las tablas de la base de datos ayuda a garantizar la integridad de los datos, contribuyendo a la normalización de la base de datos. Por ejemplo, qué sucede si no vinculamos ninguna tabla a través de una clave externa y en su lugar simplemente combinamos los datos en las tablas de Cursos y Profesores, de esta forma:
ID del profesor | Nombre del profesor | Curso |
---|---|---|
Profesor_001 | Carmen | Biología, matematicas |
Profesor_002 | Verónica | Mates |
Profesor_003 | Jorge | Inglés |
Este diseño es inflexible y viola el primer principio de la normalización de la base de datos, Primera forma normal (1NF), que establece que cada celda de la tabla debe contener una sola pieza de datos discreta.
O tal vez decidimos simplemente agregar un segundo registro para Carmen, con el fin de imponer 1NF:
ID del profesor | Nombre del profesor | Curso |
---|---|---|
Profesor_001 | Carmen | Biología |
Profesor_001 | Carmen | Mates |
Profesor_002 | Verónica | Mates |
Profesor_003 | Jorge | Inglés |
Este es todavía un diseño débil, introduciendo duplicación innecesaria y lo que se llama anomalías en la inserción de datos , lo que simplemente significa que podría contribuir a datos inconsistentes.
Por ejemplo, si un maestro tiene varios registros, ¿qué sucede si es necesario editar algunos datos, pero la persona que realiza la edición de los datos no se da cuenta de que existen varios registros? La tabla contendría datos diferentes para el mismo individuo, sin una forma clara de identificarlo o evitarlo.
Al dividir esta tabla en dos tablas, Profesores y Cursos (como se muestra arriba), se crea la relación adecuada entre los datos y, por lo tanto, ayuda a garantizar la coherencia y la precisión de los datos.