Administración de base de datos V2
Administración
de bases de datos
| Reto 3
Generar una bitácora de trabajo de
administración de bases de datos
Nombre completo JORGE SANCHEZ SANCEZ
Matrícula 22012232
Fecha de 19/02/2024
elaboración
Nombre del Administración de base de datos V2
Módulo
Nombre del Araceli González García
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_insertar 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_actualizar 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")
//
--------- me funciono con este código
CREATE TRIGGER log_doctores_insertar 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_cambi host_log fecha_modificaci tabla_modificacio
o on n
1 INSERTAR root localhost 19/02/2024 21:58 DOCTORES
2 INSERTAR root localhost 19/02/2024 22:03 DOCTORES
3 INSERTAR root localhost 19/02/2024 22:06 DOCTORES
4 INSERTAR root localhost 19/02/2024 22:07 DOCTORES
5 ACTUALIZA root localhost 19/02/2024 22:19 DOCTORES
R
6 ACTUALIZA root localhost 19/02/2024 22:19 DOCTORES
R
7 ELIMINAR root localhost 19/02/2024 22:20 DOCTORES
Aquí dejo todo mi código usado
DROP DATABASE hospital;
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;
INSERT INTO doctores(id, nombre, apellido, especialidad)
VALUES ('1546', 'Laura', 'Flores', 'Pediatria');
INSERT INTO doctores(id, nombre, apellido, especialidad)
VALUES ('1547', 'Jaime', 'Valdez', 'Cardiologia');
INSERT INTO doctores(id, nombre, apellido, especialidad)
VALUES ('1548', 'Paulina', 'Ferrer', 'Ginecologia');
INSERT INTO doctores(id, nombre, apellido, especialidad)
VALUES ('1549', 'Andres', 'Valdivia', 'Ginecologia');
UPDATE doctores
SET especialidad='Urología' WHERE especialidad='Ginecologia';
SET SQL_SAFE_UPDATES = 0;
UPDATE doctores
SET especialidad='Urología' WHERE especialidad='Ginecologia';
DELETE FROM doctores
WHERE id = '1549';