Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/04/2010, 07:37
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Punto de Venta

En realidad, para poder gestionar más de un punto de venta, lo que debes hacer es replantear un poco el modelo de datos, aplicando la descripción de la entidad:
"Una factura pertenece a un cliente, se emite en un punto de venta, posee fecha, número consecutivo para cada punto de ventas, y un importe total."
Esto significa dos cosas:
1) La clave primaria está compuesta por el número de punto de venta y el número de factura.
2) El número de una factura es consecutivo e incremental pero no es autoincremental, ya que de serlo no habría valores consecutivos en los mismos puntos de venta.
Entonces, la solución viene por tres partes:
- Si ya tienes facturas emitidas, hay que hacer una migración de datos, porque los modelos son incompatibles.
- La numeración consecutiva de las facturas no puede manejarse por un campo definido como auto_increment, sino que posiblemente se deba manejar en la aplicación, o bien con una tabla accesoria, la cual conserve los números máximos de factura para cada punto de venta (Oracle, por ejemplo, posee objetos específicos -secuencias- que no dependen de las tablas para esto).
- En la tabla Factura, deberás definir ambos campos (puntoDeVenta y NumeroFactura), como PK, y por consecuencia, también deberás hacerlo en la tabla que conserve el detalle de la factura, ya que la restricción de clave foránea exige que una FK debe apuntar a toda la PK y no a una parte de ella, y como la PK de factura va a cambiar, también debe cambiar la FK. Una segunda consecuencia es que esto implica es que la migración de datos afectará todas las tablas que usen como FK la PK de Factura.

¿Se entiende bien la idea?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)