Administración
de bases de datos
| Reto 3
Generar una bitácora de trabajo de
administración de bases de datos
Nombre completo
Matrícula
Fecha de elaboración
Nombre del Módulo
Nombre del Asesor
1 Introducción
Una bitácora de trabajo o fichero de registro log, se utiliza para registrar la información acerca
de los eventos que ocurren en el DBMS como, por ejemplo: instalación, administración y
explotación. Esta bitácora es útil para poder averiguar las posibles fallas o realizar auditorías
de las operaciones que los clientes realizan. Te invitamos a poner en práctica lo aprendido en
la Lección de bitácoras de trabajo del administrador de bases de datos, resolviendo este Reto.
2 Caso de estudio
Instrucción: Revisa con detenimiento el siguiente caso.
Un administrador de base de datos de un hospital desea realizar una bitácora de trabajo para
registrar las operaciones de insert, update y delete sobre la tabla doctores. La creación de la
tabla doctores y bitácora de trabajo, se muestra a continuación:
CREATE DATABASE hospital;
use hospital;
CREATE TABLE doctores
(
id int NOT NULL,
nombre VARCHAR(25) NOT NULL,
apellido VARCHAR(25) NOT NULL,
especialidad VARCHAR(25) NOT NULL,
);
CREATE TABLE bitacora_trabajo
(
id_registro int NOT NULL AUTO_INCREMENT,
operacion VARCHAR(25) DEFAULT NULL,
usuario_cambio VARCHAR(25) DEFAULT NULL,
host_log VARCHAR(25) NOT NULL,
fecha_modificacion DATETIME DEFAULT NULL,
tabla_modificacion VARCHAR(50) NOT NULL,
PRIMARY KEY (id_registro)
)
ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
3 Bitácora de trabajo
Instrucción: Completa la plantilla con los triggers o disparadores que se muestran a
continuación:
a. log_doctores_insertar
b. INSERT ON
c. "INSERTAR"
d. log_doctores_actualizar
e. UPDATE ON
f. "ACTUALIZAR"
g. log_doctores_eliminar
h. DELETE ON
i. "ELIMINAR"
j. INSERT
k. UPDATE
l. DELETE
m. 'INSERTAR' ON
n. 'ACTUALIZAR' ON
o. 'ELIMINAR' ON
Plantilla para rellenar
DELIMITER //
CREATE TRIGGER log_doctores_insert AFTER INSERT ON doctores
FOR EACH ROW INSERT INTO bitacora_trabajo(host_log, usuario_cambio,
operacion, fecha_modificacion, tabla_modificacion)
VALUES (SUBSTRING(USER(), (INSTR(USER(), '@')+1)),
SUBSTRING(USER(), 1, (INSTR(USER(), '@')-1)), “INSERTAR”, NOW(),
"DOCTORES")
//
CREATE TRIGGER _log_doctores_actualizar AFTER UPDATE ON doctores
FOR EACH ROW INSERT INTO bitacora_trabajo(host_log, usuario_cambio,
operacion, fecha_modificacion, tabla_modificacion)
VALUES (SUBSTRING(USER(), (INSTR(USER(), '@')+1)), SUBSTRING(USER(),
1, (INSTR(USER(), '@')-1)), ”ACTUALIZAR”, NOW(), "DOCTORES")
//
CREATE TRIGGER log_doctores_eliminar AFTER DELETE ON doctores
FOR EACH ROW INSERT INTO bitacora_trabajo(host_log, usuario_cambio,
operacion, fecha_modificacion, tabla_modificacion)
VALUES (SUBSTRING(USER(), (INSTR(USER(), '@')+1)),
SUBSTRING(USER(), 1, (INSTR(USER(), '@')-1)), ”ELIMINAR”, NOW(),
"DOCTORES")
//
4 Tabla bitácora de trabajo
Instrucción: Completa la tabla de la bitácora de trabajo de acuerdo con las consultas
mostradas, teniendo en cuenta que los registros iniciales de la tabla doctores y el usuario
identificado en la base de datos es root@localhost:
id nombre apellido especialidad
1546 Laura Flores Pediatría
1547 Jaime Valdez Cardiología
1548 Paulina Ferrer Ginecología
1549 Andrés Valdivia Ginecología
Consultas:
INSERT INTO doctores(id, nombre, apellido, especialidad)
VALUES ('1875','Amelia', 'Hernández', 'Neurología');
UPDATE doctores
SET especialidad='Urología' WHERE especialidad='Ginecología'
DELETE FROM doctores
WHERE id = '1549'
Tabla para rellenar
id_registro Operación usuario_cambio host_log fecha_modificacion tabla_modificacion
1 INSERTAR root localhost 02-11-22 DOCTORES
02-11-22
2 INSERTAR root Localhost DOCTORES
02-11-22
3 INSERTAR root Localhost DOCTORES
02-11-22
4 INSERTAR root Localhost DOCTORES
02-11-22
5 INSERTAR root Localhost DOCTORES
02-11-22
6 ACTUALIZAR root localhost DOCTORES
02-11-22
7 ELIMINAR root Localhost DOCTORES
NOTA: Los primeros cuatro registros corresponden a los primeros cuatro doctores ya
ingresados 1546 a 1549
id nombre apellido especialidad
1546 Laura Flores Pediatría
1547 Jaime Valdez Cardiología
1548 Paulina Ferrer Ginecología
1549 Andrés Valdivia Ginecología
El registro número 5 corresponde al de la primera consulta 1875 y la tabla quedaría así.
id nombre apellido especialidad
1546 Laura Flores Pediatría
1547 Jaime Valdez Cardiología
1548 Paulina Ferrer Ginecología
1549 Andrés Valdivia Ginecología
1875 Amelia Hernández Ginecología
La consulta número 6 actualiza la tabla completa. Y la tabla quedaría así
id nombre apellido especialidad
1546 Laura Flores Pediatría
1547 Jaime Valdez Cardiología
1548 Paulina Ferrer Ginecología
1549 Andrés Valdivia Ginecología
1875 Amelia Hernández Ginecología
La consulta número 7 modifica al id 1549 que corresponde al doctor Andres Valdivia por lo tanto
la tabla con la eliminación quedaría de la siguiente forma:
id nombre apellido especialidad
1546 Laura Flores Pediatría
1547 Jaime Valdez Cardiología
1548 Paulina Ferrer Ginecología
1875 Amelia Hernández Ginecología
Conclusión:
En este Reto aprendí un poco más sobre la importancia de una base de datos y el disparador o
trigger que es una funcionalidad que la base de datos ejecuta de forma automática cuando
se realiza una operación de tipo Insert, Update o Delete.
Considero que con la práctica y aprendiendo bien el funcionamiento del programa MySQL
lograré aprender más, es muy importante y elemental en el manejo de alguna empresa o
negocio, Ya que creando una base de datos se puede uno ahorrar mucho tiempo relacionado
con el trabajo y con el programa, las funciones y ejecuciones de una empresa se realizan mucho
mejor y con más confianza, siempre y cuando se maneje bien la base de datos.