1. Documento basado en las presentaciones del libro Sistemas de Bases de Datos deThomasConnolly y Carolyn E. Begg.
1
2. Significado del termino relacional completo.
Como es la forma de las consultas en el algebra
relacional.
Como es la forma de consultas in tuplas en el
calculo relacional.
Como es la forma de consultas en el dominio
de el calculo relacional.
Categorías del DML relacional.
2
3. El algebra y el calculo relacional son
lenguajes formales asociados con el modelo
relacional.
Informalmente, el algebra relacional es un
lenguaje procedimental (alto nivel) y el
calculo relacional es un lenguaje no
procedimental.
Ambos lenguajes son equivalentes.
Un lenguaje que produce una relación que
puede ser derivada usando calculo relacional
es relacionalmente completa.
3
4. Las operaciones del algebra relacional
trabajan sobre una o mas relaciones para
definir otra relación sin cambiar las relaciones
originales.
Ambos, operadores y resultados son
relaciones, así la salida desde una operación
puede llegar a ser la entrada para otra
operación.
Se permite que expresiones sean anidadas.
Esta propiedad es llamada Clausula.
4
5. Existen 5 operaciones básicas del algebra
relacional:
Selección,
Proyección,
Producto cartesiano,
Unión,
Diferencia de Conjuntos.
Estas permiten la recuperación de datos.
Operaciones como Join (unión), Intersección,
y and División, pueden ser expresadas en
términos de las 5 operaciones básicas.
5
8. predicado (R)
Trabaja con una simple relación R y define la
relación que contiene solamente aquellas tuplas
(filas) de R que satisfacen la condición
especificada (predicado).
8
9. Listar todo el Staff con salario mas grande
que $10,000.
salary > 10000 (Staff)
9
10. col1, . . . , coln(R)
Trabaja con una simple relación R y define una
relación que contiene un subconjunto vertical
(atributos) de R, extractando los valores los
atributos especificados y eliminando los
duplicados.
10
11. Producir la lista de salarios para todo el Staff
mostrando solamente staffNo, fName,
lName, y detalles de salary.
staffNo, fName, lName, salary(Staff)
11
12. R S
Unión de dos relaciones R y S definen una relación
que contiene todas las tuplas de R o S o ambas, las
tuplas duplicadas serán eliminadas.
R y S deben ser compatibles para la Unión.
Si R y S tiene i y j tuplas respectivamente, la
unión es obtenida por la concatenación de
ellas en una relación con un máximo de (I + J)
tuplas.
12
13. Liste todas las ciudades donde hay ni una
sucursal (Branch) o una propiedad en alquiler.
city(Branch) city(PropertyForRent)
13
14. R – S
Define una relación de las tuplas que están en la
relación R pero que no están en S
R y S deben ser compatibles para la diferencia.
14
15. Listar todas las ciudades donde están las
sucursales (Branch) pero no están el las
propiedades para la renta (PropertyForRent).
city(Branch) – city(PropertyForRent)
15
16. R S
Define una relación que consistente del
conjunto de todas las tuplas que están en
ambos conjuntos R y S.
R y S deben ser compatibles para la
intersección.
R S = R – (R – S)
16
17. Listar todas las ciudades donde hay una
sucursal (Branch) y por lo menos una
propiedad para renta.
city(Branch) city(PropertyForRent)
17
18. R X S
Define una relación que es la concatenación de
todas las tuplas de la relación R con las tuplas de
la relación S.
18
19. Listar los nombre y comentarios de todos los clientes
quienes han visto una propiedad para la renta.
(clientNo, fName, lName(Client)) X (clientNo, propertyNo, comment
(Viewing))
19
20. Use selección para extraer aquellas tuplas donde
Client.clientNo = Viewing.clientNo.
Client.clientNo = Viewing.clientNo((clientNo, fName, lName(Client))
(clientNo, propertyNo, comment(Viewing)))
Producto Cartesiano y la Selección pueden ser reducidos a una simple operación
llamada Join.
20
21. Join es derivado del producto cartesiano.
Son las operaciones más difíciles de
implementar eficientemente en una RDBMS.
21
22. Forma de la operación joinTheta join
Equijoin (un particular tipo deTheta join)
Join Natural
Outer join
Semijoin
22
23. R FS
Define una relación que consiste de tuplas que
satisfacen el predicado F del producto
cartesiano de R y S.
El predicado de F es de la forma R.ai S.bi
donde puede ser uno de los operadores de
comparación (<, , >, , =, ).
23
24. Theta puede ser re-escrita de usando selección
básica y producto cartesiano.
R FS = F(R S)
El grado de un Theta join es la suma de grados de
los operando relacionales de R y S. Si el predicado
de F contiene solo igualdad (=), el termino usado es
Equijoin.
24
25. Listar los nombres y comentarios de todos los
clientes quienes han visto una propiedad para
rentar.
(clientNo, fName, lName(Client)) Client.clientNo =
Viewing.clientNo (clientNo, propertyNo, comment(Viewing))
25
26. R S
Un Equijoin de dos relaciones R y S sobre todos los
atributos comunes x. Una ocurrencia de cada
atributo común es eliminado de la relación
resultado.
26
27. Listar los nombres y comentarios de todos los
clientes que han visto una propiedad para rentar.
(clientNo, fName, lName(Client))
(clientNo, propertyNo, comment(Viewing))
27
28. Para mostrar filas en el resultado que no tienen
valores de emparejamiento (match) en las
columnas del join, use Outer join.
R S
(Izquierdo) outer join es un join en el cual tuplas de R
que no tienen valores para emparejar (match) con
columnas comunes de S y estas son incluidas en el
resultado.
28
29. Producir un reporte de estado las propiedades
visitadas.
propertyNo, street, city(PropertyForRent) Viewing
29
30. R F S
Define una relación que contiene tuplas de R que
participan en el join de R con S.
Un Semijoin puede ser escrito como una proyección y un
Join:
R F S = A(R F S)
30
31. Liste los detalles completos de todo el staff
quienes trabajan en una sucursal (branch) en
Glasgow.
Staff Staff.branchNo=Branch.branchNo(city=‘Glasgow’(Branch))
31
32. R S
Define una relación sobre los atributos C que consisten de
un conjunto de tuplas de R que corresponder con la
combinación de todas la tupla en S.
Expresado usando operaciones básicas:
T1 C(R)
T2 C((S XT1) – R)
T T1 –T2
32
33. Identificar todos los cliente quienes han visto
todas las propiedades de tres alcobas.
(clientNo, propertyNo(Viewing))
(propertyNo(rooms = 3 (PropertyForRent)))
33
34. AL(R)
Aplica la lista de funciones de agregación, AL, a la
relación R para definir una relación sobre la lista
de agregación.
AL contiene uno o más pares
(<función_agregada>, <atributos>).
Las principales funciones agregadas son:
COUNT, SUM, AVG, MIN y MAX.
34
35. Cuantas propiedades tienen un valor de renta de más de
350 mes?
R(myCount) COUNT propertyNo (σrent > 350
(PropertyForRent))
35
36. GAAL(R)
Agrupación de tuplas de R por los atributos
definidos, GA, y después, aplica a la lista una
función agregada, AL, para definir una nueva
relación
AL contiene uno o más pares
(<función_agregada>, <atributos>).
La relación resultante contiene los atributos que
agrupan, GA, junto con resultados de cada uno de
las funciones agregadas.
36
37. Encontrar el número de Personas (Staff) que trabajan en
cada sucursal (Branch) y la sumas de sus salarios.
R(branchNo, myCount, mySum)
branchNo COUNT staffNo, SUM salary (Staff)
37
38. La operación de asignación () suministra una forma
conveniente de expresar consultas complejas.
Asignación será hecha sobre variables de relación
temporales.
Ejemplo: r s as
temp1 R-S (r )
temp2 R-S ((temp1 x s ) – R-S,S (r ))
result = temp1 – temp2
El resultado a las derecha es asignado a la variable de
relación a la izquierda de .
Puede usarse variables en expresiones subsecuentes.
39. El contenido de la base de datos se
puede realizar usando las siguientes
operaciones:
Borrado (Delete)
Inserción (Insert)
Actualización (Update)
Todas las operaciones son expresadas
usando el operador de asignación.
40. Una petición de borrado es expresada
similarmente a una consulta, excepto que en vez
de mostrar tuplas al usuario, la tuplas son
removidas.
Se pueden borrar solamente todas las tuplas; no
se pueden borrar solo valores de atributos en
particular.
Es expresado por:
R R – E
donde R es una relación y E es consulta del
algebra relacional.
41. Borrar todas las tuplas de la sucursal
(Branch) donde la ciudad sea London.
Branch Branch – city = “London” (Branch)
42. Para insertar datos en una relación se debe
tener en cuenta:
Especificar la tupla a ser insertada
Escribir una consulta cuyo resultado es el
conjunto de tuplas a ser insertado.
En el algebra relacional se expresa así:
R R E
donde R es la relación y E es la expresión
algebraica de la relación a insertar.
43. Insertar información el la relación Cliente la siguiente
información el cliente CR99 que es Jenny López, teléfono
123456 y prefType = House y el máximo de renta a pagar 600.
Client Client {(“CR99”, “Jenny”, ”López”, “123456”, “House”, 600)}
44. Un mecanismo para cambiar valores de una
tupla sin cambiar todos los valores en la tupla
Usa el operador de proyección para hacer la
tarea
Cada Fi es:
Un atributo de R que no sea modificado,
ó,
Si el atributo a ser actualizado es Fi una expresión
puede ser usada.
)(,,,, 21
RR lFFF
45. Incrementar al valor máximo a pagar por renta de todos los cliente en el
4.5 porciento.
Client clientNo, fName, lName, telNo, prefType, * maxRent *4.5 (Client)
46. Connolly, Tomas M,. Begg, Carolyn E. “Sistemas
de bases de datos: Un enfoque práctico para
diseño, implementación y gestión”. 4ª Edición.
Pearson – AddisonWesley. 2005. Capitulo 4.
KORTH, HENRY F., SILBERSCHATZ, ABRAHAM,
“Fundamentos de bases de datos” 2da. Edición,
McGraw-Hill/Interamericana de España, España,
1993
46