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)
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.

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.

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).

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.


Tratándose el tema de relaciones entre tablas en MySQL, mi duda es como puedo relacionar una tabla de una base de datos con un código en Java?
Estimado Andrés
Al momento que creas un aplicación siempre necesitaras guardar esa información en una base de datos y es en ese momento cuando se relaciona el código en Java o en cualquier otro lenguaje con una base de datos. Por ejemplo, desarrollas un sistema de ventas donde los usuarios ingresaran las facturas de las ventas del día ¿donde guardas todas esa información? en una base de datos. Y con la información almacenada en la base de datos podrás obtener las ventas totales del mes, las gastos, las utilidades, las comisiones etc. Y con la información que obtienes de los requerimientos de tus clientes se diseña las tablas y las clases que necesitara el proyecto.
Espero que haya podido ayudarte con tus dudas e inquietudes, estoy para apoyarte en todo.
En unos días actualizaremos el articulo con un vídeo explicativo para que con la información que brindamos en nuestra web sea suficiente para que nuestros lectores puedan elaborar y diseñar sus base de datos profesionalmente.
Marcos Sarmiento
http://www.marcossarmiento.com
Estimado Andrés
Para relacionar una base de datos con código Java o cualquier otro lenguaje de programación debes realizar lo siguiente:
1. Crear tu base de datos con sus tablas, sus PK(Claves Principal) FK(Claves Foráneas) y sus relaciones.
2. Ya sea que estés trabajando una Aplicación de Escritorio o una Aplicación Web, deberás crear la capa Entidad con todas las una entidad por cada tabla que por convención deberá tener el mismo nombre de la tabla y cada atributo deberá tener el mismo nombre y tipo de cada campo de su respectiva tabla.
3. En tu aplicación Java deberás crear una cadena de conexión a tu base de datos (MySQL, SQL Server, Oracle etc), en google podrás muchos ejemplos, pero, si tienes dudas me puedes escribir.
4. Por medio de tu cadena de conexión te podrás conectar a tu base de datos y realizar sentencias SQL (select, update, insert y delete) y mostrar información, agregar, actualizar y borrar.
5. Para mostrar esa información al usuario si estas trabajando una aplicación de escritorio lo harás por medio de Formularios y si es una aplicación web por HTML
Espero que haya podido ayudarte con tus dudas e inquietudes, estoy para apoyarte en todo.
Saludos,
Marcos Sarmiento
http://www.marcossarmiento.com
Esperando información de Java , ojala pronto la puedan actualizar.
Saludos
En este mes comenzamos con los artículos referente a Java. Enseñaremos como crear una pagina web desde cero y también impartiremos un curso web para todos los interesados, pronto tendremos noticias.
Muy bien explicado !! Gracias x compartir tus conocimientos !!
Saludos !!
me sirvió muchas gracias