ot: AYUDA SOBRE COMO HACER ESTE DISEñO ?

13/12/2004 - 23:28 por Luis Nivar | Informe spam
Hola amigos,

Estoy disenando una nueva aplicacion de gestion y contabilidad para sql
server y tengo una gran confusion en lo siguiente:
El sistema manejara varios modulos auxiliares de la contabilidad
(inventario, cuentas por cobrar, cuentas por pagar, bancos, etc.) y esta el
modulo de Mayor general que se alimenta en linea desde cada modulo.. En cada
modulo se generan o digitan diferentes tipos de transacciones o documentos.
El problema es que por requerimiento del cliente nos piden que cada
transaccion de cada modulo auxiliar genere o pida las cuentas contables para
fines de postearse en linea al mayor general con su numero original de modo
que en cualquier momento se puedan consultar desde el modulo mayor general
todos los movimientos detallados con sus documentos origen (su numero) no
importa el modulo. Por ejemplo si se registra un debito en el modulo
auxiliar de CXC se generen los asientos contables en el mayor general
detallados, no en resumen como uno suele hacerlo.
El problema que veo es que como uno normalmente tiene tablas separadas para
cada tipo de transaccion, ejemplo: una para cheques, otra para depositos,
otra para facturas de compra, otra para facturas de venta, otra para recibos
de ingreso, otra para conduces de inventario, etc...etc.. la tabla de
asientos contables deberia entonces relacionarse a todas esas tablas y a la
vez no relacionarse a ninguna lo cual como que no me cuadra mucho con un
diseño de BD por aquello de la integridad referencial. Incluso cuando en el
mayor general se consulten los movimientos de una cuenta tendria que accesar
varias tablas header para ver la informacion especial de cada documento.

He estado pensando algunas cosas como: a) tener una sola tabla encabezado
con todos los datos que usan todos los tipos de documentos (que pueden ser
muy disimiles entre si) y entonces tener la tabla general de asientos
contables relacionada a esta tabla. Esto haria crecer mucho en columnas sin
uso la tabla encabezado pues para cada tipo de doc. solo se llenaran las
columnas que utilice ese tipo.

b) Otra alternativa seria crear una tabla de asientos nueva para cada tipo
de transaccion de cada modulo y tener un par encabezado-detalle contable
para cada tipo de documento, sin embargo implicaria que para cuando en
contabilidad vayan a consultar los movimientos de una cuenta o listar las
transacciones entre fechas, tendria que hacer una UNION de todas estas
tablitas, locual pienso podria ser muy lento, o no serlo, realmente no se.
Pense tambien en vistas pero como no estoy muy claro.


Me podrian dar una opinion o recomendacion respecto a este diseño ? o si han
visto alguno similar por alli referirme para ver como es una forma mas o
menos aceptable de manejarlo y que no degrade significativamente el
performance.


Muchas Gracias por la ayuda

Luis Nivar
CYC sistemas
Puerto Plata
Rep. Dom.
 

Leer las respuestas

#1 Javier Loria
14/12/2004 - 00:28 | Informe spam
Hola:
Es mi opinion, que aun cuando un Cheque/Deposito genera un asiento, no
son lo mismo. O sea desde el punto de vista de diseno relacional esta bien
mantener una entidad independiente para cada uno de los documentos de los
diferentes modulos y luego mantener por separado la tabla de Asientos.
Dicho de otra forma este es un caso donde esta bien NO EVITAR LA
REDUNDANCIA que produce mantener la informacion en 2 tablas. Si los
documentos (Cheques, Depositos, Facturas, Recibos, etc.) producen
movimientos contables estos documentos son "independientes".
Es por supuesto un problema coordinar las transacciones para evitar que
quede algun documento sin contabilizar o mal contabilizado, pero esto es
codigo que se puede manejar "facilmente" en procedimientos almacenados de
mantenimiento o incluso en triggers.
Saludos,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda

"Luis Nivar" wrote in message
news:#
Hola amigos,

Estoy disenando una nueva aplicacion de gestion y contabilidad para sql
server y tengo una gran confusion en lo siguiente:
El sistema manejara varios modulos auxiliares de la contabilidad
(inventario, cuentas por cobrar, cuentas por pagar, bancos, etc.) y esta


el
modulo de Mayor general que se alimenta en linea desde cada modulo.. En


cada
modulo se generan o digitan diferentes tipos de transacciones o


documentos.
El problema es que por requerimiento del cliente nos piden que cada
transaccion de cada modulo auxiliar genere o pida las cuentas contables


para
fines de postearse en linea al mayor general con su numero original de


modo
que en cualquier momento se puedan consultar desde el modulo mayor general
todos los movimientos detallados con sus documentos origen (su numero) no
importa el modulo. Por ejemplo si se registra un debito en el modulo
auxiliar de CXC se generen los asientos contables en el mayor general
detallados, no en resumen como uno suele hacerlo.
El problema que veo es que como uno normalmente tiene tablas separadas


para
cada tipo de transaccion, ejemplo: una para cheques, otra para depositos,
otra para facturas de compra, otra para facturas de venta, otra para


recibos
de ingreso, otra para conduces de inventario, etc...etc.. la tabla de
asientos contables deberia entonces relacionarse a todas esas tablas y a


la
vez no relacionarse a ninguna lo cual como que no me cuadra mucho con un
diseño de BD por aquello de la integridad referencial. Incluso cuando en


el
mayor general se consulten los movimientos de una cuenta tendria que


accesar
varias tablas header para ver la informacion especial de cada documento.

He estado pensando algunas cosas como: a) tener una sola tabla encabezado
con todos los datos que usan todos los tipos de documentos (que pueden ser
muy disimiles entre si) y entonces tener la tabla general de asientos
contables relacionada a esta tabla. Esto haria crecer mucho en columnas


sin
uso la tabla encabezado pues para cada tipo de doc. solo se llenaran las
columnas que utilice ese tipo.

b) Otra alternativa seria crear una tabla de asientos nueva para cada tipo
de transaccion de cada modulo y tener un par encabezado-detalle contable
para cada tipo de documento, sin embargo implicaria que para cuando en
contabilidad vayan a consultar los movimientos de una cuenta o listar las
transacciones entre fechas, tendria que hacer una UNION de todas estas
tablitas, locual pienso podria ser muy lento, o no serlo, realmente no se.
Pense tambien en vistas pero como no estoy muy claro.


Me podrian dar una opinion o recomendacion respecto a este diseño ? o si


han
visto alguno similar por alli referirme para ver como es una forma mas o
menos aceptable de manejarlo y que no degrade significativamente el
performance.


Muchas Gracias por la ayuda

Luis Nivar
CYC sistemas
Puerto Plata
Rep. Dom.


Preguntas similares