Sie sind auf Seite 1von 46

lgebra Relacional

lgebra Relacional. Introduccin

El modelo relacional (MR) lleva asociado a su parte esttica (estructura y restricciones) una dinmica que permite la transformacin entre estados de la base de datos.
Esta transformacin entre un estado origen a un estado objetivo se realiza aplicando un conjunto de operadores, mediante los cuales se llevan a cabo los siguientes tipos de operaciones:
- insercin de tuplas - borrado de tuplas - modificacin de tuplas - consultas

Si O es un operador, el paso de un estado origen de la base de datos (BDi) a un estado objetivo (BDj) se pueden expresar como: O (BDi) = BDj

Nota.- Ambos estados deben satisfacer las restricciones de integridad estticas, y la transformacin ha de cumplir las restricciones de integridad dinmicas (entre estados).
2

lgebra Relacional. Introduccin


Los lenguajes relacionales (LR) operan sobre conjuntos de tuplas, es decir, no son lenguajes navegacionales (que manipulan registros, como Pascal, Basic, Cobol, XBase, ...) sino de especificacin. Se dividen en dos tipos:

Algebraicos: los cambios de estado se especifican mediante operaciones, cuyos operandos son relaciones y cuyo resultado es otra relacin. Se conocen como lgebra relacional. Predicativos: los cambios de estado se especifican mediante predicados que definen el estado objetivo sin indicar las operaciones que hay que realizar para llegar al mismo. Se conocen como clculo relacional y se dividen en dos subtipos: orientados a tuplas y orientados a dominios

lgebra Relacional
En lgebra relacional (AR) la dinmica del MR la constituyen una coleccin de operadores de alto nivel que, aplicados a las relaciones, dan como resultado nuevas relaciones.

Sean R1, R2, ..., Ri y R relaciones cualesquiera y O un operador del AR, una operacin consiste en aplicar O a la(s) relacin(es) R1, ... Ri, obtenindose R: O ( R1 ... Ri ) = R Al ser el resultado de la operacin otra relacin, se cumple la propiedad de cierre, es decir, si O1....On representan operadores, se cumple: On ( ... (O1 ( R) ) ) = R

lgebra Relacional. Operadores


Clasificacin de operadores:

Segn su origen

Procedentes de la teora de conjuntos: unin, interseccin, diferencia y producto cartesiano. Relacionales especiales: restriccin, proyeccin, combinacin y divisin. Primitivos: operadores esenciales que no pueden obtenerse de otros (sin ellos, el AR no sera un lenguaje completo). Derivados: se pueden obtener aplicando varios de los operadores primitivos. Aunque se puede prescindir de ellos, son tiles para simplificar muchas operaciones habituales.

Segn la completitud del lenguaje


Segn el nmero de operandos


Unarios: actan sobre una nica relacin. Binarios: el operador tiene dos relaciones como operandos.
5

lgebra relacional. Renombrado de atributos

Rename

Este operador toma una relacin especfica y crea una nueva copia de esa relacin en la que se ha dado un nombre diferente a uno de sus atributos. Ejemplos:

Cliente rename Nombre as NombreCliente. R1 rename Campo1 as NuevoCampo1, Campo2 as NuevoCampo2.


6

lgebra relacional. Compatibilidad respecto de la unin

Dos relaciones son compatibles respecto de la unin:

Si sus cabeceras son idnticas, es decir, las dos tienen el mismo conjunto de nombres de atributos y

Los atributos con el mismo nombre en las dos relaciones se definen sobre el mismo dominio.

Nota: Podramos convertir dos relaciones en compatibles, que no lo fuesen por diferencia en los nombres de los atributos con el operador rename.

lgebra relacional. Unin

Unin

R1 unin R2 , tal que R1 y R2 son compatibles respecto de la unin. El resultado sera otra relacin cuya cabecera sera igual a la de R1 o R2 (son la misma) y cuyo cuerpo esta compuesto por todas las tuplas pertenecientes a R1 o R2 (se eliminan las repetidas).
8

lgebra relacional. Unin. Ejemplo


Ejemplo:

lgebra relacional. Interseccin

Interseccin

R1 intersect R2 , tal que R1 y R2 son compatibles respecto de la unin. El resultado sera otra relacin cuya cabecera sera igual a la de R1 o R2 (son la misma) y cuyo cuerpo esta compuesto por todas las tuplas pertenecientes a R1 y R2.

