Hola bienvenidos a esta nueva clase del curso completo de base de datos y llegó el momento llegó la
clase tan esperada a partir de aquí va a ser tan interesante el curso que espero que nos tomemos el
tiempo necesario para aprender cada cosa que vamos a dar lo que vamos a comenzar a ver es el tema de
la optimización de bases de datos.
Por qué.
Porque vamos a hablar sobre cómo deberíamos crear nuestras tablas nuestros campos y qué reglas respetar
para ganar en optimización y performance.
Cuáles son las malas prácticas.
Cuáles son los errores y sobre todo cuáles son las buenas prácticas que no están ahí por capricho sino
que han sido creadas luego de décadas de trabajo con bases de datos por miles y miles de expertos en
bases de datos y yo los invito a que cuando terminen estas clases puedan googlear no porque van a ver
que no es algo inventado por mí.
Existe algo llamado Las tres formas normales es como digamos el abecé.
Lo primero que tendría que aprender todo estudiante de bases de datos para no cometer errores muy groseros
y da cuenta de una serie de reglas extremadamente importantes que se deben cumplir al diseñar nuestras
bases de datos y al crear las tablas y subcampos como última clase en esta sección Yo agregué unas clases
extra llamadas normalizacion avanzada y buenas prácticas porque por qué estas tres clases siguientes
que vamos a ver ahora son para contarles sobre la primera forma normal.
La segunda forma normal y la tercera forma normal que no fueron creadas por mí sino que a partir de
esta cuarta clase irán mis consejos y formas adicionales como he aprendido luego de 15 años de trabajar
en base de datos puedo añadir varias formas varias buenas prácticas que ustedes van a ver a lo largo
de estas clases que vienen.
Bueno vamos a ver por ejemplo qué nos dice la primera forma normal.
La primer forma normal es terminante dice.
No se deben repetir datos de una tabla.
No se deben repetir datos en una tabla.
Esto en celo no se deben repetir datos en una tabla.
A qué nos referimos al maestro y detalla el famoso maestro y detalle.
Tabla maestra tabla de detalle.
Algo estuvimos mencionando anteriormente cuando importamos nuestro famoso archivo SQL y lo vamos a ver
con mayor precisión.
Ahora con nuevas tablas para que vayamos viendo desde lo que está mal como ir preparándolo hacia lo
que está bien vamos a ver un ejemplo vamos a empezar con una tabla que está muy mal hecha.
Fíjense esta tabla.
Yo le puse ventas mal para que ustedes se den cuenta y tenemos una tabla de ventas esta tabla de ventas
me está mezclando cabecera con detalle Fíjense los he cometido muchos errores y si hablamos de la primer
forma normal vemos que estamos repitiendo información para una misma venta.
Por ejemplo el número de factura lo estoy repitiendo muchas veces el nombre del cliente lo estoy repitiendo
muchas veces y como se imaginarán está muy mal incluir en una talla en una tabla de ventas el nombre
del cliente ya habíamos hablado de esto el nombre del producto y estamos repitiendo datos la fecha de
la factura va a ser siempre la misma para todos suscitan en mí una factura donde vendí diez productos
diferentes.
No puedo repetir 10 veces la fecha.
Para eso se ha separado de acuerdo a la primera forma normal la factura de la cabecera y el detalle
de factura así que vamos a ver por ejemplo cómo se puede mejorar esto vamos a hacer una mejora pero
no quiero extenderme mucho porque estaría pisando la segunda forma normal.
Lo vamos a ver y lo vamos a continuar en la siguiente clase en la ven en la tabla ventas más o menos
significa que yo ya algo he mejorado.
Si ustedes se fijan en ventas mal solamente tengo la prima Dicky no tengo ningún campo indexado tengo
mi producto que es un parchar de 60 o un texto y mi cliente que es un parchar de 60 que es otro texto
en la tabla de ventas más o menos yo ya he modificado mi producto ya lo puse como numérico y he cambiado
el nombre por producto Aydin y he hecho lo mismo con clientes y ahora es un dato numérico y además de
eso los he convertido en índices para poder buscarlos rápidamente en mi tabla de facturas pero esto
sigue estando mal.
Por qué.
Porque estoy repitiendo información vamos a ver cómo quedaría bien.
Estas mismas tablas yo las voy a mostrar para la segunda forma normal no es una una incoherencia pero
quiero que ustedes vean esto mismo me voy a explicar en la segunda forma normal que se extiende un poquito
más y que me da más información de cómo optimizar las tablas ahora cuál sería el resultado de ver nuestras
tablas correctamente.
Yo tengo que dividir estos cuatro registros en facturas de cabecera y en facturas netas.
Vamos a ver cómo quedaría si vamos a la tabla ventas kava de cabecera vemos que tenemos menos campos
porque son los campos que se van a repetir y yo no tengo que repetir aquí.
En definitiva tengo dos facturas tengo dos facturas la factura 150 y la factura 152 como son dos facturas
diferentes.
Puede ser que la fecha coincida.
No hay ningún problema.
Puede ser que la fecha se repita y puede ser que yo tenga una factura hecha como al cliente número 15
y que tenga una próxima factura con el cliente número 15 malo que aquí la información se repita porque
está apuntando a dos operaciones diferentes.
Ahora vamos a ver nuestra tabla de ventas de detalle es nuestra tabla de ventas de detalle tienen por
supuesto una primarily que es auto numérica tiene una columna que no hemos incluido en nuestras columnas
de ventas mal y ventas más o menos.
Qué tiene que ver con apuntar al EI al registro de cabecera de la tabla de cabecera.
Fíjense tengo una prima ariki número 1.
Cuando yo tenga que exponer los items vendidos en la factura 150.
Voy a tener que decirles que esos Sistem pertenecen a la factura con el Aydin número 1.
No puse el número de factura siempre conviene apuntar al primarily es una manera de unir tablas entonces
en mi tabla de detalle yo tengo que hoy la factura con el primer ariki número 1 tuvo tres productos.
Si hubiera vendido 15 productos en una sola factura aquí habría 15 registros con él.
El primer ariki de la factura ventas m con el número 1.
Luego tenemos nuestros tres Heydi de producto más hacemos de cuenta que hemos facturado nuestros tres
primeros productos con sus cantidades y con su precio.
Está bien que la cantidad y el precio unitario del producto pertenezca al detalle y no pertenezca a
la cabecera.
A lo sumo en la cabecera voy a tener un campo total con el total de la factura.
No tenemos que pulir esos dos mundos la cabecera con su gato de cabecera.
Recuerdan que estos son ejemplos en una cabecera de factura generalmente hay 20 o 30 columnas con impuestos
con con la fecha la hora.
Cuál.
Quién fue el usuario que hizo la venta quién fue el vendedor.
Muchísima información y muchas claves y muchos Eiriz apuntando a tablas maestra.
Esto es un ejemplo para este curso.
No lo tomen como algo real una tabla o alguien dirá.
Pero hay falta al total de la factura.
Si estoy enseñando otra cosa no a cómo crear una tabla de cabecera de factura y fíjense vamos a ir al
diseño de tablas que tengo todos los campos que apuntan a un maestro.
Los tengo como índice tanto la de la tablas maestra la de cabecera como el producto y a su vez en cabecera
tengo la fecha como índice.
No porque apunte a ninguna tabla sino porque lo quiero poner como índice porque cuando quiera atraerme
en una consulta todas las facturas que el mes de enero me va a dejar el índice hacerlo rápidamente sin
tomar en cuenta millones de registros que no tienen que ver con el mes de enero por esos fueron creados
los índices.
Y también tengo la ID de mi cliente para que vaya a la tabla maestra de cliente para unir la cabecera
de factura con el con la tabla de clientes.
El día que yo quiera hacer una consulta de mi ventas pero que quiero que me traigan el nombre del cliente
voy a unir ambas tablas y voy a decirle bueno vamos a unir la tabla cabecera con la tabla clientes y
el punto de unión es el campo flia y las va a unir perfectamente las bachear y me va a traer todas las
columnas y los campos que yo necesite tanto de la tabla de cabecera como de la tabla esto es la primer
forma normal vamos ahora a la siguiente clase porque vamos a ver la segunda forma normal.