Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Teoría 1. Admon. BDs
Teoría 1. Admon. BDs
Después de haber creado una vista, se puede realizar una instrucción SELECT con
ella, de la siguiente manera:
Select * from vista1 order by edad asc;
La salida contiene sólo las filas que se filtraron en la sentencia CREATE VIEW. Otras
filas de la misma tabla, no se puede acceder mediante esta vista.
Vistas (Views)
ALUMNOS1
mat nombre apat edad email ciudad telefono
123 Juan Pérez 23 jp@ittizimin.edu.mx tizimin 1234566
124 Ana Pérez 22 ap@hotmail.com merida 2223344
125 María Sánchez 21 ma@yahoo.com.mx merida 5544553
Create view vista1 as select nombre, apat, edad, email from alumnos1;
VISTA1 nombre apat edad Email
Juan Pérez 23 jp@ittizimin.edu.mx
Ana Pérez 22 ap@hotmail.com
María Sánchez 21 ma@yahoo.com.mx
Select nombre, apat, edad from VISTA1 order by edad asc
nombre apat edad
María Sánchez 21
Ana Pérez 22
Juan Pérez 23
Vistas (Views)
ALUMNOS EJERCICIO:
matricula nombre apellido edad casado -Crea una vista con nombre, apellido y
123 Juan Rodríguez 23 SI edad de los alumnos, además, nombre de
la(s) asignaturas que cursan así como su
124 Pedro Pérez 19 SI
turno.
125 Ana Moguel 24 NO - De la vista despliega nombre y apellido
126 Pedro Pérez 23 SI de los alumnos que estudian en el turno
127 Luisa Sánchez 24 NO matutino, ordénalos ascendentemente.
CURSAN ASIGNATURAS
id nombre creditos semes Turno
matricula id
A Física 5 1 M
123 A
B Cisco 5 2 V
123 B
C Java 4 3 M
125 C
D Cálculo 5 2 V
126 C
E Química 4 1 M
124 E
Vistas (Views)
¿Por qué utilizar vistas?
Para simplificar operaciones complejas de SQL. Después de la
consulta se escribe, se puede reutilizar con facilidad, sin tener
que conocer los detalles de la consulta subyacente en sí.
Para acceder a las partes de una tabla en lugar de tablas
completas.
Para proteger los datos. El usuario puede tener acceso a
subconjuntos específicos de las tablas en lugar de tablas enteras.
Bloqueos (Locks)
PRODUCTOS
ID DESCRIPCION EXISTENCIA
1 Tylex Flu 5
Almacén
Existencia = 5
PRODUCTOS
ID DESCRIPCION EXISTENCIA
1 Tylex Flu 5
Empresa
PRODUCTOS Almacén
ID DESCRIPCION EXISTENCIA
Existencia = 5
1 Tylex Flu 5
Empresa
Cuando son varios puntos de venta lo correcto es manejar una sola base de
datos central a través de una red. ¿Qué puede pasar en este modelo cuando
se accede a la BD al mismo tiempo???????????
Bloqueos (Locks)
Acción
correcta
TIEMPO
Bloqueos (Locks)
La solución al problema anterior es utilizar bloqueos. Bloquear permite al
subproceso tener acceso exclusivo a cierto número de tablas, asegurando
que puede hacer los movimientos requeridos sin interferencia de otros
procesos.
Sólo
queda un
producto
Calcula que
SELECT hay suficientes
Cliente A encuentra 2 productos para Desbloquea la
ordena 1 tabla
productos en ese pedido, así
producto
existencia que procesa el
pedido
Checa el nivel
El cliente B espera a SELECT del inventario, el
Cliente B que termine A cual es
ordena 2
encuentra 2 insuficiente para
producto productos en el pedido, así
existencia que avisa al
cliente
TIEMPO
Bloqueos (Locks)
Si se utiliza bloqueos, el código podría verse de la
siguiente manera:
REVOKE DELETE ON
production.user_accounts FROM
’ops’@’localhost’;
Usuarios y privilegios
Para remover usuarios del sistema junto con todos
sus privilegios se utiliza la sentencia DROP USER.
Ejemplo: DROP USER 'jim'@'localhost';
El nombre de un usuario puede ser cambiado con la
sentencia RENAME USER.
Ejemplo: RENAME USER 'jim'@'localhost'
TO 'john'@‘192.168.1.5';
Transacciones
Una transacción es un conjunto de sentencias SQL
que son ejecutadas como si fueran una sola
sentencia. Banco B
4. Se hace la 5. Se hace el
incremento en la
Banco A transferencia
cuenta
2. Consulta si hay la correspondiente.
cantidad disponible.
3. Se realiza un
decremento de
$5000 en la cuenta
correspondiente.
¿Qué sucede si al
1. Se envía solicitud
momento de transferir
al banco de A a B ocurre un
Fallo?
Se desea transferir del
Banco A al Banco B, la
cantidad de $5000.
Transacciones
Sentencias para realizar la transferencia de una cuenta
A a otra B
Se consulta si hay la cantidad disponible:
select cantidad from cuentas where numcuenta=‘123’
Se hace un decremento en la cuenta A:
update cuentas set cantidad = cantidad – 5000 where
numcuenta=‘123’
Se hace el incremento en la cuenta B:
update cuentas set cantidad = cantidad + 5000 where
numcuenta=‘145’
NUNCA SE REALIZA
Transacciones
Se debe garantizar que ante un fallo de cualquier tipo,
todas las sentencias de la transacción se realicen o que
ninguna suceda.
Las sentencias START TRANSACTION y COMMIT son
colocadas al principio y fin de los comandos SQL para
representar el inicio y fin de una transacción.
En MySQL, las transacciones pueden iniciar con START
TRANSACTION y pueden ser finalizadas con COMMIT
(transacción exitosa) o con ROLLBACK (que indica que
los datos deberían ser reestablecidos a los originales).
Transacciones
Una BD es segura transaccionalmente si cumple con las propiedades
ACID (Atomocity, Consistency, Isolation, Durability):
Atomicidad: Se refiere al concepto de que todas las sentencias dentro
de la transacción son ejecutadas o ninguna de ellas.
Consistencia: Esta propiedad garantiza que la BD se mueva de un
estado consistente a otro.
In a transactional system (ACID-compliant by definition), if one or more
statements in the transaction do not succeed, the entire transaction must be rolled
back to a consistent state. If a transaction is successful, the database moves from
one consistent state to another.
Aislamiento: Especifica que los datos que han sido iniciados por una
transacción no pueden ser vistos o modificados por otra transacción
hasta que finalice la primera.
Durabilidad: Una vez que una transacción ha sido completada
exitosamente, los resultados son registrados de manera permanente.
Transacciones
En MySQL para trabajar con transacciones se utiliza:
BEGIN, BEGINWORK, START TRANSACTION: Cualquier sentencia
puede ser utilizada para iniciar una transacción.
COMMIT: Establece un fin exitoso de la transacción.
ROLLBACK: Es utilizado para deshacer una transacción ya sea en el
estado en que estaba antes de la ejecución de la transacción o
hasta un cierto punto anterior en donde la ejecución está
actualmente ocurriendo. Este punto se llama punto de rescate
(SAVEPOINT).
SAVEPOINT: Es un punto definido en la transacción. Es utilizado
para establecer un punto de rescate con un nombre. La sentencia
ROLLBACK TO SAVEPOINT es usada para deshacer la transacción
hasta el punto de rescate señalado con el nombre.
Transacciones
Paso 1: Creación de la tabla test
CREATE TABLE test (campo INT NOT NULL PRIMARY KEY) ENGINE=
InnoDB;
Paso 2: Inserción de registros
INSERT INTO test VALUES(1),(2),(3);
Paso 3: Consulta a la tabla
SELECT * FROM test;
Paso 4: Inicio de una transacción
BEGIN;
Paso 5: Inserción de un nuevo registro
INSERT INTO test VALUES(4);
Paso 6: Consulta a la tabla
SELECT * FROM test;
Paso 7: Deshacer las operaciones
ROLLBACK;
Paso 8: Consulta a la tabla
SELECT * FROM test;
Transacciones
Paso 1: Creación de la tabla trans_test
CREATE TABLE trans_test (id INT PRIMARY KEY
AUTO_INCREMENT, name VARCHAR(8)) ENGINE=InnoDB;
Paso 2: Insertamos 2 registros
INSERT INTO trans_test (name) VALUES (’a’), (’b’);
Paso 3: Consultamos la tabla
SELECT * FROM trans_test;
Paso 4: Iniciamos una transacción
START TRANSACTION;
Paso 5: Actualizamos el registro con id=1
UPDATE trans_test SET name=’z’ WHERE id = 1;
Paso 6: Inicio de un SAVEPOINT (Punto de rescate)
SAVEPOINT savepoint_one;
Transacciones
Paso 7: Actualizamos el registro con id=2
UPDATE trans_test SET name=’y’ WHERE id = 2;
Paso 8: Consultamos que se hayan realizado los cambios
SELECT id,name FROM trans_test;
Paso 9: Deshacer hasta el punto llamado savepoint_one
ROLLBACK TO SAVEPOINT savepoint_one;
Paso 10: Consultamos la tabla
SELECT id,name FROM trans_test;
Paso 11: Fin de la transacción
COMMIT;
Transacciones
Manejo de transacciones en Java
try {
Connection con = DriverManager.getConnection(url);
con.setAutoCommit(false);
Statement stmt = con.createStatement();
stmt.execute(SQLCommand);
con.rollback();
con.close();
}
catch(Exception e){
//con.commit();
}
Recuperación (Recovery)
El backup también llamado copia de respaldo o de
seguridad, es la copia de información sensible (datos y
metadatos) de un sistema informático desde su medio o
medios de almacenamiento a un medio distinto de éste, sea
cual fuere esta información, para su posterior
almacenamiento en un entorno seguro con el supuesto fin
de recuperar información con la mayor confiabilidad
posible, si fuera necesario, en caso de que cualquier motivo
o incidente genere la pérdida o modificación no deseada
de los datos originales, para de esta manera obtener
nuevamente, en un tiempo conveniente y razonable; la
operatividad del sistema del cual se hizo la copia previa al
incidente.
Recuperación (Recovery)
El proceso se realiza presuponiendo cierta
confiabilidad pero no toda. Los dispositivos destinos
corren el mismo riesgo que los medios de origen
aunque en menor medida.
Fundamentals of Database
Management Systems
- Mark Gillenson
- Second Edition
- John Wiley & Sons, Inc.