Está en la página 1de 13

Algebra Relacional

Jos Ramn Param Gab e o a a

Cap tulo 4

Algebra relacional
Ya hemos visto la estructura y las restricciones del modelo relacional, ahora pasamos a abordar la parte del modelo relacional que nos falta, el conjunto de operaciones para manipular los datos. Codd estableci dos lenguajes de consulta: el algebra relacional y el o clculo relacional. a El algebra relacional es un lenguaje hasta cierto punto procedimental, mientras que el clculo relacional es un lenguaje no procedimental. a En este cap tulo nos centramos en el algebra relacional, que est formado por un conjunto a de operaciones que permiten al usuario especicar peticiones de recuperacin. El resultado de o una recuperacin es una nueva relacin, que se ha formado a partir de una o ms relaciones. o o a Por lo tanto, las operaciones del algebra relacional producen nuevas relaciones que podrn a manipularse ms adelante, utilizando operaciones de la misma algebra. Una secuencia de a operaciones del algebra relacional forma una expresin del algebra relacional, cuyo resultado o ser tambin una relacin. a e o Las operaciones del algebra relacional suelen clasicarse en dos grupos. Uno contiene el conjunto de operaciones de la teor de conjuntos (es posible aplicarlas porque las relaciones a se denen como conjuntos de tuplas). Entre las operaciones de conjuntos estn la UNI ON, a la INTERSECCION, la DIFERENCIA y el PRODUCTO CARTESIANO. El otro grupo consiste en operaciones creadas espec camente para bases de datos relacionales, incluye la la PROYECCION y la REUNION (JOIN) entre otras. SELECCION,

4.1.

Seleccin o

La operacin de Seleccion sirve para seleccionar un subconjunto de las tuplas de una o relacin que satisfacen una condicin de seleccin. Se puede considerar la operacin de o o o o Seleccion como un ltro que mantiene unicamente aquellas tuplas que satisfacen una condicin de cualicacin. Por ejemplo, para seleccionar de la relacin empleado los empleados o o o que trabajan en el departamento 2 o aquellas cuyo salario m nimo rebasa los 20.000 e. Podemos especicar individualmente cada una de estas dos condiciones con la operacin o Seleccion como sigue:

N umDept=4 (EM P LEADO) Salario>20000 (EM P LEADO) Jose R. Parama Gab a 1

CAP ITULO 4. ALGEBRA RELACIONAL En general, denotamos la operacin Seleccion con: o <codicion
de seleccion> (R)

donde el s mbolo (sigma) denota al operador Seleccion, y la condicin de seleccin es o o una expresin booleana especicada en trminos de los atributos de la relacin R. Ntese o e o o que R normalmente es una expresin de algebra relacional cuyo resultado es una relacin. La o o relacin que resulta de la operacin Seleccion tiene los mismos atributos que R. La expresin o o o booleana especicada en la condicin de seleccin se compone de una o ms clusulas de la o o a a forma: <nombre de atributo> <operador de comparacin> <valor constante>, o o <nombre de atributo> <operador de comparacin> <nombre de atributo> o donde <nombre de atributo> es el nombre de un atributo de R, <operador de comparacin> o es normalmente uno de los operadores {=, <, , >, , =}, y <valor constante> es un valor constante del dominio del atributo. Las clusulas pueden conectarse arbitrariamente mediante a los operadores booleanos AN D, OR y N OT para formar condiciones compuestas. Por ejemplo, si queremos seleccionar los empleados que trabajan en el departamento 2 y ganan ms de 35.000 e al ao, o que trabajan en el departamento 1 y ganan ms de 25.000 e, a n a podemos escribir la consulta en algebra relacional como sigue: (N umDept=2
AN D Salario>35000) OR (N umDept=1 AN D Salario>25000) (EM P LEADO)

El resultado se puede observar en la Figura 4.1(a).


Nombre Apellido1 Moreira Prez Izquierdo Apellido2 Gonzlez Mosquera Snchez NSS 5874 5544 1122 F-Nac 25-7-85 21-8-69 9-9-70 Direccin Percebe 1 Lechuga 6 Calcetn 5 Sexo Mujer Mujer Varn Salario 38000 50000 30000 Supervisor 5544 Nulo Nulo Num-Dept 2 2 1 Ana Mara Luis

(a)

Nombre Jos Ana Mara Pedro Luis

