Cómo crear relaciones entre tablas en MySQL con Workbench

Como crear relaciones entre tablas en MySQL con Workbench es algo a lo que deberíamos darle mucha importancia, porque, si el trabajo no es llevado adecuadamente, cuando la aplicación crezca tendremos muchos problemas, es importante invertir tiempo en establecer una base solida sobre la cual trabajara nuestras aplicaciones.

Para crear relaciones entre tablas en MySQL utilizaremos Workbench, una herramienta gráfica que viene con la instalación de MySQL y que nos permite fácilmente establecer relaciones entre nuestras tablas. Aunque no debemos olvidar lo importante que es aprender a establecer estas relaciones por medio de SQL Script (Script de SQL). Porque si queremos obtener una certificación internacional que nos avale como expertos el el manejo de un motor de base de datos , el examen estará basado en SQL Script (Script de SQL) y no en una herramienta gráfica.

Al momento de querer establecer relaciones entre nuestras tablas con el Workbench nos encontraremos como muestra la imagen con dos opciones para establecer una relación entre dos tablas. La Relación Identificadora (Identifying Relationship) y Relación No Identificadora (Non-Identifying Relationship)

Cómo crear relaciones entre tablas en MySQL con Workbench - www.marcossarmiento.com

Relación Identificadora (Identifying Relationship): En una relación identificadora (identifying relationship), la clave primaria de una entidad fuerte es absorbida por una entidad débil. Se dice que es una entidad débil, porque por sí misma no tiene modo de identificarse de forma única (no tiene clave primaria).

Un ejemplo: tenemos una aplicación que registra el ingreso de los empleados a las instalaciones de la organización. he aquí el modelo:

empleado { id_empleado, nombre, apellido, departamento, cargo }
ingreso_a_instalaciones { id_empleado, hora_ingreso, puerta }

En este caso, existe una relación identificadora porque cada registro de ingreso_a_instalaciones *requiere* que se especifique la id_empleado. De no especificarse, no se podría saber quién ingresó a las instalaciones. Eso convierte a cada ingreso_a_instalaciones en una entidad débil, que depende de la existencia de otra entidad (el empleado)

Relación No Identificadora (Non-Identifying Relationship): En una relación no identificadora (non-identifying relationship) no depende de la existencia de otra, porque tiene su propia clave principal.

Un ejemplo: tenemos una aplicación que lleva la nómina:

empleado { id_empleado, nombre, apellido, cargo, departamento, id_empleado_jefe }

En este caso, yo puedo usar la clave foránea id_empleado_jefe para establecer qué otro empleado es jefe de un empleado en particular, pero en sí, cada empleado tiene su id_empleado, por lo que la relación con el *empleado jefe* no tiene para nada que ver con la existencia del empleado común.

Después de dejar claro este punto, procederemos a explicar los tipos de relaciones que existen entre tablas:

Relaciones uno a uno

La relación uno a uno es la menos usada pero es importante conocerla para establecerla en el momento que la necesitemos. En una relación uno a uno, una fila de la tabla A no puede tener más de una fila coincidente en la tabla B y viceversa. Se crea una relación uno a uno si las dos columnas relacionadas son claves principales o tienen restricciones UNIQUE.

Este tipo de relación no es habitual, ya que la mayor parte de la información relacionada de esta manera estaría toda en una tabla. Puede utilizar una relación uno a uno para:

  • Dividir una tabla con muchas columnas.
  • Aislar parte de una tabla por razones de seguridad.
  • Almacenar datos que son efímeros y que pueden eliminarse fácilmente mediante la simple eliminación de la tabla.
  • Almacenar información que se aplica solamente a un subconjunto de la tabla principal.

Para llevar a cabo esta relación en nuestra base de datos debemos crear como muestra el ejemplo, nuestra tabla Pasajero y nuestra tabla Pasaportes. Por ser una relación uno a uno la clave foranea puede estar tanto en la tabla Pasaportes haciendo referencia al id del pasajero como en la tabla Pasajero haciendo referencia al id de pasaportes. En el ejemplo, la clave foranea se encuentra en la tabla Pasaportes haciendo referencia al id del pasajero.

Cómo crear relaciones entre tablas en MySQL con Workbench - www.marcossarmiento.com
Cómo crear relaciones entre tablas en MySQL con Workbench

 

Relaciones uno a muchos

Las relaciones uno a muchos son el tipo de relación más habitual . En este tipo de relación, una fila de la tabla A puede corresponder a muchas filas de la tabla B, pero una fila de la tabla B sólo puede corresponder a una fila de la tabla A.

Por ejemplo, en las tablas Autor y Libros se da una relación uno a muchos, porque, un autor publica muchos títulos, pero cada libro le corresponde sólo a un autor, esto nos confirma que es una relación uno a muchos.

En este tipo de relaciones la clave foránea siempre debe ir en la tabla que hace la relación de muchos, en este caso sería la tabla Libros.

Cree una relación uno a muchos si solamente una de las columnas relacionadas es la clave principal o tiene una restricción UNIQUE.

Cómo crear relaciones entre tablas en MySQL con Workbench - www.marcossarmiento.com
Cómo crear relaciones entre tablas en MySQL con Workbench

 

Relaciones muchos a muchos

En una relación muchos a muchos, una fila de la tabla A puede tener muchas filas coincidentes en la tabla B y viceversa. Este tipo de relaciones se crea definiendo una tercera tabla, denominada tabla de unión, cuya clave principal esté constituida por las claves externas de las tablas A y B.

Por ejemplo, entre las tablas Alumno y Profesor existe una relación muchos a muchos, porque un alumno puede tener muchos profesores y un profesor puede tener muchos alumnos. Para definir una relación muchos a muchos entre estas dos tablas debemos crear una tercera tabla que llamaremos Alumno_Profesor (por convención lleva el nombre de las dos tablas unidas por un guion bajo) . La clave principal de la tabla Alumno_Profesor es la combinación de la columna idAlumno (la clave principal de la tabla Alumno) y la columna idProfesor (la clave principal de la tabla Profesor).

Cómo crear relaciones entre tablas en MySQL con Workbench - www.marcossarmiento.com
Cómo crear relaciones entre tablas en MySQL con Workbench

 

En nuestro próximo articulo veremos normalización de base datos, proceso que nos ayudara a evitar la duplicidad de datos en la misma tabla.

¿Te resulto útil esta información? déjanos tu comentarios y compártela en las redes sociales para que otros pueden beneficiarse y enriquezcan este articulo con sus comentarios.

Facebook Comments Box
Etiquetas: ,