Hay errores a varios niveles, y se vuelve un poco complicado darte una solución sin instarte a corregir primero los defectos de diseño que tienes...
Por lo pronto, francamente resulta incoveniente usar campos TEXT para datos tan básicos como nombres, apellidos, localidades, denominaciones de servicios, etc. Es excesivo e innecesario.
No es convneinte usar DECIMAL para datos enteros, para eso uya existen los INT, que en este caso usará menos espacio en el disco que un DECIMAL.
Código MySQL:
Ver original-- Table `DB`.`CLIENTES`
-- -----------------------------------------------------
PRIMARY KEY (`COD_CLIENTE_IMPUTACION`, `COD_CLIENTE_P_TRABAJO`) )
En este caso estás definicendo una
clave compuesta, lo que es terriblemente inseguro, ya que la hará que los campos cod_cliente_imputacion y cod_cliente_p_trabajo puedan repetirse entre diferentes registros sin romper la unicidad de la clave.
No se ve la necesidad de hacer una clave compuesta en ese caso, y no queda claro por qué una aplicación no puede usar la misma clave preexistente en la tabla.
Si pudieras explicarnos esto último, tal vez podamos orientarte mejor.
Código MySQL:
Ver original-- Table `DB`.`SUBSERVICIOS_P_TRABAJO`
-- -----------------------------------------------------
Mismo conjunto de errores: Campos TEXT donde deberían ser VARCHAR. Creo que necesitas estudiar un poco mejor los requerimientosde almacenamiento antes de diseñar las tablas. No pones un tipo TEXT a menos que sea total y absolutamente necesario, entre otras cosas porque no son sencillos ni eficientes de indexar.
Código MySQL:
Ver original-- Table `TITHINK_DB_CASA_2`.`CONSUMO_APPLE`
-- -----------------------------------------------------
INDEX `FK_CONSUMO_APPLE_CLIENTES_idx` (`Codigo_Filial` ASC) , INDEX `FK_CONSUMO_APPLE_SUBSERVICIOS_PT_idx` (`COD_SUBSERVICIO` ASC) , REFERENCES `DB`.
`CLIENTES` (`COD_CLIENTE_P_TRABAJO` ) REFERENCES `DB`.
`SUBSERVICIOS_P_TRABAJO` (`COD_SUBSERVICIO` )
El mismo tipo de errores con dos sumados: No se deben usar caracteres extendidos (ñ, á, ç, por ejemplo) en los nombres de las tablas.
Generan serios problemas en la programación, y muchísimos errores de sintaxis no detectables. Usa el alfabeto básico.
Y tampoco se deben usar espacios vacíos, ni caracters o palabras reservadas.
El segundo error es más grave:
Esto está mal escrito.
Estás intentando crear una FK referenciando
un único campo, hacia una tabla cuya PK es
compuesta. Una FK debe apuntar a
toda la clave, no a parte de ella.
Por consecuencia, si vas a mantener la PK compuesta, deberás poner los mismos campos, del mismo tipo y en el mismo orden de la PK, en la FK.
¿Se va entendiendo?
Por cierto: Un IMEI no tiene 45 dígitos. Los móviles tienen 15, y los simcard tienen 20. Tienes que ajustar el campo al tamaño exacto que tendrá, para evitar que entren datos basura qu epasen por error (si, se cometen errores, hasta las empresas internacionales meten la pata)