10

lgebra relacional. Interseccin. Ejemplo

Ejemplo

11

lgebra relacional. Diferencia

Diferencia

R1 minus R2 , tal que R1 y R2 son compatibles respecto de la unin. El resultado sera otra relacin cuya cabecera sera igual a la de R1 o R2 (son la misma) y cuyo cuerpo esta compuesto por todas las tuplas pertenecientes a R1 pero no R2.

12

lgebra relacional. Diferencia. Ejemplo

Ejemplo

13

lgebra relacional. Producto Cartesiano

En matemticas

El producto cartesiano de dos conjuntos A y B es el conjunto de todos los pares ordenados de la forma (a,b) tal que el primer elemento pertenece A y el segundo a B.

Aplicando lo anterior, el producto cartesiano de dos relaciones sera un conjunto de pares ordenados de tuplas, no conservando la propiedad de cerradura.
Por lo que se define el producto cartesiano ampliado.

14

lgebra relacional. Producto Cartesiano Ampliado

Producto Cartesiano Ampliado

Obtendramos el producto cartesiano segn la definicin matemtica y Cada par ordenado de tuplas es reemplazado por la tupla resultante de la combinacin de las dos tuplas.

15

lgebra relacional. Compatibilidad respecto al producto.

Dos relaciones son compatibles respecto al producto si y solo si sus cabeceras no tienen nombres de atributos iguales, es decir, son disjuntas.

Si dos relaciones no son compatibles respecto del producto podemos utilizar el operador rename para cambiar de manera apropiada los nombres de los atributos y luego realizar el producto cartesiano ampliado.

16

lgebra relacional. Producto Cartesiano Ampliado

Producto Cartesiano Ampliado

R1 times R2 o (R1 x R2) , tal que R1 y R2 son compatibles respecto al producto.


El resultado sera otra relacin cuya cabecera es la combinacin de las cabeceras de R1 o R2 y cuyo cuerpo esta compuesto por tuplas que son combinaciones de una tubla R1 y otra de R2.
17

lgebra relacional. Producto. Ejemplo

Ejemplo

18

lgebra relacional. Seleccin


Seleccin () La seleccin de una relacin mediante una expresin lgica (predicado de seleccin) da como resultado una relacin formada por el conjunto de tuplas que satisfacen dicha expresin. Ejemplo:

19

lgebra relacional. Proyeccin

Proyeccin () La proyeccin de una relacin sobre un conjunto de sus atributos es otra relacin definida sobre estos atributos, eliminando las tuplas duplicadas que hubieran podido resultar. Ejemplo:

20

lgebra relacional. Join

Join () el join de dos relaciones respecto a una cierta condicin de join, es otra relacin constituida por todos los pares de tuplas ti y tj concatenadas, tales que, en cada par, las correspondientes tuplas satisfacen la condicin especificada. Se corresponde con un producto cartesiano seguido de una restriccin. Tambin se llama combinacin o Reunin. Hay varios tipos de join: equijoin, join mayor que . Vamos a ver el Equijoin o Join Natural

21

lgebra relacional. Join Natural

Join Natural o Combinacin Natural (*) es una combinacin por igualdad donde se ha eliminado, en la relacin resultante, un atributo de cada pareja cuyos valores son idnticos. Es el caso ms utilizado de combinacin para relaciones que tienen atributos comunes. Se corresponde con un producto cartesiano seguido de una restriccin por igualdad, y despus de una proyeccin (para quitar la duplicacin en los atributos emparejados).

Cuando el atributo comn tiene el mismo nombre en ambas relaciones, se suele omitir la condicin de combinacin.
22

lgebra relacional. Join Natural. Ejemplo

Ejemplo

23

lgebra relacional. Divisin

Divisin (:) La divisin de una relacin R1 (dividendo) por otra relacin R2 (divisor) es una relacin R (cociente) tal que, al realizarse su combinacin con el divisor, todas las tuplas resultantes se encuentran en el dividendo. Ejemplo:

24

Clculo Relacional

25

Clculo Relacional Introduccin.

Calculo relacional

Los cambios de estado se especifican mediante predicados que definen el estado objetivo sin indicar las operaciones que hay que realizar para llegar al mismo. Se conocen como clculo relacional y se dividen en dos subtipos:
orientados a tuplas y orientados a dominios

Calculo y el lgebra son equivalentes

