Algebra y calculo relacional

Post on 20-Jun-2015

489 views 1 download

Transcript of Algebra y calculo relacional

Documento basado en las presentaciones del libro Sistemas de Bases de Datos de Thomas Connolly y Carolyn E. Begg.

1

Significado del termino relacional completo.

Como es la forma de las consultas en el algebrarelacional.

Como es la forma de consultas in tuplas en elcalculo relacional.

Como es la forma de consultas en el dominiode el calculo relacional.

Categorías del DML relacional.

2

El algebra y el calculo relacional sonlenguajes formales asociados con el modelorelacional.

Informalmente, el algebra relacional es unlenguaje procedimental (alto nivel) y elcalculo relacional es un lenguaje noprocedimental.

Ambos lenguajes son equivalentes.

Un lenguaje que produce una relación quepuede ser derivada usando calculo relacionales relacionalmente completa.

3

Las operaciones del algebra relacionaltrabajan sobre una o mas relaciones paradefinir otra relación sin cambiar las relacionesoriginales.

Ambos, operadores y resultados sonrelaciones, así la salida desde una operaciónpuede llegar a ser la entrada para otraoperación.

Se permite que expresiones sean anidadas.Esta propiedad es llamada Clausula.

4

Existen 5 operaciones básicas del algebrarelacional: 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 entérminos de las 5 operaciones básicas.

5

6

7

predicado (R)

Trabaja con una simple relación R y define larelación que contiene solamente aquellas tuplas(filas) de R que satisfacen la condiciónespecificada (predicado).

8

Listar todo el Staff con salario mas grandeque $10,000.

salary > 10000 (Staff)

9

col1, . . . , coln(R)

Trabaja con una simple relación R y define unarelación que contiene un subconjunto vertical(atributos) de R, extractando los valores losatributos especificados y eliminando losduplicados.

10

Producir la lista de salarios para todo el Staffmostrando solamente staffNo, fName,lName, y detalles de salary.

staffNo, fName, lName, salary(Staff)

11

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, lastuplas duplicadas serán eliminadas.

R y S deben ser compatibles para la Unión.

Si R y S tiene i y j tuplas respectivamente, launión es obtenida por la concatenación deellas en una relación con un máximo de (I + J)tuplas.

12

Liste todas las ciudades donde hay ni unasucursal (Branch) o una propiedad en alquiler.

city(Branch) city(PropertyForRent)

13

R – S

Define una relación de las tuplas que están en larelación R pero que no están en S

R y S deben ser compatibles para la diferencia.

14

Listar todas las ciudades donde están lassucursales (Branch) pero no están el laspropiedades para la renta (PropertyForRent).

city(Branch) –city(PropertyForRent)

15

R S

Define una relación que consistente delconjunto de todas las tuplas que están enambos conjuntos R y S.

R y S deben ser compatibles para laintersección.

R S = R – (R – S)

16

Listar todas las ciudades donde hay unasucursal (Branch) y por lo menos unapropiedad para renta.

city(Branch) city(PropertyForRent)

17

R X S

Define una relación que es la concatenación detodas las tuplas de la relación R con las tuplas dela relación S.

18

Listar los nombre y comentarios de todos los clientesquienes han visto una propiedad para la renta.

(clientNo, fName, lName(Client)) X (clientNo, propertyNo, comment

(Viewing))

19

Use selección para extraer aquellas tuplas dondeClient.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ónllamada Join.

20

Join es derivado del producto cartesiano.

Son las operaciones más difíciles deimplementar eficientemente en una RDBMS.

21

Forma de la operación joinTheta join

Equijoin (un particular tipo de Theta join)

Join Natural

Outer join

Semijoin

22

R FS

Define una relación que consiste de tuplas quesatisfacen el predicado F del productocartesiano de R y S.

El predicado de F es de la forma R.ai S.bi

donde puede ser uno de los operadores decomparación (<, , >, , =, ).

23

Theta puede ser re-escrita de usando selecciónbásica y producto cartesiano.

R FS = F(R S)

El grado de un Theta join es la suma de grados delos operando relacionales de R y S. Si el predicadode F contiene solo igualdad (=), el termino usado esEquijoin.

