Bueno, después de una revisión exhaustiva, y gracias al corrector sintáctico del MySQL Workbench, junto con su log de ejecuciones, pude depurar al menos en general el script creado por tu aplicación, que lamento decirlo, es pura basura.
Hay varios y múltiples errores de construcción en el script y otros varios más a nivel conceptual de BBDD, que te deallo acá:
1) Había
una coma menos en una tabla, lo que sin duda generaba un error sintáctico.
2)
Los DROP TABLE IF EXISTS al inicio
estaban todos en orden incorrecto. Cuando tienes tablas con FK el orden de borrado es exactamente el inverso al de creación, para evitar errores por dependencias de FK (se debe eliminar la tabla dependiente primero).
3) Había una
incorrecta definición de las FK. Una FK es un campo o conjunto de campos que referencia a la
clave primaria de otra tabla. En tu caso estabas creando FK que apuntaban a campos no PK.
4) Por extensión, MySQL permite crear FK hacia campos no PK
siempre y cuando los campos referidos sean UNIQUE en su tabla, con lo que se transformarían en claves candidatas (CC), cumpliendo con la unicidad de valor. Pero los campos apuntados ni siquiera eran UNIQUE.
5)
Existían dependencias circulares, que son de construcción y cumplimiento imposible. Eso es un defecto de diseño grave, que hace que una tabla A tenga la FK de la tabla B y la tabla B la FK de la tabla A. Eso es un error gravísimo de diseño.
6) Había tablas que contenían
FKs innecesarias, lo que sugiere que las relaciones están mal definidas, por una definición defectuosa de Entidades y Relaciones a nivel lógico.
7) Existe evidencia de
posibles relaciones N:N que requerirían tablas adicionales (exigencia del modelo E-R), y no están, por lo cual se les ha implementado soluciones incorrectas.
Depurando todo, y eliminando algunas cosa de de ciertas tablas (sólo las FK indebidas) quedaría mas o menos así:
Código MySQL:
Ver original
Anterioridad
ENUM ('Si','No'),
Terraza
ENUM ('Si','No'),/*Estancia*/
Importe_total
FLOAT(6,2),Supletoria
ENUM ('Si','No'),
Fecha_incorporacion
DATE,
Como te digo, esta
no es la solución. Aún no hice que se reconstruyera el diagrama para analizar mejor el diseño global, pero ese script no producirá errores.
Luego de que lo revise todo, te comento el resto.
Saludos.