Cualquier expresin del clculo relacional puede transformarse en una expresin del lgebra relacional y viceversa. Codd ide un algortmo que verifica tal afirmacin y se le denomina el algoritmo de reduccin de Codd.

26

Clculo Relacional - Tuplas Variables de tuplas.


Una variable de tuplas se define con una proposicin de la siguiente forma: Range of T is X1, X2, , Xn

T es el nombre de la variable de tuplas que estamos definiendo. Xi puede ser:

Nombre de una relacin. Expresin del clculo relacional entre parntesis.

Si evaluamos las Xi obtendremos una serie de relaciones que tienen que ser compatibles respecto de la unin (cabeceras iguales) y T ser la unin de esas relaciones.
27

Clculo Relacional - Tuplas Variables libres o acotadas

Ejemplo 1: Exist x ( x > 3 ) (x entero) La variable x es una variable acotada

una variable simulada, que solo sirve para ubicar la expresin dentro de los parntesis con el cuantficador que est fuera de ellos. Si cambiramos todas las ocurrencias de x por la ocurrencia de otra variable (y) el significado semntico de la expresin no cambiara.
(x entero)

Ejemplo 2: Exist x ( x > 3 ) AND x< 0 Hay tres ocurrencias de x


Las dos primeras ocurrencias son acotadas (podran sustituirse) La tercera ocurrencia es libre (no puede sustituirse)

28

Clculo Relacional - Tuplas Listas Objetivos

Una lista de elementos objetivos separados mediante comas, en la que cada elemento es una variable simple o bien una expresin de la forma: [ X = ] T.A

T es un variable de tuplas. A es un atributo de la relacin asociada. X sustituir en el resultado el nombre del atributo A. - Este es opcional y en caso de no aparecer el nombre del atributo asociado ser A.

29

Clculo Relacional - Tuplas Expresiones

Una expresin del clculo de tuplas es de la forma: Lista-objetivo [ Where f ] Cmo se evala ?

Supongamos que:

T, U, V son variables de tublas en la lista objetivo. X1, , Xn son los nombres del conjunto de atributos del resultado. Se halla el producto cartesiano ampliado de T, U, V . Se eliminan las tuplas que no cumplan la clusula where. Se proyecta el resultado sobre X1, , Xn.
30

Pasos a seguir:
1. 2. 3.

Supongamos la siguientes Relaciones( o tablas)


Relacin S Atributos S#, Snombre, Situacin, Ciudad

P
SP

P#, Pnombre, Color, Peso, Ciudad


S#, P#, Cantidad

Definimos las siguientes variables de tuplas


RANGE OF SX IS S RANGE OF SY IS S RANGE OF SZ IS S RANGE OF PX IS P RANGE OF PY IS P RANGE OF PZ IS P RANGE OF SPX IS SP RANGE OF SPY IS SP RANGE OF SPZ IS SP

31

Clculo Relacional - Tuplas Ejemplos

Obtener los nmeros de los proveedores de Pars cuya situacin sea mayor que 20.

SX.S# WHERE SX.CIUDAD= Pars AND SX.SITUACIN > 20

Obtener todas las parejas de nmeros de proveedor tales que los dos proveedores estn en la misma ciudad.

Primers# = Sx.S# , SEGUNDOS# = SY.S# WHERE SX.CIUDAD = SY.CIUDAD AND SX.S# < SY.S# SX.SNOMBRE WHERE EXIST SPX (SPX.S# = SX.S# AND SPX.P# = P2)

Obtener los nombres de los proveedores que sumnistran la parte P2.

Obtener los nombres de proveedores que suministran por lo menos una parte roja