Apellido1 Lpez Moreira Prez Gonzlez Izquierdo

Apellido2 Gmez Gonzlez Mosquera Ruz Snchez

Salario 34000 38000 50000 25000 30000 Sexo Num-Dept 2 2 1 Varn Mujer Varn

(b)

(c)

Figura 4.1: Resultados de las operaciones Seleccion y Proyeccion. En general, el resultado de una operacin Seleccion se determina como sigue. Se aplica o la <condicin de seleccin> independientemente a cada tupla t de la relacin R. Esto se hace o o o sustituyendo cada ocurrencia de un atributo Ai en la condicin de seleccin por su valor en o o la tupla t[Ai ]. Si el resultado de evaluar la condicin es verdadero, se seleccionar la tupla o a t. El operador Seleccion es unario, es decir, se aplica a una sola relacin. Adems, la o a operacin de seleccin se aplica a cada tupla individualmente, por ello las condiciones de o o seleccin no pueden implicar a ms de una tupla. El grado de la relacin resultante de una o a o operacin Seleccion es el mismo que el de R. o 2

4.2. PROYECCION La operacin Seleccion es conmutativa, es decir: o <cond1> (<cond2> (R)) = <cond2> (<cond1> (R)) As pues, podemos aplicar una secuencia de operaciones Seleccion en cualquier orden.

4.2.

Proyeccin o

Si pensamos en una relacin como una tabla, la operacin Selecci on selecciona algunas o o n, en cambio, selecciona ciertas las de la tabla y desecha otras. La operacin Proyeccio o columnas de la tabla y desecha las dems. Si slo nos interesan ciertos atributos de una a o relacin, usamos la operacin Proyeccion para proyectar la relacin sobre esos atributos o o o unicamente. Por ejemplo, si queremos hacer una lista con el nombre, apellidos y el salario de todos los empleados, podemos usar la siguiente operacin Proyecci on: o N ombre,
Apellido1, Apellido2, Salario (EM P LEADO)

La relacin resultante se muestra en la Figura 4.1(b). La forma general de la operacin o o Proyeccion es: <lista
de atributos> (R)

donde es el s mbolo usado para representar la operacin Proyecci on y <lista de atributos> o es una lista de atributos de la relacin R. De nuevo ntese que R es, en general, una expresin o o o de algebra relacional cuyo resultado es una relacin (siempre es as la cual en el caso ms o ), a simple es unicamente el nombre de una relacin. El resultado de una operacin Proyecci on o o contiene unicamente los atributos especicados en la <lista de atributos> y en el mismo orden que aparecen en la lista. Por ello, su grado es igual al nmero de atributos en la <lista de u atributos>. Si la lista de atributos slo contiene atributos no clave de R, es probable que aparezcan o tuplas repetidas en el resultado. La operacin Proyeccion elimina cualquier tupla repetida, o as que el resultado de la operacin Proyeccion es un conjunto de tuplas y por tanto una o relacin vlida. Por ejemplo, consideremos la siguiente operacin Proyecci on: o a o Sexo,
N umDept (EM P LEADO)

El resultado se muestra en la Figura 4.1(c). Ntese que las tuplas <Mujer, 2> y <Varn, o o 1> slo aparecen una vez en dicha gura, aunque su combinacin de valores aparece en ambos o o casos varias veces en la relacin EMPLEADO. o La operacin Proyeccion no es conmutativa y adems: o a <lista1> (lista2 (R)) = <lista1> (R) siempre que <lista2> contenga los atributos que estn en <lista1>. a 3

CAP ITULO 4. ALGEBRA RELACIONAL

4.3.

Secuencia de operaciones y la operacin Renombrar o

Las relaciones que aparecen en la Figura 4.1 carecen de nombres. En general, es posible que deseemos aplicar varias operaciones de algebra relacional una tras otra. Para ello, podemos escribir las operaciones en una sola expresin de algebra relacional anidndolas, o a o bien podemos aplicar una operacin cada vez y crear relaciones que contienen los resultados o intermedios. En el segundo caso, tendremos que dar nombre a las relaciones que contienen los resultados intermedios. Por ejemplo, si queremos obtener el nombre, los apellidos y el salario de todos los empleados que trabajan en el departamento nmero 2, debemos aplicar una u operacin Seleccion y una operacin Proyeccion. Podemos escribir una sola expresin de o o o algebra relacional, de la siguiente forma: N ombre,
Apellido1, Apellido2, Salario (N umDept=2 (EM P LEADO))

