logo-mysql-workbench
En el anterior artículo vimos cómo Construir nuestro diagrama de Entidad-Relación mediante ingeniería inversa, pero hoy vamos a ver que este método puede generarnos un diagrama algo irreal con la relación entre tablas y puede generarnos problemas con las Foreign Keys en MySQL Workbench. Y el problema es que muchas de las aplicaciones de Open Source no han diseñado un modelo de datos correcto, informáticamente hablando. Me refiero a que las tablas deben ser nombradas en singular, no en plural, y esto ocasiona los problemas que os comento en esta ocasión.

Si nos fijamos en el siguiente diagrama, veremos que hay dos tablas en las que he señalado en rojo dos claves foráneas hacia la tabla Projects. Existían más claves de ese tipo en el restao de tablas, pero ya las he resuelto. Os explicaré cómo.
MySQL_Workbench_ForeignKeys_1Como podéis ver, al establecer una relación entre la tabla Projects y la tabla Boards, se ha creado de forma automática una clave foránea llamada projects_id en la tabla Boards. Esto no debería de haber sido así, ya que esa tabla ya contiene una columna llamada project_id. Y tampoco debería ser así ya que la tabla en realidad no tiene esa columna. Esa columna se ha creado únicamente para poder visualizar una línea entre las dos tablas relacionadas. Vamos a resolver ese problema haciendo que la constraint señale a la columna project_id y no projects_id.

Si seleccionamos la tabla Boards, se mostrará un panel inferior donde podemos cambiar la configuración de las columnas. Vemos que se ha añadido esa columna que no existe en realidad. Para solucionarlo, nos vamos a la pestaña Foreign Keys.

MySQL_Workbench_ForeignKeys_3En esta pestaña, seleccionamos en la parte de la izquierda la constraint que queremos modificar. En este caso solo se muestra una constraint. Y en la derecha nos aparecerá esa columna seleccionada como parte de la constraint. Lo que tenemos que es hacer es cambiarla por la clave primaria correcta. En este caso, project_id. Al hacerlo se nos habilitará a su derecha la un desplegable en Referenced Column, donde tendremos que indicar la columna que es Primary Key en la tabla Projects para que la constraint sea correcta.

MySQL_Workbench_ForeignKeys_4

Una vez realizado esto, ya podemos eliminar la columna projects_id que ya dijimos que no existe en el modelo real. Nos vamos a la pestaña Columns y la eliminamos pulsando el botón derecho del ratón sobre ella y seleccionando la opción Deleted Selected.

MySQL_Workbench_ForeignKeys_5

Si volvemos al diagrama, veremos que ya no aparece la columna projects_id en la parte inferior de la tabla Boards y que la línea de puntos que la une con la tabla Projects sale desde la columna project_id.

MySQL_Workbench_ForeignKeys_6Esto es un claro ejemplo de que las bases de datos de aplicaciones libres no siempre tienen un diseño totalmente correcto. Todo esto sin hablar de que este modelo de datos sobre el que he realizado el ejemplo no traía ninguna constraint y las que veis en las imágenes las he creado yo mismo manualmente.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies