Diseño de Base de Datos

25/01/2007 - 21:25 por Mickro | Informe spam
Tengo un negocio en el cual ademas de recibir pagos en efectivo, tambien
recibo ordenes de compra que expide un sindicato por un cierto valor. Por
ejemplo, un cliente puede venir a comprar a mi negocio con una Orden de
Compra de $ 10,00 o sea, tiene $ 10,00 para gastar en mi negocio, a fin de
mes yo le cobro esos $ 10 pesos al sindicato correspondiente.

Tambien puede darse el caso en el que el cliente puede pagarme con, por
ejemplo, 2 Ordenes de Compra cada una de $ 5,00 (que en total harian $
10,00). Pero yo debe ingresar en mi programa las dos ordenes por separado.
No puedo sumarlas he ingresar una sola Orden de $ 10,00.

Tambien puede darse el caso en el que el Total de la venta sea de $ 15,00 y
el cliente me pague con una Orden de Compra de $ 10,00 y el resto me pague
en efectivo (o sea $ 5,00 en efectivo).

Tambien, el cliente puede pagar el total de la compra solamente en Efectivo
o solamente con Ordenes de Compra.

En el caso en que el pago de la venta sea solamente en Efectivo, el valor de
IDOrden de la tabla tblPagos queda NULL.

En base a esto diseñe estas tablas

tblVentas

[IDVenta] (PK)
[Fecha]

tblDetalleVentas

[IDVenta] (FK)
[Codigo] (PK) > ' Codigo de barras del producto vendido
[Descripcion]
[Cantidad]
[Precio]
[Importe]

tblPagos

[IDVenta] (FK)
[IDPago] (PK)
[Tipo] ==> ' Puede ser "Efectivo" u "Orden"
[Monto] ==> ' Cantidad de Efectivo que recibo o Monto de la Orden
[Numero] => ' Numero de la Orden que genera al sindicato, es unica no hay
dos Ordenes con el mismo numero.
[IDCliente]
[FechaEmision] ==> 'Figura en la Orden, es la fecha en que el sindicato
emitio esa orden


Este diseño me funciona bien, pero cuado el pago de la venta es solamente en
Efectivo (que es en la mayoria de los casos) los campos Numero, IDCliente,
FechaEmision quedan en NULL. Mi pregunta es si este diseño es correcto?, en
caso de que no sea asi, como lo diseñarian ustedes?.
Un saludo

Preguntas similare

Leer las respuestas

#1 Gustavo Larriera (MVP)
25/01/2007 - 22:02 | Informe spam
No existe un único diseño cponceptual correcto y del mismo diseño pueden
hacerse diversas representaciones lógicas. Y para hacer más entretenido el
asunto, una representación lógica puede implementarse físicamente de diversas
maneras :-)

Si consideras que tu implementación resuelve bien el problema y puedes
aplicar sin problemas todas las consultas qe necesitas y con buen
rendimiento, entonces déjalo como está.

Si conceptualmente entiendes que las compras en efectivo y las compras con
órdenes son diferentes y deben tratarse en forma diferente cada una, podrías
implementar en tablas separadas.

Pero también considera lo que posibemente te sugieran otros amigos del foro.
Hay muchas alternativas cuando de diseñar se trata.

Gustavo Larriera, MVP
Solid Quality Mentors [www.solidq.com]
Este mensaje se proporciona tal como es, sin garantías de ninguna clase



"Mickro" wrote:

Tengo un negocio en el cual ademas de recibir pagos en efectivo, tambien
recibo ordenes de compra que expide un sindicato por un cierto valor. Por
ejemplo, un cliente puede venir a comprar a mi negocio con una Orden de
Compra de $ 10,00 o sea, tiene $ 10,00 para gastar en mi negocio, a fin de
mes yo le cobro esos $ 10 pesos al sindicato correspondiente.

Tambien puede darse el caso en el que el cliente puede pagarme con, por
ejemplo, 2 Ordenes de Compra cada una de $ 5,00 (que en total harian $
10,00). Pero yo debe ingresar en mi programa las dos ordenes por separado.
No puedo sumarlas he ingresar una sola Orden de $ 10,00.

Tambien puede darse el caso en el que el Total de la venta sea de $ 15,00 y
el cliente me pague con una Orden de Compra de $ 10,00 y el resto me pague
en efectivo (o sea $ 5,00 en efectivo).

Tambien, el cliente puede pagar el total de la compra solamente en Efectivo
o solamente con Ordenes de Compra.

En el caso en que el pago de la venta sea solamente en Efectivo, el valor de
IDOrden de la tabla tblPagos queda NULL.

En base a esto diseñe estas tablas

tblVentas

[IDVenta] (PK)
[Fecha]

tblDetalleVentas

[IDVenta] (FK)
[Codigo] (PK) > ' Codigo de barras del producto vendido
[Descripcion]
[Cantidad]
[Precio]
[Importe]

tblPagos

[IDVenta] (FK)
[IDPago] (PK)
[Tipo] ==> ' Puede ser "Efectivo" u "Orden"
[Monto] ==> ' Cantidad de Efectivo que recibo o Monto de la Orden
[Numero] => ' Numero de la Orden que genera al sindicato, es unica no hay
dos Ordenes con el mismo numero.
[IDCliente]
[FechaEmision] ==> 'Figura en la Orden, es la fecha en que el sindicato
emitio esa orden


Este diseño me funciona bien, pero cuado el pago de la venta es solamente en
Efectivo (que es en la mayoria de los casos) los campos Numero, IDCliente,
FechaEmision quedan en NULL. Mi pregunta es si este diseño es correcto?, en
caso de que no sea asi, como lo diseñarian ustedes?.
Un saludo



Respuesta Responder a este mensaje
#2 Victor Koch
25/01/2007 - 22:17 | Informe spam
Hola Mickro,