La Figura 4.2 muestra el resultado que produce esta expresin. Como alternativa, podemos o mostrar expl citamente la secuencia de operaciones, dando un nombre a cada una de las relaciones intermedias: EM P S DEP T N umDept=2 (EM P LEADO) RESU LT ADO N ombre, Apellido1, Apellido2, Salario (EM P S DEP T ) A menudo es ms sencillo descomponer una secuencia compleja de operaciones a especicando relaciones intermedias que escribir una unica expresin. Las dos operaciones o anteriores se ilustran en la Figura 4.2(b).
Nombre Apellido1 Lpez Moreira Prez Gonzlez Izquierdo Apellido2 Gmez Gonzlez Mosquera Ruz Snchez Salario 34000 38000 50000 25000 30000 Jos Ana Mara Pedro Luis

(a)

EMPS-DEPT Nombre Apellido1 Lpez Moreira Prez Apellido2 Gmez Gonzlez Mosquera NSS 1245 5874 5544 F-Nac 21-1-71 25-7-85 21-8-69 Direccin Real 8 Percebe 1 Lechuga 6 Sexo Varn Mujer Mujer Salario 34000 38000 50000 Supervisor 5544 5544 Nulo Num-Dept 2 2 2 Jos Ana Mara

(b)

RESULTADO Nombre Jos Ana Mara Apellido1 Lpez Moreira Prez Apellido2 Gmez Gonzlez Mosquera Salario 34000 38000 50000

Figura 4.2: Utilizacin de la operacin Renombrar. o o Tambin se pueden renombrar los nombres de los atributos, esto puede ser util en ciertos e casos. Para renombrar los atributos de una relacin, bastar con que incluyamos una lista o a con los nuevos nombres de atributos entre parntesis, como en el siguiente ejemplo: e
T EM P N umDept=2 (EM P LEADO) R(N omb P ila, P rimer Apell, Segundo Apell, Sal) N ombre,
Apellido1, Apellido2, Salario (T EM P )

4.4. OPERACIONES DE LA TEOR DE CONJUNTOS IA

4.4.

Operaciones de la teor de conjuntos a

El siguiente grupo de operaciones del algebra relacional son las operaciones matemticas a estndar de conjuntos. Por ejemplo, para obtener los nmeros de la seguridad social de todos a u los empleados que trabajan en el departamento 2 o que supervisan directamente a un empleado que trabaja en dicho departamento, podemos utilizar la operacin UNI ON como sigue: o EM P S DEP 2 N umDept=2 (EM P LEADO) RESU LT ADO1 N SS (EM P S DEP 2) RESU LT ADO2(N SS) Supervisor (EM P S DEP 2) RESU LT ADO RESU LT ADO1 RESU LT ADO2 La relacin RESULTADO1 contiene los nmeros de la seguridad social de todos los o u empleados que trabajan en el departamento 2, y RESULTADO2 contiene los nmeros de u la seguridad social de todos los empleados que supervisan directamente a empleados que trabajan en el departamento 2. La operacin de Union produce las tuplas que estn en o a RESULTADO1, en RESULTADO2 o en ambas (vase Figura 4.3). e
Empleado
Nombre Jos Ana Mara Pedro Luis Raquel Apellido1 Lpez Moreira Prez Gonzlez Izquierdo Nez Apellido2 Gmez Gonzlez Mosquera Ruz Snchez Izquierdo NSS 1245 5874 5544 8811 1122 8877 F-Nac 21-1-71 25-7-85 21-8-69 7-7-79 9-9-70 8-8-80 Direccin Real 8 Percebe 1 Lechuga 6 Puerro 10 Calcetn 5 Rosa, 8 Sexo Varn Mujer Mujer Varn Varn Mujer Salario 34000 38000 50000 25000 30000 30000 Supervisor 5544 5544 8877 1122 Nulo 1122 Num-Dept 2 2 2 1 1 1

RESULTADO1 NSS 1245 5874 5544

RESULTADO2 NSS 5544 5544 8877

RESULTADO NSS 1245 5874 5544 8877

