Menú Cerrar

Continuemos con nuestro curso de base de datos. En entradas anteriores hemos visto lo que es una base de datos, para qué se utilizan, sus componentes principales y mucho más. Si tienes dudas sobre los puntos anteriores, acláralas antes de continuar haciendo click aquí. Ahora continuemos, en las entradas anteriores vimos las llaves primarias y foráneas. Te hago esta pregunta: ¿qué pasa si modificamos o eliminamos un registro en la tabla que contiene la llave primaria? En esta entrada te contesto esta pregunta tan importante. Como spoiler, existe una opción On Update/On Delete que lo resuelve todo. Pero veamos las opciones que tienes y para qué sirven.

On Update/On Delete MySQL Workbench

¿Por qué debemos fijarnos en el On Update/On Delete?

Las diferentes operaciones que hacemos en una base de datos puede tener muchas consecuencias. Un administrador de base de datos siempre tiene que tener cuidado sobre el famoso “Acción-Consecuencia”. ¿Qué pasa si elimino un registro en la tabla padre? ¿qué pasa si modifico un registro en la tabla padre? Aunque a priori puedes pensar que todo se arregla de forma automática, pero no es así. Decidir qué comportamiento deben tener las tablas es una tarea del diseñador y/o administrador de la base de datos. Y este comportamiento lo define con la opción On Update/On Delete que ofrece MySQL Workbench tal como se muestra en la figura anterior.

Para que entiendas mejor el porqué debemos fijarnos en el On Update/On Delete te haré esta pregunta: si un empleado ya no trabaja en la empresa, ¿es necesario saber qué vehículo utilizaba? Obvio me estoy refiriendo al ejemplo que hicimos en este artículo. Si no lo has leído, hazlo antes de continuar. En la siguiente figura te presento el modelo E-R hecho en Workbench de este ejemplo.

On Update/On Delete con tres tablas

La respuesta puede ser sí al igual que puede ser no. Sigue leyendo para que aprendas cómo configurar las opciones que te permitirán cumplir con estas restricciones.

On Update/On Delete NO ACTION

Es la opción que viene por defecto en el MySQL Workbench y se utiliza cuando en la tabla de la llave foránea no quieres que se modifique ningún registro al ser modificado en la tabla padre. En la pregunta anterior si es necesario guardar los datos del vehículo del cliente a pesar de no estar trabajando más en la empresa, se debe seleccionar esta opción. En español esta opción significa: “Cualquier cambio en un registro en la tabla padre, no hagas nada en las tablas hijas“.

On Update/On Delete CASCADE

Es la opción que más se utiliza en una base de datos. Permite escalar las modificaciones hechas en la tabla padre a todas las tablas hijos. En la pregunta anterior si la respuesta es no, se debe seleccionar esta opción. En español esta opción significa: “Cualquier cambio en un registro en la tabla padre, hazlo también en las tablas hijas“.

…SET NULL

Esta opción no es muy utilizada. Lo que hace es poner NULL en la tabla hija de la llave foránea al modificar un registra en la tabla padre. En español esta opción significa: “Cualquier cambio en un registro en la tabla padre, pon NULL en las tablas hijas“.

…RESTRICT

Esta opción es para poner restricciones a las tablas padres en caso de tener hijos. Eso significa que no se pueden modificar las tablas padres al tener al menos un registro en una tabla hija. En español esta opción significa: “No se permiten cambios si el registro tiene al menos un hijo“.

Resumen

En esta entrada vimos algo muy importante que tenemos que tomar en cuenta al diseñar una base de datos. Las diferentes opciones para controlar cómo se comportan las tablas ante cualquier cambio en la base de datos.

¡YUPI, hemos terminado con la lección de hoy! Espero que te haya servido. ¿Quieres poner a prueba tus conocimientos? Resuelve nuestras trivias haciendo click aquí.

Acerca del autor

Saintus Zephir

Ingeniero en Sistemas Computacionales y estudiante de Maestría en Ciencias en Ingeniería y Tecnologías Computacionales en el Centro de Investigación y de Estudios Avanzados del IPN (CINVESTAV-IPN).

Comparte el artículo en tus redes sociales

Artículos relacionados

7 comentarios

  1. Anónimo

    Haz un tutorial en Workbench para mostrar cómo hacerlo por favor.

  2. Robbie

    My brother suggested I might like this web site.
    He was entirely right. This post actually made my day. You can not
    imagine simply how much time I had spent for this info!
    Thanks!

  3. Juan

    What’s Going down i am new to this, I stumbled upon this I have discovered It positively useful andit has helped me out loads. I am hoping to contribute & help different userslike its helped me. Great job.

  4. Wilbert

    Thank you for sharing your info. I really appreciate your efforts and I am waiting for
    your further post thanks once again.

  5. Josette

    I got this web site from my buddy who told me on the topic of this web page and now
    this time I am visiting this website and reading very informative articles
    or reviews here.

  6. Catharine

    What’s up to every one, the contents present
    at this web site are in fact awesome for people experience, well, keep up
    the good work fellows.

  7. graliontorile

    I like what you guys are up too. Such clever work and reporting! Keep up the excellent works guys I have incorporated you guys to my blogroll. I think it will improve the value of my web site 🙂

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

× ¿Cómo puedo ayudarte?