En este artículo habíamos visto como crear tablas agregadas y como insertarles datos:

https://firebird21.wordpress.com/2013/12/29/creando-y-actualizando-tablas-agregadas-de-uso-general/

Aquí tenemos otro ejemplo, éste está relacionado con los impuestos.

Tenemos una tabla llamada IMPUESTOS con esta estructura:

IMPUESTOS1

Captura 1. Si haces clic en la imagen la verás más grande

Y que contiene estos datos:

IMPUESTOS2

Captura 2. Si haces clic en la imagen la verás más grande

Una tabla llamada MOVIMIMP (movimientos de impuestos) donde se guardan los datos de todos los impuestos que se deben pagar y que tiene esta estructura:

IMPUESTOS3

Captura 3. Si haces clic en la imagen la verás más grande

Y que contiene estos datos:

IMPUESTOS4

Captura 4. Si haces clic en la imagen la verás más grande

En el archivo MOVIMCAB (cabecera de movimientos) guardamos la Fecha, el Número del Documento y otros datos. Creamos una vista llamada V_IMPUESTOS para obtener los datos que necesitamos:

CREATE VIEW V_IMPUESTOS(
   MOI_CODSUC,
   MOI_IDECAB,
   MOI_IDEIMP,
   MOI_NOMIMP,
   MOI_MONTOX)
AS
   SELECT
     M.MOI_CODSUC,
      M.MOI_IDECAB,
      M.MOI_IDEIMP,
      I.IMP_NOMBRE AS MOI_NOMIMP,
      M.MOI_MONTOX
   FROM
      MOVIMIMP M
   JOIN
      IMPUESTOS I
         ON M.MOI_CODSUC = I.IMP_CODSUC AND
            M.MOI_IDEIMP = I.IMP_IDENTI;

Y listo, ahora ya podemos utilizar las tablas agregadas. Primero creamos la tabla agregada MISIMPUESTOS1

EXECUTE PROCEDURE
   CREAR_TABLA_PIVOT (
      'MISIMPUESTOS1',
      'V_IMPUESTOS',
      'MOI_IDECAB INTEGER',
      'MOI_CODSUC INTEGER',
      'MOI_NOMIMP',
      'NUMERIC(17, 4)')

IMPUESTOS5

Captura 5. Si haces clic en la imagen la verás más grande

Y luego le insertamos datos a la tabla MISIMPUESTOS1

EXECUTE PROCEDURE
   ACTUALIZAR_TABLA_PIVOT (
      'MISIMPUESTOS1',
      'V_IMPUESTOS',
      'MOI_IDECAB INTEGER',
      'MOI_CODSUC INTEGER',
      'MOI_NOMIMP',
      'SUM(MOI_MONTOX)')

IMPUESTOS6

Captura 6. Si haces clic en la imagen la verás más grande

Y ya está, eso es todo. Ahora tenemos en la tabla MISIMPUESTOS1 todo lo que necesitamos saber sobre los impuestos. Y lo más importante es que nuestras tablas están normalizadas. Por lo tanto, si el Gobierno decide crear un nuevo impuesto no necesitaremos tocar las estructuras de nuestras tablas ni de nuestras vistas ni de nuestros stored procedures ni de nuestros triggers. Simplemente agregamos el nombre del nuevo impuesto en la tabla IMPUESTOS y el porcentaje del impuesto en la tabla CAMBIOS_IMP y listo, asunto solucionado.

Conclusión:

Gracias a los stored procedures CREAR_TABLA_PIVOT y ACTUALIZAR_TABLA_PIVOT desde ahora ya es demasiado fácil tener tablas agregadas. Lo único que debes hacer es escribir una vista que contenga los datos que pasarán a la tabla agregada y luego llamar a esos stored procedures con los parámetros adecuados, como viste en los ejemplos anteriores. Y listo, eso es todo. Muy fácil y muy sencillamente podrás tener todas las tablas agregadas que necesites.

Artículos relacionados:

Consideraciones a tener en cuenta al diseñar una Base de Datos

Diseño de bases de datos. 1FN

Diseño de bases de datos. 2FN

Diseño de bases de datos. 3FN

Más ejemplos de tablas que no cumplen con la 1FN

El manejo de los impuestos

Creando y actualizando tablas agregadas de uso general

El índice del blog Firebird21

Anuncios