24

Listar los nombres y comentarios de todos losclientes quienes han visto una propiedad pararentar.

(clientNo, fName, lName(Client)) Client.clientNo =

Viewing.clientNo (clientNo, propertyNo, comment(Viewing))

25

R S

Un Equijoin de dos relaciones R y S sobre todos losatributos comunes x. Una ocurrencia de cadaatributo común es eliminado de la relaciónresultado.

26

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

Para mostrar filas en el resultado que no tienenvalores de emparejamiento (match) en lascolumnas 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) concolumnas comunes de S y estas son incluidas en elresultado.

28

Producir un reporte de estado las propiedadesvisitadas.

propertyNo, street, city(PropertyForRent) Viewing

29

R F S

Define una relación que contiene tuplas de R queparticipan en el join de R con S.

Un Semijoin puede ser escrito como una proyección y unJoin:

R F S =A(R F S)

30

Liste los detalles completos de todo el staffquienes trabajan en una sucursal (branch) enGlasgow.

Staff Staff.branchNo=Branch.branchNo(city=‘Glasgow’(Branch))

31

R S Define una relación sobre los atributos C que consisten de

un conjunto de tuplas de R que corresponder con lacombinación de todas la tupla en S.

Expresado usando operaciones básicas:T1 C(R)

T2 C((S X T1) – R)

TT1 – T2

32

Identificar todos los cliente quienes han vistotodas las propiedades de tres alcobas.

(clientNo, propertyNo(Viewing))

(propertyNo(rooms = 3 (PropertyForRent)))

33

AL(R)

Aplica la lista de funciones de agregación, AL, a larelación R para definir una relación sobre la listade 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

Cuantas propiedades tienen un valor de renta de más de350 mes?

R(myCount) COUNT propertyNo (σrent > 350

(PropertyForRent))

35

GAAL(R) Agrupación de tuplas de R por los atributos

definidos, GA, y después, aplica a la lista unafunción agregada, AL, para definir una nuevarelación

AL contiene uno o más pares(<función_agregada>, <atributos>).

La relación resultante contiene los atributos queagrupan, GA, junto con resultados de cada uno delas funciones agregadas.

36

Encontrar el número de Personas (Staff) que trabajan encada sucursal (Branch) y la sumas de sus salarios.

R(branchNo, myCount, mySum)

branchNo COUNT staffNo, SUM salary (Staff)

37

La operación de asignación () suministra una formaconveniente de expresar consultas complejas.

Asignación será hecha sobre variables de relacióntemporales.

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.

El contenido de la base de datos sepuede realizar usando las siguientesoperaciones:

Borrado (Delete)

Inserción (Insert)

Actualización (Update)

Todas las operaciones son expresadasusando el operador de asignación.

Una petición de borrado es expresadasimilarmente a una consulta, excepto que en vezde mostrar tuplas al usuario, la tuplas sonremovidas.

Se pueden borrar solamente todas las tuplas; nose pueden borrar solo valores de atributos enparticular.

Es expresado por:R R – E

donde R es una relación y E es consulta delalgebra relacional.

Borrar todas las tuplas de la sucursal(Branch) donde la ciudad sea London.

Branch Branch –city = “London” (Branch)

Para insertar datos en una relación se debetener en cuenta: Especificar la tupla a ser insertada

Escribir una consulta cuyo resultado es elconjunto 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ónalgebraica de la relación a insertar.

Insertar información el la relación Cliente la siguienteinformación el cliente CR99 que es Jenny López, teléfono123456 y prefType = House y el máximo de renta a pagar 600.

Client Client {(“CR99”, “Jenny”, ”López”, “123456”, “House”, 600)}

Un mecanismo para cambiar valores de unatupla sin cambiar todos los valores en la tupla

Usa el operador de proyección para hacer latarea

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.

)(,,,, 21RR

lFFF

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)

Connolly, Tomas M,. Begg, Carolyn E. “Sistemasde bases de datos: Un enfoque práctico paradiseño, implementación y gestión”. 4ª Edición.Pearson – Addison Wesley. 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