Cheatsheet-0 9
Cheatsheet-0 9
Cheatsheet-0 9
Telefonos
Telefonos
Leyenda multievaluado
Cliente DNI
Entidad relación
Titular, Autorizado, ... Tipo
N:M = Ratio de cardinalidad: Cada cliente
Atributo puede tener varias cuentas; cada cuenta
tener N:M
puede tener varios clientes. Todos los
clientes tienen que tener alguna cuenta
(1, 1) = Notación de participación: (1,1)
Cada apunte tiene que pertenecer Apunte hay (0,N)
a una y sólo a una cuenta Cuenta
De E/R a Relacional
end; /
SQL Lenguaje de interrogación
-- DNI del cliente Juan Perez
select DNI from CLIENTE where NOMBRE='Juan Perez'; Transacciones
Transacción: conjunto de sentencias que se ejecutan todas (commit) o ninguna
-- TIPOS de cuentas (rollback).
select distinct TIPO from CUENTA; ACID: atómicas, consistentes, aisladas, durables
Bloqueo (lock): técnica pesimista, ayuda plan ejecución transacciones ACID.
-- Clientes #CC > 3 Usuario bloquea el acceso a otros usuarios a un elemento del SGBD.
select C.DNI from CLIENTE C, TENER T, CUENTA A Deadlock: doble bloqueo permanente
where C.DNI=T.CLIENTE and T.CUENTA= Inanición: un usuario nunca consigue el recurso
A.CODIGO and A.TIPO='Cuenta Corriente' Livelock: no están bloqueados, pero nunca consigue el recurso
group by C.DNI having count(*) > 3; BLOQUEO EN ORACLE
►RX o modo exclusivo : update / delete / insert / lock table
-- Clientes con nombre único ordenados de la Z a la A <tabla> in row exclusive mode
create view DNI_CLIENTE_UNICO as ►RS o modo compartido (solo lectura): select ... from <tabla> for
select NOMBRE, DNI from CLIENTE C1 update / lock table <tabla> in row share mode / set
where not exists transaction read only
(select NOMBRE from CLIENTE C2 ►Fin bloqueo commit (transacción finalizada; persistir cambios) o rollback
where C1.NOMBRE = C2.NOMBRE and (abortar transacción; deshacer cambios)
C1.DNI <> C2.DNI)
order by NOMBRE desc; Interacción con BD en Java
Programa JDBC JDBC Driver
-- Clientes sin cuentas (Java) <<librería>> <<driver>> Protocolo DB
select NOMBRE from CLIENTE propietario BD
where DNI not in (select CLIENTE from TENER);
Class.forName("com.algunabd.SuDriverJdbc");
-- Unión, intersección, resta de consultas
...
select... union|intersect|minus select... ;
Connection con = DriverManager.getConnection(...);
* Sólo se representa una parte del modelo © Profesores Bases de Datos 2012-2014. Grado de Ingeniería Informática. Universidad de Zaragoza
Version 0.9 : 23-Abr-2014