You are on page 1of 9

1.

-DEFINA BITACORA DE TRABAJO


Es una estructura ampliamente usada para grabar las modificaciones de la
base de datos es la bitácora, herramienta que permite registrar, analizar detectar y
notificar eventos que suceden en cualquier sistema de información utilizando en
las organizaciones. La estructura mas ampliamente usada para grabar las
modificaciones de la BD.

2. Describa las funciones de una bitácora de trabajo

La importancia de las bitácoras es la recuperación de información ante


incidentes de seguridad, detección de comportamiento inusual, información para
resolver problemas, evidencia legal, es de gran ayuda en las tareas de computo
forense.

3.-Defina transacción

Las transacciones de bases de datos permiten agrupar sentencias (por


ejemplo SQL) en bloques, que van a ser ejecutados simultáneamente de tal forma
que podamos evaluar si alguna de las sentencias ha fallado y de ser así poder
deshacer los cambios en el momento sin alterar de forma alguna la base de datos.

4. Explique las propiedades ACID de una transacción.

Atomicidad
La Atomicidad requiere que cada transacción sea "todo o nada": si una
parte de la transacción falla, todas las operaciones de la transacción fallan,
y por lo tanto la base de datos no sufre cambios. Un sistema atómico tiene
que garantizar la atomicidad en cualquier operación y situación, incluyendo
fallas de alimentación eléctrica, errores y caídas del sistema.
Consistencia
La propiedad de Consistencia se asegura que cualquier transacción llevará
a la base de datos de un estado válido a otro estado válido. Cualquier dato
que se escriba en la base de datos tiene que ser válido de acuerdo a todas
las reglas definidas, incluyendo (pero no limitado a) los constraints, los
cascades, los triggers, y cualquier combinación de estos.
Aislamiento
El aislamiento ("Isolation" en inglés) se asegura que la ejecución
concurrente de las transacciones resulte en un estado del sistema que se
obtendría si estas transacciones fueran ejecutadas una atrás de otra. Cada
transacción debe ejecutarse en aislamiento total; por ejemplo, si T1 y T2 se
ejecutan concurrentemente, luego cada una debe mantenerse
independiente de la otra.
Durabilidad
La durabilidad significa que una vez que se confirmó una transacción
(commit), quedará persistida, incluso ante eventos como pérdida de
alimentación eléctrica, errores y caídas del sistema. Por ejemplo, en las
bases de datos relacionales, una vez que se ejecuta un grupo de
sentencias SQL, los resultados tienen que almacenarse inmediatamente
(incluso si la base de datos se cae inmediatamente luego).

5. Especifique las sentencias SQL que conforman a una transacción.

 BEGIN TRANSACTION o BEGIN TRAN: marca el inicio de una


transacción. TRAN es un sinónimo de TRANSACTION y se suele usar más
a menudo por abreviar.
 ROLLBACK TRANSATION o ROLLBACK TRAN: fuerza que se deshaga
la transacción en caso de haber un problema o querer abandonarla. Cierra
la transacción.
 COMMIT TRANSACTION O COMMIT TRAN: confirma el conjunto de
operaciones convirtiendo los datos en definitivos. Marca el éxito de la
operación de bloque y cierra la transacción.

6. Describa el protocolo de Escritura hacia adelante y el protocolo de escritura


hacia atrás.

El teorema hacia delante habla de que si hay un problema desase la


transacción hasta el último punto guardado y el teorema hacia atrás habla de
deshacer la transacción desde el inicio

7. Realice la siguiente actividad:


Identifique el archivo log o de registro de bitácora de dos gestores de base de
datos.
8.- drop database proyecto;
CREATE DATABASE proyecto;
USE proyecto;