Figura 4.3: Ejemplo del uso de la operacin Union. o De las operaciones de conjuntos clsicas, en el modelo relacional se utilizan varias: a Union, Interseccion, Diferencia y Producto Cartesiano. Todas estas operaciones son binarias, es decir, se aplican a dos conjuntos. Al adaptar estas operaciones al modelo relacional, en el caso de la Union, Interseccion y la Diferencia, las dos relaciones de entrada deben ser del mismo tipo de tuplas, esta condicin se denomina compatibilidad con la o unin o unin compatibles. Se dice que dos relaciones R(A1 , A2 , . . . , An ) y S(B1 , B2 , . . . , Bn ) o o son unin compatibles si ambas tienen el mismo grado n y si dom(Ai )=dom(Bi ) para o 1 i n. Esto signica que las dos relaciones tienen el mismo nmero de atributos y u que cada par de atributos correspondientes tienen el mismo dominio. Podemos denir las tres operaciones Union, Interseccion y Diferencia para dos relaciones unin compatibles R y S como sigue: o 5

CAP ITULO 4. ALGEBRA RELACIONAL Union: el resultado de la operacin, denotando por R S, es una relacin que incluye o o todas las tuplas que estn en R o en S o en ambas. Las tuplas repetidas se eliminan. a Interseccion: el resultado de esta operacin, denotado por R S, es una relacin que o o incluye as tuplas que estn tanto en R como en S. a Diferencia: el resultado de esta operacin, denotado por R S, es una relacin que o o incluye todas las tuplas de R que no estn en S. a Adoptaremos la convencin de que la relacin resultante tiene los mismos nombres de o o atributos que la primera relacin R. La Figura 4.4 ilustra las tres operaciones. Las relaciones o ALUMNO y PROFESOR (instructor en la gura) de la Figura 4.4(a) son compatibles con la unin, y sus tuplas representan los nombres y primer apellido de alumnos y profesores o respectivamente. El resultado de la Union se muestra en la Figura 4.4(b), el de la Interseccion en la Figura 4.4(c) y, la Diferencia ALUMNO-PROFESOR en 4.4(d) y PROFESOR-ALUMNO en 4.4(e).

