A continuación les explicare paso a paso sobre la creación de llaves foráneas y el uso correcto de
estas. Antes de empezar, es necesario identificar, ¿por qué surgen las llaves foráneas o llaves
relacionales?
Los sistemas de bases de datos
relacionales NO permiten implementar una relación directa de muchos a muchos
entre dos tablas. Ahora bien, pongamos un ejemplo: El seguimiento de mantenimiento de equipos de cómputo. Si hay
muchos mantenimientos con el mismo número de equipo o computador, por lo cual
tu jefe pregunta acerca de un
mantenimiento en específico, tú no podrás saber a qué mantenimiento se está
refiriendo. Este es el motivo por el que se debe asignar un valor exclusivo a
cada mantenimiento.
Es necesario definir muy bien que
campos vamos a relacionar, generalmente se relacionar las llaves primarias de
cada tabla, pongamos un ejemplo de tablas:
Podemos observar que hay dos tipos de relación:
- De muchos a muchos (línea roja): un equipo puede tener uno o varios mantenimientos | uno o varios mantenimientos pueden ser realizados a un equipo.
- De uno a uno (línea azul): un equipo solo puede tener una sola categoría, al igual que una imagen o foto que lo identifique, y viceversa. Aquí no es necesario una tercera tabla.
Nota: “Para poder relacionar uno o más campos, es necesario que los campos que se vayan a relacionar tengan el mismo tipo de dato, la misma longitud y las mismas propiedades para que no halla ningún error al momento de crear la relación de campos”
Las relaciones o llaves foráneas
se aplican al actualizar (ON UPDATE) y al eliminar (ON DELETE), estas dos
acciones manejan un conjunto de restricciones:
CASCADE: Actualiza y elimina el registro en ambas tablas.
RESTRICT: no puede actualizar o eliminar un registro de la
tabla principal si este tiene un registro asociado a la tabla menor que toma
como referencia un campo de la tabla principal (Es el que se usa comúnmente).
SET NULL: Establece a NULL el valor de la clave secundaria
cuando se elimina el registro en la tabla principal o se modifica el valor del
campo referenciado.
NO ACTION: equivalente a RESTRICT. El servidor MySQL
rechaza la operación de eliminación o actualización para la tabla primaria si
hay un valor de clave externa relacionado en la tabla referenciada. Algunos
sistemas de base de datos tienen cheques diferidos, y NO ACTION es un cheque
diferido. En MySQL, las restricciones de clave externa se comprueban
inmediatamente, por lo que NO ACTION es igual que RESTRICT.
Para la
explicación de este tema, se trabajó con XAMPP
Paso 1: Definir los campos, tipo de datos y longitud de cada
campo
Paso 2: Definir índices
o indexar campos a referenciar, Los índices de las tablas ayudan a
indexar el contenido de diversas columnas para facilitar la búsqueda de
contenido de cuando se ejecutan consultas sobre esas tablas.
Una vez agregados los índices, les aparecerá una llave al
lado del nombre del campo, queriéndose decir que el índice se creó
correctamente.
Paso 3: Relacionar campos
Deben elegir la columna que van a relacionar, la base de datos, la tabla primara y por último el campo que van a relacionar.
En conclusión existen diferentes tipos de índices y
restricciones de llaves o claves foráneas, ustedes eligen la que más se adapte
al proyecto que estén realizando. Es cuestión de ir probando, es recomendable y
fundamental definir bien un modelo entidad relación antes de proceder a ejecutar las acciones
para que no halla errores futuros.
Referencias bibliograficas
1. https://es.stackoverflow.com/questions/105890/que-significa-cascade-set-null-restrict-no-action-en-mysql
2. https://www.anerbarrena.com/mysql-create-index-5281/
Que buena explicación, excelente benjamin
ResponderBorrarExcelente amigo, espero hallas aprendido algo. No olvides compartir con tus amigos. Saludos 👍
ResponderBorrar