Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como organizar tabla con mas de 1 relacion.

Estas en el tema de Como organizar tabla con mas de 1 relacion. en el foro de Mysql en Foros del Web. Tengo en mi sistema una tabla cheques. Un cheque puede venir de un cliente, o puede ir o venir de un proveedor. Pense poner el ...
  #1 (permalink)  
Antiguo 13/04/2015, 07:19
Avatar de giuli956  
Fecha de Ingreso: noviembre-2012
Mensajes: 149
Antigüedad: 11 años, 5 meses
Puntos: 1
Como organizar tabla con mas de 1 relacion.

Tengo en mi sistema una tabla cheques. Un cheque puede venir de un cliente, o puede ir o venir de un proveedor.

Pense poner el idproveedor y el idcliente en la tabla cheques, pero quedara un idvacio y uno lleno.

De lo contrario deberia tener una tabla (clicheque)que contega idcliente e idcheque, y otra(proveecheque) idproveedor e idcheque pero como realizo la busqueda, el filtrado? El filtrado seria seleccionar de la tabla clicheque o proveecheque segun se necesite.

Y la busqueda de un cheque? Debo buscar en ambas tablas para saber de donde proviene o que se hizo? Es correcto este modelo o que me aconsejan?

Saludos
  #2 (permalink)  
Antiguo 13/04/2015, 07:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Como organizar tabla con mas de 1 relacion.

Lo que describes es parte del sistema de documetnos de pago, pero corresponden a gestiones y susbsistemas totalmente diferentes. No pueden estar en la misma tabla.
Los pagos por cheque de clientes son cancelaciones de deuda por ventas, con saldo deudor, y pertenecen al subsistema de Ventas-Cobranzas..
Los pagos de cheques de Proveedores son cancelaciones de deuda por compras, con saldo acreedor y pertenecen al subsistema Compras-Pagos.
Son conceptos incompatibles. SI los estás consolidando en una misma tabla, está mal diseñado.

Si vamos a contabilidad clásica, se trata de dos libros diferentes: "Documentos A Pagar" y "Documentos a Cobrar", estos componen el balance, pero los movimeitnos de cada uno no se registran en el mismo libro.
Al pasar a BBDD, esta lógica se mantiene: Los documentos de pago y de cobro no pueden pertencer a la misma tabla porque se relacionan con grupos de tablas completamente diferentes. Mientras los de Clientes se relacionan con facturas, notas de credito y ventas en general, los de proveedores están relacionados con pedidos de provision, facturas de terceros, remitos y recibos de terceros.

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 14/04/2015, 02:49
Avatar de giuli956  
Fecha de Ingreso: noviembre-2012
Mensajes: 149
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Como organizar tabla con mas de 1 relacion.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Lo que describes es parte del sistema de documetnos de pago, pero corresponden a gestiones y susbsistemas totalmente diferentes. No pueden estar en la misma tabla.
Los pagos por cheque de clientes son cancelaciones de deuda por ventas, con saldo deudor, y pertenecen al subsistema de Ventas-Cobranzas..
Los pagos de cheques de Proveedores son cancelaciones de deuda por compras, con saldo acreedor y pertenecen al subsistema Compras-Pagos.
Son conceptos incompatibles. SI los estás consolidando en una misma tabla, está mal diseñado.

Si vamos a contabilidad clásica, se trata de dos libros diferentes: "Documentos A Pagar" y "Documentos a Cobrar", estos componen el balance, pero los movimeitnos de cada uno no se registran en el mismo libro.
Al pasar a BBDD, esta lógica se mantiene: Los documentos de pago y de cobro no pueden pertencer a la misma tabla porque se relacionan con grupos de tablas completamente diferentes. Mientras los de Clientes se relacionan con facturas, notas de credito y ventas en general, los de proveedores están relacionados con pedidos de provision, facturas de terceros, remitos y recibos de terceros.

¿Se entiende?
Y bueno entonces podria tener en la tabla cheques el tipo (cliente o proveedor) y el idpersona para buscar en las tablas cliente y proveedor ya que estas heredan de persona. Pero que sucederia si quiero representar que un chueque viene de un cliente y fue entregado a un proveedor?

De lo contrario tener las tablas clicheque y provecheque como te mencione en el primer mensaje, esto me parece lo mas adecuado.
Gracias
  #4 (permalink)  
Antiguo 14/04/2015, 02:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Como organizar tabla con mas de 1 relacion.

Puedes persistir con ese modelado, pero solo lograrás complicarte hasta el infinito.
Es tu decisión.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 14/04/2015, 03:27
Avatar de giuli956  
Fecha de Ingreso: noviembre-2012
Mensajes: 149
Antigüedad: 11 años, 5 meses
Puntos: 1
Respuesta: Como organizar tabla con mas de 1 relacion.

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Puedes persistir con ese modelado, pero solo lograrás complicarte hasta el infinito.
Es tu decisión.
Es que eso quiero saber como modelarlo.

Decime acerca de este modelo:
Tambien podria plantear que los proveedores forman parte del sistema de compras y podria registrar una compra con el proveedor, etc, y luego una tabla de relacion de esa compra con los cheques que se asociaron, es lo mismo que se hace con los productos : la tabla compra tiene idproveedor fecha,etc y en otra de relacion todos los productos de esa compra(para no repetir todo el registro de compra)
Código MySQL:
Ver original
  1. CREATE TABLE cheque(
  2. idcliente INT,
  3. numero INT,
  4. fecharecibo DATE,
  5. fechacobro DATE,
  6. importe DECIMAL(10,2),
  7. titular VARCHAR(100),
  8. cuenta  INT,
  9. CUIT INT,
  10. haber DECIMAL(10,2),
  11. cobrado bool,
  12. fechadecobro DATE,
  13. tipo CHAR,
  14. idpersona INT,
  15. );
  16.  
  17. create table factura(
  18. monto decimal(10,2),
  19. idproveedor int,
  20. tipo char,
  21. foreign key (idproveedor) references proveedor(idproveedor) on delete no action
  22. );
  23. create table compras(
  24. idfactura int,
  25. cantidad decimal(10,2),
  26. idproducto int,
  27. preciou decimal(10,2),
  28. foreign key (idproducto) references producto(idproducto) on delete no action,
  29. foreign key (idfactura) references factura(idfactura) on delete cascade
  30. );

Una vez teniendo la factura se registra por cada producto de la compra o factura cantidad idproducto preciou.

Entonces los cheque asociados que pueden ser varios:
Código MySQL:
Ver original
  1. CREATE TABLE chequecompra(
  2. idfactura INT,
  3. idcheque INT,
  4. FOREIGN KEY (idfactura) REFERENCES factura(idfactura),
  5. FOREIGN KEY (idcheque) REFERENCES cheque(idcheque)
  6. );
lo mismo haria para las ventas a los clientes, de la tabla ventas asociar idcheque.

Saludos

Etiquetas: organizar, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:24.