Para mi no hay problema en que algunos campos puedan quedar en nulos o
blancos, de echo yo tengo muchas tablas que según sea el "código o tipo de
movimiento" se completan algunos campos y otros no.

Un saludo, Víctor Koch.


"Mickro" escribió en el mensaje
news:#
Tengo un negocio en el cual ademas de recibir pagos en efectivo, tambien
recibo ordenes de compra que expide un sindicato por un cierto valor. Por
ejemplo, un cliente puede venir a comprar a mi negocio con una Orden de
Compra de $ 10,00 o sea, tiene $ 10,00 para gastar en mi negocio, a fin de
mes yo le cobro esos $ 10 pesos al sindicato correspondiente.

Tambien puede darse el caso en el que el cliente puede pagarme con, por
ejemplo, 2 Ordenes de Compra cada una de $ 5,00 (que en total harian $
10,00). Pero yo debe ingresar en mi programa las dos ordenes por separado.
No puedo sumarlas he ingresar una sola Orden de $ 10,00.

Tambien puede darse el caso en el que el Total de la venta sea de $ 15,00


y
el cliente me pague con una Orden de Compra de $ 10,00 y el resto me pague
en efectivo (o sea $ 5,00 en efectivo).

Tambien, el cliente puede pagar el total de la compra solamente en


Efectivo
o solamente con Ordenes de Compra.

En el caso en que el pago de la venta sea solamente en Efectivo, el valor


de
IDOrden de la tabla tblPagos queda NULL.

En base a esto diseñe estas tablas

tblVentas

[IDVenta] (PK)
[Fecha]

tblDetalleVentas

[IDVenta] (FK)
[Codigo] (PK) > ' Codigo de barras del producto vendido
[Descripcion]
[Cantidad]
[Precio]
[Importe]

tblPagos

[IDVenta] (FK)
[IDPago] (PK)
[Tipo] ==> ' Puede ser "Efectivo" u "Orden"
[Monto] ==> ' Cantidad de Efectivo que recibo o Monto de la Orden
[Numero] => ' Numero de la Orden que genera al sindicato, es unica no


hay
dos Ordenes con el mismo numero.
[IDCliente]
[FechaEmision] ==> 'Figura en la Orden, es la fecha en que el sindicato
emitio esa orden


Este diseño me funciona bien, pero cuado el pago de la venta es solamente


en
Efectivo (que es en la mayoria de los casos) los campos Numero, IDCliente,
FechaEmision quedan en NULL. Mi pregunta es si este diseño es correcto?,


en
caso de que no sea asi, como lo diseñarian ustedes?.
Un saludo


Respuesta Responder a este mensaje
#3 Javier Loria
26/01/2007 - 13:41 | Informe spam
Hola:
Tu diseño me parece correcto, pero una altenativa que que elimina los
nulos es:
=tblVentas
[IDVenta] (PK)
[Fecha]
[IDCliente]
[Monto]

tblDetalleVentas
[IDVenta] (FK)
[Codigo] (PK)
[Descripcion]
[Cantidad]
[Precio]
[Importe]

tblPagosEfectivo
[IDPago] (PK)
[IDVenta] (UN)(FK)
[Monto]

tblPagosOrdenes
[Numero] (PK)
[IDVenta] (UN)(FK)
[FechaEmision]
[Monto]
= Saludos,


Javier Loria
Costa Rica-MVP
Solid Quality Learning

"Mickro" wrote in message
news:%
Tengo un negocio en el cual ademas de recibir pagos en efectivo, tambien
recibo ordenes de compra que expide un sindicato por un cierto valor. Por
ejemplo, un cliente puede venir a comprar a mi negocio con una Orden de
Compra de $ 10,00 o sea, tiene $ 10,00 para gastar en mi negocio, a fin de
mes yo le cobro esos $ 10 pesos al sindicato correspondiente.

Tambien puede darse el caso en el que el cliente puede pagarme con, por
ejemplo, 2 Ordenes de Compra cada una de $ 5,00 (que en total harian $
10,00). Pero yo debe ingresar en mi programa las dos ordenes por separado.
No puedo sumarlas he ingresar una sola Orden de $ 10,00.

Tambien puede darse el caso en el que el Total de la venta sea de $ 15,00
y
el cliente me pague con una Orden de Compra de $ 10,00 y el resto me pague
en efectivo (o sea $ 5,00 en efectivo).

Tambien, el cliente puede pagar el total de la compra solamente en
Efectivo
o solamente con Ordenes de Compra.

En el caso en que el pago de la venta sea solamente en Efectivo, el valor
de
IDOrden de la tabla tblPagos queda NULL.

En base a esto diseñe estas tablas

tblVentas

[IDVenta] (PK)
[Fecha]

tblDetalleVentas

[IDVenta] (FK)
[Codigo] (PK) > ' Codigo de barras del producto vendido
[Descripcion]
[Cantidad]
[Precio]
[Importe]

tblPagos

[IDVenta] (FK)
[IDPago] (PK)
[Tipo] ==> ' Puede ser "Efectivo" u "Orden"
[Monto] ==> ' Cantidad de Efectivo que recibo o Monto de la Orden
[Numero] => ' Numero de la Orden que genera al sindicato, es unica no
hay dos Ordenes con el mismo numero.
[IDCliente]
[FechaEmision] ==> 'Figura en la Orden, es la fecha en que el sindicato
emitio esa orden


Este diseño me funciona bien, pero cuado el pago de la venta es solamente
en Efectivo (que es en la mayoria de los casos) los campos Numero,
IDCliente, FechaEmision quedan en NULL. Mi pregunta es si este diseño es
correcto?, en caso de que no sea asi, como lo diseñarian ustedes?.
Un saludo

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida