Creación de llaves foráneas y/o relaciones


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:

  1. 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.
  2. 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/

2 Comentarios

Artículo Anterior Artículo Siguiente