Figura 4.4: Ilustracin de las operaciones Union, Interseccion y Diferencia. o Como se puede observar las operaciones Union e Interseccion son conmutativas, mientras que la Diferencia no lo es. La otra operacin de conjuntos que incorpora el algebra relacional es el Producto o Cartesiano. Tambin es una operacin binaria de conjuntos, pero las relaciones no tienen e o porque ser unin compatibles. El resultado del producto cartesiano de R(A 1 , A2 , . . . , An ) o S(B1 , B2 , . . . , Bm ) es una relacin Q con n + m atributos Q(A1 , A2 , . . . , An , B1 , B2 , . . . , Bm ), o en ese orden. La relacin resultante Q tiene una tupla por cada combinacin de tuplas: una o o de R y una de S. Por tanto, si R tiene nR tuplas y S tiene nS tuplas, R S tendr nR nS a tuplas. Generalmente la operacin de producto cartesiano por s sola no tiene mucho sentido, o pero combinada puede tener utilidad. Como se aprecia en la Figura 4.5, el producto cartesiano de DEPARTAMENTO con LOCALIZACIONES DE DEPARTAMENTO no aporta ninguna informacin, pero si al resultado del producto cartesiano le aplicamos una seleccin, podemos o o tener informacin relevante. o Por ejemplo, si calculamos:
R1 Departamento Localizaciones Dept RESU LT ADO N ombre Dept, Localizacion Dept (Departamento.N um
Dept=Localizaciones Dept.N umero Dept (R1)

obtenemos las diferentes localizaciones de un departamento (ver Figura 4.6). 6

4.5. JOIN

Departamento
Nombre_Dept Direccin Desarrollo Num_Dept 1 2 NSS-Jefe 1122 5544 Fech_Ini_Jefe 12-8-95 25-5-97 1 2 2 2

Localizaciones_Dept
Nmero_Dept Localizacin_Dept A Corua Ferrol Lugo Vigo

Departamento X Localizaciones_Dept
Nombre_Dept Direccin Direccin Direccin Direccin Desarrollo Desarrollo Desarrollo Desarrollo Num_Dept 1 1 1 1 2 2 2 2 NSS_Jefe 1122 1122 1122 1122 5544 5544 5544 5544 Fech_Ini_Jefe 12-8-95 12-8-95 12-8-95 12-8-95 25-5-97 25-5-97 25-5-97 25-5-97 Nmero_Dept 1 2 2 2 1 2 2 2 Localizacin_Dept A Corua Ferrol Lugo Vigo A Corua Ferrol Lugo Vigo

Figura 4.5: Ilustracin de la operacin Producto Cartesiano. o o


Resultado
Nombre_Dept Direccin Desarrollo Desarrollo Desarrollo Localizacin_Dept A Corua Ferrol Lugo Vigo

Figura 4.6: La relacin RESULTADO. o

4.5.

Join

La operacin Join, denotada por 1, sirve para combinar tuplas relacionadas de o dos relaciones en una sola tupla. Esta operacin es muy importante en cualquier o base de datos relacional que comprenda ms de una relacin, porque permite procesar a o las asociaciones establecidas por las claves externas entre las relaciones. Volviendo al ejemplo de los departamentos y sus localizaciones, antes para poder saber las distintas localizaciones de cada departamento, primero realizbamos un producto cartesiano de las a relaciones DEPARTAMENTO y LOCALIZACIONES DEPT para obtener todas las posibles combinaciones de tuplas de las dos relaciones. Sobre el resultado del producto cartesiano, seleccionamos aquellas tuplas que tienen el mismo valor en los atributos Num Dept de DEPARTAMENTO y Numero Dept de LOCALIZACION DEPT, puesto que Numero Dept en LOCALIZACION DEPT es una clave externa que hace referencia a la clave primaria de DEPARTAMENTO (Num Dept). Este mismo efecto se logra aplicando el Join. En la Figura 4.7 se puede ver que las dos expresiones de algebra relacional que aparecen en la gura dan como resultado la misma relacin. o De este modo ahorramos una operacin, es decir, en el caso de utilizar el producto o cartesiano, habr que luego aplicar una seleccin, pero con el join, slo es necesaria una a o o operacin. o 7

CAP ITULO 4. ALGEBRA RELACIONAL

Departamento.Num_Dept=Localizaciones_Dept.Numero_Dept (Departamento X Localizaciones_Dept)


Departamento
Departamento.Num_Dept=Localizaciones_Dept.Numero_Dept

Localizaciones_Dept
Nmero_Dept 1 2 2 2 Localizacin_Dept A Corua Ferrol Lugo Vigo

Nombre_Dept Direccin Desarrollo Desarrollo Desarrollo

Num_Dept 1 2 2 2

NSS_Jefe 1122 5544 5544 5544

Fech_Ini_Jefe 12-8-95 25-5-97 25-5-97 25-5-97

Figura 4.7: Ilustracin de la operacin Join. o o La forma general de una operacin Join con dos relaciones R(A 1 , A2 , . . . , An ) y o S(B1 , B2 , . . . , Bm ) es: R 1<condicion
de join>

El resultado del Join es una relacin Q con n+m atributos Q(A1 , A2 , . . . , An , B1 , B2 , . . . , Bm ), o en ese orden. Q tiene una tupla por cada combinacin de tuplas (una de R y otra de S) siempre o que la combinacin satisfaga la condicin de join. Esta es la principal diferencia entre el o o Producto Cartesiano y el Join; en el Join slo aparecen en el resultado combinaciones o de tuplas que satisfagan la condicin de join. En cambio, en el Producto Cartesiano, o aparecen todas las combinaciones de tuplas. La condicin de join se especica en trminos de o e los atributos de las dos relaciones, R y S, y se evala para cada combinacin de tuplas de las u o dos relaciones. Cada combinacin que de verdadero al evaluarse la condicin de join sobre o o ella aparecer en la relacin resultado Q como una sola tupla. a o Una condicin de join tiene la forma: o < condicion > AN D < condicion > AN D . . . AN D < condicion > donde cada condicin tiene la forma Ai Bj , donde Ai es un atributo de R, Bj es un atributo o de S, Ai y Bj tienen el mismo dominio y es uno de los operadores de comparacin o {=, <, , >, , =}. Una operacin de Join con una condicin general de join como sta se o o e denomina Theta Join. Las tuplas cuyos atributos de join sean nulos no aparecen en el resultado. El Join ms comn implica condiciones de join con comparaciones de igualdad a u exclusivamente. Un Join as en la que el unico operador de comparacin empleado es =, o se denomina Equijoin. El ejemplo presentado anteriormente es un Equijoin. Obsrvese que e en el resultado de un Equijoin siempre tenemos uno o ms pares de atributos con valores a idnticos en todas las tuplas (aquellos que especican la condicin de join). Por ejemplo en la e o Figura 4.7, los valores de los atributos Num Dept y Nmero Dept son idnticos en todas las u e tuplas porque se especic una condicin de igualdad para estos dos atributos. o o Puesto que uno de cada par de atributos con valores idnticos es superuo, se ha creado e una nueva operacin, llamada Join Natural, para deshacerse de los atributos superuos en o el resultado de un Equijoin. La denicin de Join Natural (denotado por 1 sin nada ms) o a exige que los pares de atributos sobre los que el Equijoin establece las condiciones de igualdad tengan el mismo nombre en las dos relaciones. En el siguiente ejemplo primero se renombra 8

4.6. DIVISION el atributo Numero Dept de LOCALIZACIONES DEPT a Num Dept para posteriormente aplicar un Join Natural. LOC(N um Dept, Loc Dept) LOCALIZACION ES DEP T DEP T DEP ART AM EN T O 1 LOC El atributo Num Dept se denomina atributo de join. La Figura ?? muestra el resultado de la expresin anterior. o
DEPT
Nombre_Dept Direccin Desarrollo Desarrollo Desarrollo Num_Dept 1 2 2 2 NSS_Jefe 1122 5544 5544 5544 Fech_Ini_Jefe 12-8-95 25-5-97 25-5-97 25-5-97 Localizacin_Dept A Corua Ferrol Lugo Vigo

Figura 4.8: Resultado de una operacin de Join Natural. o En la relacin DEPT, cada tupla combina una tupla de DEPARTAMENTO y otra de o LOCALIZACIONES DEPT, pero slo se conserva un atributo de join. o En general, el Join Natural se realiza igualando todos los pares de atributos que tienen el mismo nombre en las dos relaciones. Puede haber una lista de atributos de join de cada relacin, y cada par correspondiente debe tener el mismo nombre. o

4.6.

Divisin o

La operacin Division es util para un tipo especial de consultas que se presenta a o veces en aplicaciones de bases de datos. Un ejemplo es: obtener los datos de los empleados que trabajan en todos los proyectos en los que trabaja Ana Moreira. Para expresar esta consulta con la operacin Division, procedemos como sigue. Primero, obtenemos la lista de o los nmeros de los proyectos en los que trabaja Ana Moreira, colocando el resultado en la u relacin intermedia NUMP ANA: o AN A N ombre= AnaM oreira AN D Apellido1= M oreira (EM P LEADO) N U M P AN A N um P roy (T RABAJA EN 1N SSE=N SS AN A) Despus, creamos una relacin intermedia que incluye una tupla <Num Proy, NSSE> por e o cada vez que el empleado cuyo nmero de seguridad social es NSSE trabaja en el proyecto u cuyo nmero es Num Proy: u N SS N U M P N um
P roy, N SSE (T RABAJAE N )

Por ultimo, aplicamos la operacin Division a las dos relaciones, obteniendo los nmeros o u de seguridad social de los empleados que queremos: N SSS(N SS) N SS N U M P N U M P AN A RESU LT ADO N ombre, Apellido1 (N SSS 1 EM P LEADO) 9

CAP ITULO 4. ALGEBRA RELACIONAL


Empleado
Nombre Jos Ana Mara Pedro Luis Apellido1 Lpez Moreira Prez Gonzlez Izquierdo Apellido2 Gmez Gonzlez Mosquera Ruz Snchez NSS 1245 5874 5544 8811 1122 F-Nac 21-1-71 25-7-85 21-8-69 7-7-79 9-9-70 Direccin Real 8 Percebe 1 Lechuga 6 Puerro 10 Calcetn 5 Sexo Varn Mujer Mujer Varn Varn Salario 34000 38000 50000 25000 30000 Supervisor 5544 5544 Nulo 1122 Nulo Num-Dept 2 2 2 1 1

Trabaja-en
NSSE 1245 1245 5874 5544 5544 8811 1122 5874 Num-Proy 1 3 1 3 1 4 2 3 Horas 10 15 20 50 5 10 20 10 NSSE 1245 1245 5874 5544 5544 8811 1122 5874

NSS_NUMP
Num-Proy 1 3 1 3 1 4 2 3

Nump_Ana
Num-Proy 1 3

NSSS
NSS 1245 5874 5544

Figura 4.9: Ilustracin de la operacin Division. o o En la Figura 4.9 se muestran las relaciones resultado de las operaciones anteriores. En general, la operacin Division se aplica a dos relaciones R(Z) S(X), donde X Z. Sea o Y = Z X (y por tanto Z = X Y ), es decir, Y es el conjunto de atributos de R que non son atributos de S. El resultado de la Division es una relacin T (Y ) que incluye una tupla o t si hay un conjunto de tuplas tR que aparecen en R, tal que para todas las tuplas tRi en tR , tRi [Y ] = t y tRk [X] = tSj , tRk tR para cada tupla tSj en S. Esto signica que, para que una tupla t aparezca en el resultado T de la Division, los valores de t deben aparecer en R en combinacin con todas las tuplas de S. o La Figura 4.10 ilustra la operacin Division donde X = {A}, Y = {B} y Z = {A, B}. o Obsrvese que b1 y b4 aparecen en R en combinacin con las tres tuplas de S, por eso aparecen e o en la relacin resultante T . Todos los dems valores de B en R no aparecen con todas las o a tuplas de S y no se seleccionan. La operacin Division se puede expresar como una secuencia de operaciones , y , o como sigue: T1 Y (R) T2 Y ((S T1 ) R) T T1 T2

4.7.

Extensiones del lgebra relacional a

Despus de que Codd introdujera el algebra relacional como lenguaje de consulta de bases e de datos relacionales, numerosos investigadores han propuesto nuevos operadores, en general, necesarios para consultas comunes a bases de datos relacionales. De entre todas ellas vamos a destacar una extensin que est presente en la mayor de o a a los SGBD comerciales y es de utilidad, el Join Externo. 10

4.7. EXTENSIONES DEL ALGEBRA RELACIONAL

Figura 4.10: T R S.

4.7.1.

Join Externo

Las operaciones de Join antes descritas seleccionan tuplas que satisfacen la condicin de o join. Las tuplas sin una tupla relacionada se eliminan del resultado. Las tuplas que tienen un nulo en los atributos de join tambin se eliminan. Podemos utilizar el Join Exterior e cuando queramos conservar en el resultado todas las tuplas que estn en R, en S o en ambas, e ya sea que tengan o no tuplas coincidentes en la otra relacin. Esto satisface la necesidad o de las consultas donde las tuplas de las dos tablas se van a combinar para emparejar las correspondientes las, pero algunas tuplas se van a perder por no tener valores coincidentes con tuplas de la otra relacin. En tales casos, es deseable tener una operacin que conserve o o todas las tuplas tanto si se pueden emparejar como si no. Por ejemplo, supngase que deseamos una lista de todos los nombres de empleados o y tambin el nombre de los departamentos que dirigen, si es el caso de que dirijan un e departamento. Podemos aplicar una operacin Join Exterior Izquierdo, denotado por o = , para obtener el resultado como sigue: T EM P (EM P LEADO = N SS=N SS Jef e DEP ART AM EN T O) RESU LT ADO N ombre, Apellido1, Apellido2, N ombre Dept (T EM P ) La operacin de Join Exterior Izquierdo conserva todas las tuplas de la primera o relacin R (o relacin de la izquierda) en R = S, si no se encuentra una tupla coincidente o o en S. Los atributos de S del resultado se rellenan con valores nulos. El resultado de estas operaciones se muestra en la gura 4.11. Una operacin similar, el Join Exterior Derecho, denotado por <, conserva en o el resultado de R < S todas las tuplas de la segunda relacin S (la de la derecha). o Una tercera operacin, Join Exterior Completo, denotado por = <, conserva todas las o tuplas de ambas relaciones, izquierda y derecha, cuando no se encuentran tuplas coincidentes, rellenndolas con valores nulos si es necesario. a

11

CAP ITULO 4. ALGEBRA RELACIONAL

Resultado
Nombre Jos Ana Mara Pedro Luis Apellido1 Lpez Moreira Prez Gonzlez Izquierdo Apellido2 Gmez Gonzlez Mosquera Ruz Snchez Nombre-Dept Nulo Nulo Desarrollo Nulo Direccin

Figura 4.11: Operacin Join Exterior Izquierdo. o

12