CREATE TABLE carrera (


clave_carrera int(11) NOT NULL,
nom_carrera varchar(20) NOT NULL,
num_depto int(11) NOT NULL,
PRIMARY KEY (clave_carrera),
KEY num_depto (num_depto) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE departamento (


num_departamento int(11) NOT NULL,
nombre_dept varchar(20) NOT NULL,
jefe_num_tarjet int(11) NOT NULL,
PRIMARY KEY (num_departamento),
KEY jefe_num_tarjet (jefe_num_tarjet) ) ENGINE=InnoDB DEFAULT
CHARSET=latin1;

CREATE TABLE maestros (


num_tarjeta int(11) NOT NULL DEFAULT 0,
nombre varchar(50) DEFAULT NULL,
PRIMARY KEY (`num_tarjeta`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE bitacora (


id int(11) NOT NULL AUTO_INCREMENT,
operacion varchar(10) DEFAULT NULL,
usuario varchar(40) DEFAULT NULL,
host varchar(30) NOT NULL, modificado datetime DEFAULT NULL,
tabla varchar(40) NOT NULL,
PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1
AUTO_INCREMENT=1 ;

DROP TRIGGER IF EXISTS bit_carr_ins;

CREATE TRIGGER bitacora AFTER INSERT ON carrera


FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado,
tabla) VALUES
(SUBSTRING(USER(), (INSTR(USER(),'@')+1)),
SUBSTRING(USER(),1,(instr(user(),'@')-1)),
“INSERTAR”, NOW(), “CARRERA”);

DROP TRIGGER IF EXISTS bit_carr_upd;


CREATE TRIGGER bit_carr_upd AFTER UPDATE ON carrera
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado,
tabla) VALUES
(SUBSTRING(USER(), (INSTR(USER(),'@')+1)),
SUBSTRING(USER(),1,(instr(user(),'@')-1)),
“ACTUALIZAR”, NOW(), “CARRERA”);

DROP TRIGGER IF EXISTS bit_carr_del;


CREATE TRIGGER bit_carr_del AFTER DELETE ON carrera
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado,
tabla) VALUES
(SUBSTRING(USER(), (INSTR(USER(),'@')+1)),
SUBSTRING(USER(),1,(instr(user(),'@')-1)),
“ELIMINAR”, NOW(), “CARRERA”);

DROP TRIGGER IF EXISTS `bit_depto_ins`;


CREATE TRIGGER `bit_depto_ins` AFTER INSERT ON `departamento`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado,
tabla) VALUES
(SUBSTRING(USER(), (INSTR(USER(),'@')+1)),
SUBSTRING(USER(),1,(instr(user(),'@')-1)),
“INSERTAR”, NOW(), “DEPARTAMENTO”);

DROP TRIGGER IF EXISTS `bit_depto_upd`;


CREATE TRIGGER `bit_depto_upd` AFTER UPDATE ON `departamento`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado,
tabla) VALUES
(SUBSTRING(USER(), (INSTR(USER(),'@')+1)),
SUBSTRING(USER(),1,(instr(user(),'@')-1)),
“ACTUALIZAR”, NOW(), “DEPARTAMENTO”);

DROP TRIGGER IF EXISTS `bit_depto_del`;


CREATE TRIGGER `bit_depto_del` AFTER DELETE ON `departamento`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado,
tabla) VALUES
(SUBSTRING(USER(), (INSTR(USER(),@'')+1)),
SUBSTRING(USER(),1,(instr(user(),'@')-1)),
“ELIMINAR”, NOW(), “DEPARTAMENTO”);

DROP TRIGGER IF EXISTS `bit_mae_ins`;


CREATE TRIGGER `bit_mae_ins` AFTER INSERT ON `maestros`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado,
tabla) VALUES
(SUBSTRING(USER(), (INSTR(USER(),'@')+1)),
SUBSTRING(USER(),1,(instr(user(),'@')-1)),
“INSERTAR”, NOW(), “MAESTROS”);

DROP TRIGGER IF EXISTS `bit_mae_upd`;


CREATE TRIGGER `bit_mae_upd` AFTER UPDATE ON `maestros`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado,
tabla) VALUES
(SUBSTRING(USER(), (INSTR(USER(),'@')+1)),
SUBSTRING(USER(),1,(instr(user(),'@')-1)),
“ACTUALIZAR”, NOW(), “MAESTROS”);

DROP TRIGGER IF EXISTS `bit_mae_del`;


CREATE TRIGGER `bit_mae_del` AFTER DELETE ON `maestros`
FOR EACH ROW INSERT INTO bitacora(host, usuario, operacion, modificado,
tabla) VALUES
(SUBSTRING(USER(), (INSTR(USER(),'@')+1)),
SUBSTRING(USER(),1,(instr(user(),'@')-1)),
“ELIMINAR”, NOW(), “MAESTROS”);
show triggers;
select * from bitacora;
9.-
create database transaccion;
use transaccion;

create table Empleado(


idempleado int not null,
nombre varchar(45),
sueldo int,
domocilio varchar(45),
ciudad varchar(45)

);

insert into Empleado values(1, 'Juan', 3500, 'cuernavaca 10' ,'cuernavaca');


insert into Empleado values(2, 'Frncisco', 2800, 'jojutla s/n' ,'jojutla');
insert into Empleado values(3, 'Viviana', 3500, 'Allende' ,'zacatepec');
select * from Empleado;

update Empleado set nombre='luis' where idempleado=2;

-- ejecutar en otra consola


start transaction;

select *from Empleado;

update Empleado set nombre ='jose' where idempleado=1;

commit;

-- regrese a la consola de transacciones

select * from empleado;

You might also like