Beruflich Dokumente
Kultur Dokumente
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
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
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.
Unarios: actan sobre una nica relacin. Binarios: el operador tiene dos relaciones como operandos.
5
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:
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.
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
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
Ejemplo
11
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
Ejemplo
13
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
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
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
Ejemplo
18
19
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
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
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
Ejemplo
23
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
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
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
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
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)
Las dos primeras ocurrencias son acotadas (podran sustituirse) La tercera ocurrencia es libre (no puede sustituirse)
28
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
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.
P
SP
31
Obtener los nmeros de los proveedores de Pars cuya situacin sea mayor que 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 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
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
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
existe una tupla en cualquier relacin que sea el valor actual de R y que tenga los valores especificados para los atributos sealados.
35
VP (V#:V#(V1) , P#:P#(P1))
36
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
38
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
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
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
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
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
44
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
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