Hola qué tal.
Bienvenidos a este nuevo capítulo del curso completo de base de datos y quedamos que vamos a ver llaves
foráneas las Foreing aquí las claves que son tan importantes y las uniones de tablas que nos van a permitir
evitar problemas de inconsistencia de datos faltantes o como decimos en base de datos datos huérfanos
entre tablas para poder explicarles es necesario que si ustedes lo quieren hacer a la par mía yo se
los puedo explicar y luego ustedes lo practican que se creen dos tablas nuevas por qué si yo quisiera
ahora en mis tablas productos proveedores o clientes crear llaves foráneas y unir las tablas entre si
vamos a obtener errores.
Por qué.
Porque en el momento de crearlas el motor de base de datos se fija que todo perfecto que haya referencias
cruzadas perfectas que si en mi tabla proveedores hay un proveedor ese proveedor tiene que existir en
mi tabla productos o al revés depende cómo las creemos.
Si yo quiero que en mi tabla productos cada proveedor que yo coloque se encuentre en la tabla maestra
proveedores voy a tener que especificar esa llave foránea en la Tabla Productos y ahí es donde vamos
a tener problemas.
Por qué.
Porque hay productos que tienen proveedores que no están en el maestro y hay productos y hay clientes
que no están en la tabla de ventas de detalle o la tabla de ventas perdón y nos va a dar error.
Entonces para evitar ese error que yo ya lo conozco vamos a usar tablas nuevas.
Esto no ocurriría si tengo tablas reales.
Yo aquí tengo tablas que yo las sé cercenado un poquito por el tema del curso no podía traer una base
de datos real por la complejidad del peso de los datos y además por la complejidad de la privacidad
de esos datos.
Así que yo me he armado unas tablas medio de prueba para que veamos en el curso vamos a ver nuestras
tablas alumnos y tablas materias lo que nosotros vamos a hacer ahora es una llave foránea que la vamos
a realizar desde la tabla materias.
Por qué.
Porque desde la tabla materias es donde vamos a tener que controlar que cada alumno insertado en la
tabla materias se encuentre en la tabla maestra de alumnos.
Entonces si yo hiciera al revés y la llave foránea la creara en alumnos por cada alumno nuevo que yo
quiero crear.
Al no encontrar la tabla maestra de materias me daría un error lo cual es una inconsistencia es un error
de diseño digamos.
Lo que nosotros tenemos que hacer es ir a nuestra tabla materias ir a la solapa y llaves foráneas.
Vamos a colocarle agregar vamos a por defecto ya me trae los nombres de las llaves con FKA de Foreing
aquí y le coloca un número para hacerlo.
Hacer nombres únicos tienen que ser nombres únicos y no se pueden repetir en toda la base de datos no
sólo en la tabla sino en toda la base de datos así que vamos a dejar ese número pero vamos a colocar
un poco más de información en el nombre vamos a poner que materia como la tabla maestra que estamos
la tabla de detalles que estamos uniendo contra la tabla maestra y cuál es la tabla maestra alumno muy
bien.
Yo ya tengo el nombre de mi llave foránea.
Ahora vamos a colocarle qué columna es la que estamos uniendo.
Estamos colocando la unión en la columna materia bien bajo alumno aided la tiramos le damos a aceptar
Qué tabla estamos uniendo a la tabla material la tabla alumnos y cuál es la columna de la tabla alumnos
que Machi haría con mi tabla y con el campo materia y un bajo alumno herido precisamente alumno y Guil
muy bien en este momento si el motor no arrojó un error es porque todo esto lo vio correcto.
Si yo tuviera un tipo de dato diferente si por ejemplo a mitad de alumnos tuviera un Molín y aquí tuviera
un medio NiMH automáticamente el motor me daría error.
No vamos a probar si va a ser muy largo lo pueden probar ustedes van a ver que tengo razón porque si
bien nosotros como yo les expliqué buenas prácticas conviene que los tipos de datos entre tablas que
se unen por un índice contengan el mismo tipo de dato pero que conviene por buena práctica conviene
para que el motor no trabaje tanto.
Pero ustedes han visto que nosotros tenemos productos y proveedores unidos y lo hemos ejecutado en muchas
sentencias SQL y sin embargo el Provider de proveedores no tiene nada que ver el tipo de dato con el
guion bajo probabilidad lo pueden corroborar ustedes ahora mismo en sus bases y van a ver que tengo
razón.
Sin embargo a la hora de crear una Foreing una llave foránea el motor es muy exigente.
Ahí les va a obligar a ustedes a corregir sus tipos de datos y tienen que ser exactamente iguales y
no solo en el tipo de dato.
Tanto en el tipo de dato como en la longitud y también en estos cetáceos decía el campo es consigno
sin signo.
Si permiten o no tienen que ser exactamente iguales.
Si ustedes están llegaron a este punto y les apareció un error el mismo motor les va a mostrar el error
y les va a decir bueno.
Acá tenés un campo que les mola y es MHOL molín de cinco sin signo Antoinette va a decir y que no permite
nulos contra otro campo y les va a detallar el tipo de dato y les va a avisar de que esto es una inconsistencia.
Entonces hasta aquí está todo bien ya hemos unido nuestras dos tablas vamos a proceder a guardar.
Fíjense que aquí al lado del índice me pone un lorito que es el mismo que aparece aquí que es el de
unión entre tablas lo visto el icono que nos está diciendo que por ese campo se está uniendo a esa tabla
a otra y nosotros ahora en nuestra tabla productos podemos ir creando.
Vamos a crear un registro por ejemplo un alumno lo vamos a llamar Pablo.
Perdón por la modestia y me va a dar un número yo estuve creando antes registros por eso no comienza
el número uno y ahora vamos si las materias vamos a decirle que el alumno 4 que es Pablo Fíjense que
yo no sé si ustedes prestaron atención pero aquí además de un textbook para que yo una cerda el campo
al detectar que es una llave foránea no me deja ingresar otra cosa que el valor correspondiente de la
tabla productos.
Aquí me va a parecer la lista de todos los Aydin de la tabla producto y veo a colocar una nota por ejemplo
un 5 y se va a grabar correctamente.
Si yo quisiera insertar una fila y aquí colocar un valor diferente no me deja no me deja el Jaydy pero
ustedes lo podrían hacer mediante una consulta mediante un insert podrían hacer un insert.
Vamos a esto nos queda Deantes muy bien ha sido muy útil esta clase.
Bueno vamos a hacer un insert into materias vamos a colocar qué materia alumno aided y materia nota
son los campos.
Vamos a corroborar nuestros campos son materia alumno aided y materia nos va muy bien y en valores vamos
a intentar colocar un alumno que no existe el número 6 por ejemplo y lo vamos a poner que se usa con
10.
Si yo corro esto esto me tiene que arrojar sí o sí un error muy bien qué es lo que dice el error que
no puedo adicionar o actualizar un archivo hijo porque en la Foreing aquí a la tabla materias ya la
toma como una hija de la tabla alumnos es un arma es una tabla que ya está dependiendo de la tabla alumnos
porque hay una falla en la consistencia de mi Foreing kit de mixing de mi llave foránea hay una falla
en la consistencia por qué.
Porque quiero meter un alumno que no está referenciado en la tabla alumno.
Esta es la protección que yo les digo que tienen la en que esta es la protección que ustedes van a tener
en sus tablas.
Entonces cuando Uds. se manejen en el ámbito profesional y cuando subjefes sus líderes de proyecto subgerentes
de programación vean que Uds. han creado tablas y que las han creado correctamente con los tipos de
datos perfectos con las longitudes perfectas sin malgastar espacio sin hacer que el motor trabaje de
más creando los índices correctos y además uniendo tablas con llaves foráneas ustedes se van a ganar
el respeto y van a ser catalogados como profesionales de las bases de datos así que ha sido un placer
enseñarles este capítulo y nos vamos al último capítulo del curso.
Yo digo esto y no lo debería decir porque quizás mañana le agregué más capítulos con más material y
alguien se quedará pensando pero un momento no es el último capítulo bueno al momento de grabar este
vídeo.
El curso tenía 51 capítulos.
El último es de despedida así que el capítulo que nos espera ahora es el último capítulo y donde vamos
a aprender a crear usuarios para la base de datos y a darle permisos a esos usuarios y esa va a ser
la última lección de este Gran Curso completo de base de datos.
Nos vemos en el último capítulo.