Ver Mensaje Individual
  #5 (permalink)  
Antiguo 30/01/2013, 16:03
Avatar de andres_15_
andres_15_
 
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 7
Respuesta: Porque no me deja crear estas tablas

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Un campo "subtotal" no puede ser un campo UNIQUE en una factura. Eso no tiene sentido.
Es imposible que puedas pretender que un valor como ese sea único entre todas las facturas posibles.
La cosa tiene dos errores:
1) No es necesario un concepto de "subtotal", porque eso es un dato calculable, y por regla del modelo, los datos calculables no se almacenan.
2) No puedes pretender crear una FK contra un campo no clave. MySQL Admite sólo las PK (definición del modelo) y los UNIQUE, que fungen de claves candidatas. Y ese campo no cumple con ninguna.

Además, resulta bastante incorrecto usar un VARCHAR como campo donde almacenes el numero de factura. Incluso si se usaran códigos alfanuméricos para las facturas, ese diseño no es correcto.

En definitiva, es un modelo de datos defectuoso.
es evidente que tengo muchos problemas pero he tratado de arreglarlo asi:

Tabla 1 nofactura PK(lo almaceno como varchar porque en ocasiones el int me da problemas)
Totalfactura int PK

Tabla2 Contrato Varchar,valorcontrato int

Tabla 3 nofactura,Totalfactura,Contrato,valorcontrato,tota l

En la tabla 3 quiero que todos excepto el total sean foranes ¿Se puede? y lo trate de hacer y coloque : foreign key(nofactura)references tabla1(nofactura)
Y me dio correcto, pero al hacer lo mismo con totalfactura me salio un errorsote que jamas habia visto
Código:
Can't create table 'facturas.#sql-94c_d6' (errno: 150)