SX.SNOMBRE WHERE EXIST SPX ( SX.S# = SPX.S# AND EXIST PX ( SPX.P# = PX.P# AND PX.COLOR= ROJO) )

32

Clculo Relacional - Dominios

El clculo de dominios difiere del clculo de tuplas en que sus variables de alcance abarcan dominios en lugar de relaciones.

El clculo de dominios maneja una forma adicional de expresin lgica, denominada condicin de pertenencias.

33

Clculo Relacional - Dominios

Una condicin de pertenencia tiene la forma:


R{par, par, ...}

Donde R es el nombre de la tabla y par es la forma A:v, donde A es un atributo de R y v puede ser el nombre de la variable de alcance del clculo de dominio.

34

Clculo Relacional - Dominios Ejemplos

La condicin de verdadero se da si y solo si,

existe una tupla en cualquier relacin que sea el valor actual de R y que tenga los valores especificados para los atributos sealados.

35

Clculo Relacional - Dominios Ejemplos

VP (V#:V#(V1) , P#:P#(P1))

Es una condicin de pertenencia

Da verdadero si y solo si,

existe una tupla con el valor V1 en V# y el valor P1 en P#

36

Clculo Relacional - Dominios Ejemplos

VP (V#:Vx , P#:Px)

Da verdadero si y solo si

Existe una tupla con el valor de V# igual al valor actual de la variable de alcance Vx (cualquiera que pueda ser el valor). y un valor de P# igual al valor actual de la variable de alcance Px.

37

Clculo Relacional - Dominios Ejemplos


Vx Vx WHERE V (V#:Vx) Vx WHERE V (V#:Vx , ciudad:Londres) (Vx , ciudadx) WHERE V (V#:Vx , ciudad:ciudadx) AND VP (V#:Vx , P#:P#(P2)) (Vx , Px ) WHERE V (V#:Vx , ciudad:ciudadx) AND P (P#:Px , ciudad:ciudady) AND (ciudadx <> ciudady) Conjunto de todos los nmeros de proveedores. Conjunto de todos los nmeros de proveedores en la tabla V. Subconjunto de los nmeros de porveedores para los que la ciudad es Londres. Obtener los nmeros de los proveedores y las ciudades de proveedores que suministran la parte P2. Obtener los pares nmero de proveedor nmero de parte tales que el proveedor y la parte no estn coubicados.

38

Clculo Relacional - Dominios Ejemplos-enunciados

Obtener los nmeros de los proveedores en Pars con status > 20.
Vx WHERE EXISTS Statusx ( Statusx > 20 AND V (V#:Vx , Status:Statusx , Ciudad:Pars))

39

Clculo Relacional - Dominios Ejemplos-enunciados

Obtener todos los partes de nmeros de proveedor tales que los dos proveedores estn coubicados.
(Vx AS Va , Vy AS Vb) WHERE EXISTS ciudadz (V (V#:Vx , ciudad:ciudadz) AND V (V#:Vy , ciudad:ciudadz) AND Vx < Vy)

40

Clculo Relacional - Dominios Ejemplos-enunciados

Obtener los nombres de los proveedores que suministran por lo menos una parte roja.
Nomx WHERE EXISTS Vx EXISTS Px (V (V#:Vx , proveedor:nomx)AND VP (V#:Vx , P#:Px) AND P (P#:Px , color:color(rojo)))

41

Clculo Relacional - Dominios Ejemplos-enunciados

Obtener los nombres de los porveedores que suministran por lo menos una parte de las que suministra el proveedor V2.
Nombx WHERE EXISTS Vx EXISTS Px (V (V#:Vx , proveedor:nomx) AND VP (V#:Vx , P#:Px) AND VP (V#:V#(V2) , P#:Px))

42

Clculo Relacional - Dominios Ejemplos-enunciados

Obtener los nombres de los proveedores que suministran todas las partes.
Nombx WHERE EXISTS Vx (V (V#:Vx , proveedor:nomx) AND FORALL Px (IF P (P#:Px) THEN VP (V#:Vx , P#:Px) END IF))

43

Clculo Relacional - Dominios Ejemplos-enunciados

Obtener los nombres de los proveedores que no suministran la parte P2.


Nombx WHERE EXISTS Vx (V (V#:Vx , proveedor:nomx) AND NOT VP (V#:Vx , P#:P#(P2)))

44

Clculo Relacional - Dominios Ejemplos-enunciados

Obtener los nmeros de proveedor de los proveedores que suministran por lo menos todas las partes que suministra el proveedor V2.
Vx WHERE FORALL Px (IF VP (V#:V#(V2) , P#:Px) THEN VP (V#:Vx , P#:Px) END IF

45

Clculo Relacional - Dominios Ejemplos-enunciados

Obtener los nmeros de parte de las partes que pesan ms de 16 libras o que son suministradas por el proveedor V2, o ambas cosas.
Px WHERE EXISTS pesox (P (P#:Px , peso:pesox) AND pesox > peso(16.0) ) OR VP (V#:V#(V2) , P#:Px )

46

Das könnte Ihnen auch gefallen