Amigos, quisiera saber si es buena practica almacenar en una sola tabla registros de varios tipos de documentos, por ejemplo Cotizaciones, pedidos, facturas o lo mejor seria crear una tabla por tipo de documento. Por sus comentarios o experiencias muy agradecido
"Las ideas son fuerzas intangibles, pero tienen más poder que el cerebro físico de donde nacen. Tienen el poder de seguir viviendo, aún después de que el cerebro que las ha creado haya regresado al polvo"
NOTA: La información mostrada en este mensaje es de caracter Confidencial y está dirigida unicamente a los contactos señalados en el encabezado; si el lector de este correo no es el destinatario del mismo, se le notifica que cualquier copia o distribución queda totalmente prohibida. Si usted ha recibido este mensaje por error, por favor notifique inmediatamente al remitente por este mismo medio y bórrelo de su sistema.
Como diseñes depende de los datos que tengas que manejar en cada tipo de documento.
Todo documento debería tener un identificador interno (campo único), para simplificar las relaciones.
Todo documento tiene un emisor y un receptor (personas, oficina, etc.) Todo documento tiene una fecha de creación, impresión, por supuesto todo documento tiene un tipo de documento, y donde más se pueden diferenciar es en la clave especifica de documento.
Una factura, un remito, una orden de pedido, etc. pueden tener claves similares, y en algunos casos pueden hacerse similares, por ejemplo una factura (en Argentina) tiene una letra, un número de sucursal, punto de venta y un número. Un sistema de expedientes podría perfectamente usar la columna sucursal para guardar el año y el número, seria el mismo que la factura.
En su momento diseñamos un sistema de facturación donde:
personas = {idPersona, etc.}
documentos = {idDocumento, cLetra, iSucursal, iNumero, fCreado, fEmitido, idEmisor, idReceptor, idOperador, etc.}
detalle = {idDetalle, idPedido, idRemito, idFactura, idNota, iCantidad, yPrecio, iListaPrecio}
Los documentos podrían corresponder a la empresa o a los proveedores (depende del idEmisor, asociado con personas, eso permitía además manejar facturación multiempresa.
La ventaja de esto es que renglón de detalle de un pedido se podía atender con distintos remitos, y en distintas facturas, un remito podía incluir artículos de diferentes pedidos y facturarse por separado, y una factura atendía a diversos pedidos y diversos remitos. Algo parecido con las notas de crédito débito.
Si algún detalle no tenia el documento correspondiente asociados, simplemente cargaba un valor null en las claves correspondientes
Si un detalle se cargaba a un documento por error, se podía pasar a otro documento (o anular el vinculo).
Ref: Negrita identificadores (indices) si subrayado: clave primaria, si itálica, admiten valores nulos.
Solo cuestión de gustos y de diseño
Saludos: Miguel, La Pampa (RA)