Bien, te has topado con un problema que es común en los ejercicios de Analisis de Sistemas I y Base de Datos I y II, que es el caso de sistemas de facturación.
La mejor forma de resolverlo es mirando ortodoxamente lo que tienes en el sistema:
- Existen dos tipos de facturas, cada una de ellas tiene atributos similares y algunos diferentes, pero por sobre todo
representan cosas u objetos del sistema copletamente distintos. Más allá de sus similitudes, no son
cosas iguales, no sólo por lo que
son, sino porque el
proceso que el sistema hace con ambas es
diferente.
- Una factura sólo puede realizarse por
cancelación de deuda
inmediata.
- Una factura de crédito implica
pagos parciales o totales
posteriores.
-
Cada pago realizado debe emitir su propio
documento cancelatorio, lo que significa que existe otro objeto más, que podemos definir como Recibo de Pago. Este Recibo está vinculado a Pago o Caja (que de por sí es otra entidad) y además relacionado con Factura de Crédito.
- Los Recibos a su vez
pueden definirse con una tabla de detalle si y sólo si el mismo recibo puede ser cancelatorio de
más de una factura, caso en el cual habrá una relación de cardinalidad múltiple con Factura de Credito.
El sistema, globalmente hablando, requiere:
Cita: FACTURA
FACTURA_DETALLE
FACTURA_CREDITO
FC_DETALLE
RECIBO
RECIBO_DETALLE (opcional)
PAGO
Obviamente no estoy incluyendo otros elementos como Producto, Stock (o ListaPrecios), FormaDePago, Caja, Banco, Tarjeta, Remito, RemitoDetalle, y según el sistema y los requerimientos que este plantee.