Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.

Wednesday, March 11, 2009

Integridad de la base de datos.











En la imagen asociada a este artículo se observa un relación 1:N, en una base de datos hipotética de cualquier institución comercial. Tenemos un encabezado de Factura en el nivel mas alto de la jerarquía del modelo y los detalles de los artículos en el siguiente nivel. (Haz Click sobre la imagen si la quieres ver ampliada)

Un buen contingente de programadores hace esto al grabar, en los archivos, la información incluida por el usuario:

C Lee artículo
C*
C Dow Not (*in99)
C |
C | Monto Total Factura = Monto Total Factura + Monto Artículo
C |
C | Write artículo
C |
C | Lee artículo
C |
C | Enddo

C Write Encabezado de Factura


La idea de este algoritmo, es ir acumulando los montos parciales facturados para luego grabar el monto total en el encabezado de la factura.

Esta secuencia de pasos mostrado en este pseudocódigo puede poner en peligro la integridad de la base de datos. Si hay una caída del sistema, antes de que se grabe el encabezado de factura, quedaran los artículos grabados sin tener su respectivo encabezado asociado y recuperar la información que quedó incompleta será más difícil:


1.- Si el sistema genera los códigos de factura con un consecutivo en forma automática y hay varios usuarios cargando factura en el mismo momento en que el sistema cae podrían mezclarse artículos de distintas facturas, dependiendo del algoritmo que se utilice para generar las facturas.

2.-Los reportes y consultas que totalizan por artículo vendido en un rango de fecha no podrían reflejar estos artículos que quedaron sin encabezado.

3.-Probablemente, el cruce de información entre los reportes consolidados y los reportes detallados no reflejarán el descuadre porque tanto en los reportes de totales facturados como en los detallados en un período de tiempo, posiblemente, omiten las facturas que quedaron incompletas. Esto dificulta al analista de sistemas como al analista de negocio localizar los errores con prontitud.




Haciendo algunos cambios en el algoritmo presentado, se reduce el riesgo de atentar en contra de la integridad de la base de datos:

C Write Encabezado de Factura /* con monto total en cero, */
C*
C Lee artículo
C*
C Dow Not (*in99)
C |
C | Monto Total Factura = Monto Total Factura + Monto Artículo
C |
C | Write artículo
C |
C | Lee artículo
C |
C | Enddo

C Update Encabezado de Factura


Si hay una caída del sistema, puede detectarse con facilidad las facturas que quedaron inconclusas en información puesto que el monto del encabezado quedó grabado en cero.
Por otra parte, el cruce de reportes consolidados y detallados reflejaría inmediatamente un descuadre que sería rápidamente detectado por cualquier analista del negocio aunque no pertenezca al área de sistemas.


Si te pareció interesante, reenvialo a un amigo haciendo click en el sobrecito que está al final del artículo. El conocimiento es valioso, compártelo.


Autor:  Ing. Liliana Suárez

No comments: