Hola qué tal.
Bienvenidos a este nuevo capítulo del curso completo de base de datos.
Y si mi tabla estaba un poco mejor que poner todo en cabecera pero está mal todavía está mal a simple
vista está mal.
Estoy creando un campo por cada medio de pago.
Eso es contra nuestro segundo consejo y nuestro segundo consejo dice que a veces es mejor crecer el
número de registros que el número de columnas a qué me refiero a que vamos a crear una tabla maestra
de medios de pago y en nuestra tabla de ventas medios de pago lo único que vamos a tener es un campo
Identity in campo auto incremental que nuestra clave principal.
Luego vamos a tener un campo que apunte a nuestra tabla maestra y vamos a tener dos campos más que es
bueno.
Se los voy a ir contando a medida que lo vamos haciendo vamos a crear una tabla nueva que va a ser una
tabla maestra que se va a llamar medios de pago
y esta tabla va a tener obviamente mantener un aided todas van a tener un aided.
No hace falta aquí que sea una tabla muy larga porque o un campo muy grande porque va a haber un registro
por cada medio de pago que yo maneje.
Por ejemplo si voy a manejar 10 tarjetas de crédito y los quiero dividir a su vez en cuotas o en un
pago y voy a manejar cheques y efectivo y depósitos bancarios voy a hacer una tabla que va a tener a
lo sumo 255 medios de pago que es muchísimo pero fíjense voy a gravar todo en un bait sin signo auto
incremental y la voy a convertir en mi prima ariki en un solo Bayt.
Tengo un abanico de 255 posibilidades ahora voy a agregar
descripción
qué es lo que va a ir aquí vamos a agregar una descripción nos vamos a poner una descripción de 100
de máximo cómo es parchar no me preocupa
y esto va a ser todo va a tener una tabla de medios de pago yo por supuesto luego ustedes en la práctica
en la vida real le van a poder agregar a cada medio de pago un por ejemplo un coeficiente si al usar
ese medio de pago el importe total de mi factura queda igual o se va a incrementar o va a tener sufrir
un descuento entonces ese coeficiente si es uno va a multiplicar por 1 me va a dar el mismo valor esto
significa que si usted paga con tarjeta de crédito en un pago es el mismo precio.
Si ustedes quieren que ese coeficiente sea superior por ejemplo uno coma cero tres significa que el
importe total de la factura le va a sumar un 3 por ciento.
Así es como jugamos nosotros en los sistemas administrativos cada medio de pago uno puede darle un coeficiente
y si uno quisiera hacer un descuento en lugar de uno coma sería cero coma y un valor y ahí al multiplicar
mi total va a ser un total menor porque estoy haciendo un descuento por ese medio de pago.
Pero fíjense yo tengo
que fue lo que no le gustó.
Ahí está me dio un error pero me lo aceptó.
No sé por qué dice que el nombre de la tabla era erróneo.
Es mentira no tiene nada de erróneo mi nombre de tabla fue quizás un pequeño bar del Jaydy SQL y aquí
nosotros vamos a tener voz voy a insertar una fila.
No hace falta poner nada en el aire porque es auto incremental.
Le voy a poner
a mi primer FIJENSE COMO A ahí me puso el aire número 1 en la segunda fila que va a ser
lo lógico hubiera sido comenzar con el efectivo pero bueno estamos haciendo un curso tampoco estamos
haciendo un software de desarrollo comercial.
Fíjense le puse valores para que ustedes comprendan cuál es el alcance de esto va a tener una tabla
maestra de medios de pago todos mis medios de pago.
Entonces cuando yo tenga una tabla que la vamos a crear porque la vimos en el curso pasado pero no la
hemos grabado así que la podemos crear ahora de manera perfecta.
Una tabla que va a hacer ventas M.P
ventas medios de pago en ventas voy a poder agregar una primera columna
obviamente mi clave principal acá si hace falta agregar muchos registros lo voy a dejar en hint.
Recuerden que por lo que vimos en el curso si ustedes se quedarán cortos con el tipo de dato en una
tabla lo pueden modificar sin problemas sin que eso afecte toda la información que ya fue grabada va
a ser mi clave principal auto incremental yo no voy a moverle un valor a este campo ahora
qué creen ustedes que vendría como segundo campo como segundo campo tengo que decirle cuál es la clave
de mi registro de cabecera de factura.
Ok estoy grabando medios de pago pero de qué de la factura número uno vamos a poner
así ventas.
Medio de pago es el prefijo de mi tabla y el campo es venta se aided.
Estoy apuntando a mi tabla ventas.
Se entiende Yok aquí lo voy a dejar como está.
Valor predeterminado no va a hacer falta porque va a ser una clave.
Lo puedo sestear al final el índice pero lo puedo sentir ahora va a ser un índice que va a apuntar y
va a estar unida a mi tabla de cabeceras para yo tener el detalle de todos los medios de pago de mi
factura inmediatamente.
Qué va a venir va a venir
el Heydi de mi tabla medios de pago.
Recuerden sé que era un Tinet tenían y yo digo Recuerden recuerden que habíamos explicado que conviene
que cuando apuntamos a una tabla maestra tenga el mismo tipo de dato por performance sino no el motor
tiene que hacer conversiones en tiempo real que serán milisegundos pero todo suma esta va a ser obviamente
otro índice y luego cuando veamos casi al final del curso lo de llaves foráneas van a ver cómo convertimos
esta tabla en una unión con la tabla de medios de pago para qué me servía las llaves foráneas para que
si alguien quiere por sistema o manualmente borrar un medio de pago de la tabla maestra el sistema no
lo va a permitir porque va a decir que ese registro está unido a otro registro de otra tabla como tabla
maestra.
Es una medida de seguridad y ahora que vamos a agregar ya tengo mi unión a un registro que va a decir
que es este.
Este registro es una tarjeta Visa en un pago.
Ahora lo único que falta agregar es el importe
total ustedes pongan el valor o el nombre que ustedes prefieran.
Yo coloco dos decimales ustedes dependiendo el país en el que están viviendo colocan más enteros más
decimales.
Esto lo manejan ustedes importe obviamente.
Obviamente no va a ser un índice y fijen.
Fíjense cómo hemos resuelto de acuerdo a nuestro segundo consejo cómo hemos hecho crecer en registros
porque si en una factura me pagan con tres medios de pago me dice Mira tengo poco saldo en la tarjeta
te doy mi tarjeta de crédito pero solamente descontarle mil pesos o 1000 dólares o 1000 el valor de
que ustedes quieran y el resto lo voy a pagar en efectivo.
Bueno voy a tener más de un registro por esa factura y mi tabla va a crecer en registros pero no va
a crecer en campos y esto es muy bueno.
Es una manera de organizar y optimizar mis tablas tengo por un lado una tabla de cabecera que tiene
los campos necesarios ni uno más ni uno menos y con sus claves hay Identity apuntando su tabla maestra
no repitiendo datos y no poniendo información que no tenga que ver con la cabecera de la factura luego
tenemos una tabla detalle que no tiene más que información del producto la cantidad y el precio y por
supuesto la Unión hacia la tabla de cabecera.
Y luego tenemos una nueva tabla que es la tabla de ventas medios de pago que está unida a una tabla
maestra de medios de pago porque yo no voy a grabar en la leyenda que diga avisã un texto no voy a grabar
un texto que diga efectivo y esto que me va a permitir el día de mañana si yo quiero saber todas las
facturas en las cuales me han pagado con visa en un pago con solo ir a la tabla maestra de medios de
pago y saber cuál es el aided de visa en un pago con ese número solamente yo voy a poder unir las tablas
de cabecera y de medios de pago y filtrar solamente por las facturas que hayan tenido en sus medios
de pago ese aided de la tabla maestra.
Esto lo vamos a ver en el cuando veamos lenguaje SQL cómo unir tablas cómo filtrar y cómo traer la información
solamente que yo necesito y cómo estamos optimizando tablas.
Esa consulta que voy a hacer va a demorar milisegundos.
Si yo hiciera mal mis tablas y pusiera campos con textos y con la palabra efectivo y yo tuviera que
filtrar por todos los medios de pago que tenga el string llamado efectivo va a ser una demora va a quintuplicar
va a multiplicar por diez por veinte el tiempo que tarda el motor en encontrar mis registros.
Siempre es conveniente.
Y esto es algo que quizás yo no lo incluí en las prácticas.
Yo tengo todo guionado y más o menos sé de qué voy a hablar en cada clase.
No sé si lo incluí pero si no lo incluí se lo digo ahora siempre es conveniente ante la posibilidad
de usar un campo de tipo numérico de entero a usar una clave de tipo string de echar o marchar o lo
que sea siempre es conveniente inclinarnos por las claves de tipo numérico.
Si en lugar de poner la palabra efectivo puedo poner una idea o un número que va a representar el efectivo
siempre va a funcionar en el motor mucho más rápido.
Al ser dato numérico que al ser un dato Extrem para los motores de bases de datos es más costoso indexar
por textos que indexar por números.
Esto se repite en todos los motores cuando ustedes trabajen con CI cuál Server como estoy yo trabajando
cada día cuando les toque trabajar con mi ciclo como estamos viendo ahora cuando les toque trabajar
con Oracle o cualquier otro motor de base de datos.
Esto es aplicable y todos estos consejos y estas prácticas que estamos viendo son aplicables a todos
los motores de bases de datos relacionales con los que ustedes pueden trabajar así que sin más los invito
a ver nuestro tercer consejo que viene en la próxima clase.
Nos vemos.