Hola qué tal.
Bienvenidos a esta nueva clase de este nuevo capítulo del curso completo de base de datos.
Y llegamos al último pero no menos importante consejo vamos a ver algo que les va a ayudar muchísimo
cuando tengan desarrollos grandes sean comerciales o sea industriales y nos referimos a las tablas resumen
de datos históricos.
Ustedes saben que hay tablas que son maestras.
Ya lo hemos visto pero hay tablas que son tablas de detalle.
Por ejemplo nosotros estamos concentrados en dar ejemplos de lo que sería un sistema administrativo
y de facturación.
Y por supuesto tenemos nuestra tabla factura con cabecera y detalle de factura.
Ahora esta tabla estas tablas tanto de cabecera como de facturas y recuerden que también tenemos la
tabla de medios de pago son tablas que van a ir creciendo y creciendo de manera sostenida y nunca van
a dejar de crecer a medida que vayamos avanzando en el tiempo.
Son tablas que se van a hacer muy grandes y cuando nosotros necesitemos hacer consultas estadísticas
por ejemplo de totales de venta por ahí queremos saber lo total vendido a un determinado cliente o total
vendido de un determinado producto o las ventas que hemos hecho de la línea de productos de un proveedor
determinado.
Todo esto va a hacer que nuestras consultas cada vez demoren más por qué.
Porque va a haber más registros para filtrar a pesar de que nosotros tenemos en nuestra cabecera campo
fecha con índice y tenemos a nuestro campo de cliente con índice a medida que vaya habiendo más y más
miles y hasta millones de registros nuestras consultas van a demorar más.
Qué es lo que se hace habitualmente en el mundo empresarial.
Se crean lo que se llaman tablas de resumen estas tablas de resumen son tablas que son creadas generalmente
por procesos que se corren a principio de cada mes.
Es muy normal que el sistema detecte que el mes actual es diferente al mes del último de la última ejecución
del sistema y en ese momento se corran ciertos procesos que para crear tablas para limpiar información
para depurar datos y demás.
Dentro de esos procesos habitualmente está la grabación de datos en tablas de resumen.
Concretamente se toman todas las ventas del mes que pasó donde tengo mi detalle de artículos de clientes
y por supuesto al tener artículo el artículo está enlazado al proveedor y se crean tablas de resumen
para que nuestras futuras consultas de meses y años anteriores cuando necesitamos información de meses
o años anteriores no tengamos que recorrer todas las tablas Mahesh de detalle de cabecera y facturas
sino que vayamos rápidamente a unas tablas de resumen que van a tener los totales ya sumados y ya es
como que nos dan la información.
Que como decimos el sistema la información ya cocinada vamos a ver un ejemplo.
Yo he creado una tabla resumen llamada resumen de ventas ustedes pueden tener tablas resumen de compras
resumen de devoluciones resumen de movimientos de stock pueden tener tablas resumen de lo que ustedes
quieran y en sus sistemas.
Cuando detecta que lo que están consultando son períodos anteriores en lugar de tomar las tablas actuales
Boira la tabla resumen a buscar la información.
Vamos a ver un poquito cuál es la filosofía de qué empleado para crear esta tabla.
Tenemos básicamente siete campos una en nuestra prima ariki no tengo que explicarlo auto incremental
que va a ser la que a medida que vaya insertando registros en la tabla resumen se va a ir creando a
esta tabla creado el prefijo RB resumen de ventas que creo que mucha explicación no hay y le he puesto
un campo año.
No está mal escrito sólo que Maisí no trabaja con Ennies así que el año lo tengo que escribir de esta
manera un campo llamado mes un campo cliente mi Heydi de cliente un campo aided de producto un campo
Heydi de proveedor y un campo que es el más importante donde se va a grabar el total cuál es la filosofía
de esto cada vez que yo haga una recorrida de mi tabla de ventas para generar un nuevo registro en la
tabla de resumen lo primero que voy a hacer es grabar un registro con el año y el total para que para
ir grabando e ir sumando un total por año.
Si yo quisiera consultar el total vendido en el año no me importa si es de tal proveedor no me interesa
el cliente no me interesa el producto y tampoco me interesa el mes.
Voy a crear un registro que sólo va a tener el año y el total a medida que yo vaya recorriendo e incrementando
este valor no voy a crear un nuevo registro.
Voy a usar otra instrucción del lenguaje secuela que se llama abstract y voy a decirle cuando ya que
hay un registro de tipo año para el año 2019 en lugar de insertar un nuevo registro no voy a decirme
a actualizarme el registro del año 2019 y a lo que tenga el campo total súmale este otro total y ahí
se va acumulando y se va humanizando.
Luego voy a hacer lo mismo por el mes voy a recorrer nuevamente.
O lo puedo hacer en el mismo momento.
Una buena práctica es hacerlo en el mismo momento grabo actualizo mi total por año me inserto un nuevo
registro o actualizo a mi total por mes y le voy a decir para el año 2019 mes 1 súmale el mes el total
a lo que viene acumulando en el mes el resto de los campos como tiene valor de foll no los voy a informar
y se van a ir grabando en cero tanto al cliente va a ser cero el producto va a ser cero y el proveedor
va a ser cero cuando no van a ser cero cuando yo ahí sí tenga que grabar un registro donde voy a informar
el cliente tal.
Y ahí voy a ir acumulando para el cliente número uno su total para el cliente número 2 otro total lo
mismo va a pasar con producto en el momento en que yo grabe el producto el cliente va a estar en cero
y el proveedor en cero y lo mismo va a pasar con el proveedor cuando grabe el proveedor el cliente va
a estar en cero y el producto va a estar entero se entiende esto voy a usar una sola tabla para tener
muchísima información estadística por proveedor por cliente por producto por ninguno de ellos solamente
para saber el total vendido del mes.
Ninguno de ellos el total vendido por año y ésta es la forma en la que podemos crear una tabla de resumen.
Vamos a ver una una pequeña imagen yo voy a minimizar esto para que ustedes puedan ver la imagen y aquí
vemos la imagen y nos indica qué tenemos que hacer para cuando necesitamos obtener la información de
cada uno de los de los tipos de dato que necesitamos.
Como les explicaba si necesito el año solamente dejamos el resto en cero o menos el total si necesitamos
solo el mes bueno el mes tiene que ir sí o sí acompañado por el año.
No me interesa saber lo vendido en enero y me va a traer todos los Cenero de todos los años.
Si les interesa lo adaptan pero yo lo estoy manejando con año y mes y luego tenemos qué necesitamos
para traer un producto para el total de un producto que necesitamos para atraer el total por proveedor
para el total por cliente y ustedes de acuerdo al desarrollo que tengan van a utilizar la cantidad de
segmentos.
Esto se llama así porque estoy segmentando información la cantidad de segmentos o campos de segmento
que ustedes necesiten para tener totales.
Esto es variable Akainu y no hay una regla fija lo pueden tenerlo pueden no tener podrían no tener esta
tabla y podrían extraer toda la información exclusivamente de nuestra cabecera y detalle.
No es aconsejable van a demorar mucho tiempo y por eso se han creado estas tablas resumen fijense una
curiosidad la suavecita son nuestros índices y ustedes ven que año tiene dos llaves.
Qué significa que yo he creado por un lado un índice que es de tipo Anio solamente me va a agravar y
me va a apuntar a los registros del año cuando yo tenga que recorrer y saber un registro por año.
Ahora paralelamente el año lo uso en otra.
En otro índice donde yo aquí tengo un índice compuesto por dos campos con año y mes se entiende esto
vamos a quitar todos los índices y vamos a hacerlos a todos nuevamente para que ustedes entiendan el
mecanismo.
Lo primero que hacemos es nuestra prima ariki OK.
Luego voy a crear un índice en el año qué voy a hacer a continuación voy a crear un índice mes no voy
a volver a crear para nuestro tercer índice un índice año.
Y aquí tenemos que tener cuidado por qué.
Porque nos dice que el año como toma el nombre de campo para nombre de índice me dice dos veces bueno
aquí tienen que venir le ponen un 2 o el nombre que ustedes quieran y ya hemos subsanado el problema
que se nos iba a ocasionar cuando nosotros queramos grabar la tabla nos no nos iba a dejar y ahora mes
lo voy a crear un nuevo índice le voy a decir voy a agregar el mes al índice ya creado llamado Año 2
fíjense como ahora tengo dos índices uno con el año solamente y otro para cuando tenga que recorrer
por mes y año.
Todo esto está hecho para tener la mayor rapidez en las consultas imagínense saber el total vendido
de todo el año pasado y que me lo traigan miles segundos.
Cuánto tardarían ustedes en recorrer.
No sé.
Supongamos que tienen 100 ventas por día.
Multipliquen por 31 para saber el mes.
Multipliquen por 12 y la cantidad de registros y la cantidad de campos.
Y todo eso dividido en detalle de productos y detalle de clientes para saber en total vendido cuando
por ahí lo tengo en 10 registros o 12 registros y me trae el total de una manera increíblemente rápida.
En cuestiones de milésimas de segundo voy a crear mi campo ideal.
Hay algo muy importante para aclarar aquí.
Este campo no lo voy a convertir en llave foránea cuando veamos llaves foráneas.
Por qué.
Porque este campo puede tener cero y no va a estar unido a ningún registro de mi tabla maestra.
Entonces para el uso de llaves foráneas siempre es necesario y es aconsejable que el registro el campo
nunca tenga un valor nulo o cero siempre esté apuntando a un registro de la llave maestra de la tabla
maestra.
Voy a agregar un campo a mi producto índice y voy a agregar a mi proveedor.
Por qué.
Porque el día que yo quiera el total vendido de un producto no me voy a recorrer todos los productos.
Voy a decirle al motor tráeme el total vendido de todos los meses y todos los años o lo voy a filtrar
yo como quiera por mes por año por lo que quiera del producto número total y total obviamente no existe
un campo su importe no da más de sí.
Se entiende cómo he creado una tabla resumen en segundos y esta tabla les va a permitir crear opciones
en sus proyectos en sus desarrollos comerciales o industriales que van a volar y realmente van a tener
muy buen resultado.
Acumula mucha información estadística si quieren además de trotar pueden grabar otros campos que sean
de utilidad para ustedes.
Qué pasó en ese mes y año para ese producto para ese proveedor.
Quizás ustedes no manejan clientes en sus desarrollos porque es un desarrollo industrial de fabricación.
Bueno ustedes van a darle el color y el diseño que ustedes crean conveniente a su tabla resumen y puede
haber en tablas resúmenes y pueden crear tablas y las van creando ustedes dinámicamente o manualmente
poniéndole el año al nombre de la tabla para que sea fácil para para luego encontrarlas para hacer Bacab.
A veces lo que se hace muchas veces es voy a borrar toda la información vieja de las tablas de detalle
de cabecera yo no quiero que mi tabla cabecera sea una tabla de millones de registros Ok sí yo ya sé
que tengo mis tablas resumen lo que voy a hacer es va a cambiar mi tabla cabecera la Larre nombraré
haré que se cree una tabla por año donde ahí sí está el detalle.
Haré un Bacab de esas tablas en un archivo SQL y lo tendré guardado por si en algún momento por algún
motivo tuviera que acceder a esa información detallada y lo tengo guardado a resguardo y la borro de
mi base de datos y base de datos va a estar más liviana porque a medida que ustedes van creando registros
aquí mi tabla de ejemplo tiene 9 9 megabytes.
Las tablas que yo estoy manejando en desarrollos ya superan los tres cuatro chida y es importante esto
de ir consolidando cocinando los datos consolidando los va capeando los y resumiendo los temas resumen
en base de datos es muy importante por eso dejé para el final este consejo porque quiero que lo tengan
como una muy buena práctica no dejen que sus tablas crezcan de una manera descontrolada empiecen a crear
tablas resumen empiecen a crear los módulos los pedazos de software o los pedazos de código que se ocupen
de alimentar estas tablas resumen aquí está se llama resumen de venta puede ser resumen de compras y
empiecen a jugar con esto porque van a ser desarrolladores profesionales y ustedes saben también manejar
de manera profesional sus bases de datos así que bueno hemos llegado al final de la optimización de
tablas ahora vamos a comenzar a aprender y va a haber mucha práctica y va a haber mucho ejercicio y
va a haber mucho hacerlo en pantalla y lo van a aprender y aquí también puede haber dudas van a poder
preguntar vamos a empezar con el lenguaje de base de datos que es extremadamente útil y que les va a
servir no solo en mi ciclo sino en cualquier motor de base de datos que maneje lenguaje de base de datos
relacional así que los invito ya a terminar con un pequeño cuestionario yo dejo cosas muy fáciles habrán
visto para terminar esta sección y comenzar con la nueva sección.
Con todo y vamos que se puede y vamos a aprender y yo los voy a apoyar y ayudar en todo lo que ustedes
necesiten.
Nos vemos en la próxima sección.