ÁLGEBRA RELACIONAL
Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.
Una característica destacable de todas las operaciones del álgebra relacional es que tanto los operandos como el resultado son relaciones. Esta propiedad se denomina cierre relacional.
Las operaciones del álgebra relacional han sido clasificadas según distintos criterios; de todos ellos indicamos los tres siguientes:
1) Según se pueden expresar o no en términos de otras operaciones.
a) Operaciones primitivas: son aquellas operaciones a partir de las cuales podemos definir el resto. Estas operaciones son la unión, la diferencia, el producto cartesiano, la selección y la proyección.
b) Operaciones no primitivas: el resto de las operaciones del álgebra relacional que no son estrictamente necesarias, porque se pueden expresar en términos de las primitivas; sin embargo, las operaciones no primitivas permiten formular algunas consultas de forma más cómoda. Existen distintas versiones del álgebra relacional, según las operaciones no primitivas que se incluyen. Nosotros estudiaremos las operaciones no primitivas que se utilizan con mayor frecuencia: la intersección y la combinación.
2) Según el número de relaciones que tienen como operandos:
a) Operaciones binarias: son las que tienen dos relaciones como operandos. Son binarias todas las operaciones, excepto la selección y la proyección.
b) Operaciones unarias: son las que tienen una sola relación como operan- do. La selección y la proyección son unarias.
3) Según se parecen o no a las operaciones de la teoría de conjuntos:
a) Operaciones conjuntistas: son las que se parecen a las de la teoría de conjuntos. Se trata de la unión, la intersección, la diferencia y el producto cartesiano.
b) Operaciones específicamente relacionales: son el resto de las operaciones;
Es decir, la selección, la proyección y la combinación.
Como ya hemos comentado anteriormente, las operaciones del álgebra relacional obtienen como resultado una nueva relación. Es decir que si hacemos una operación del álgebra como por ejemplo EMPLEADOS_ADM ∪ ∪ EMPLEADOS_PROD para obtener la unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD, el resultado de la operación es una nueva relación que tiene la unión de las tuplas de las relaciones de partida.
Esta nueva relación debe tener un nombre. En principio, consideramos que su nombre es la misma expresión del álgebra relacional que la obtiene; es decir, la misma expresión EMPLEADOS_ADM ∪ EMPLEADOS_PROD. Puesto que este nombre es largo, en ocasiones puede ser interesante cambiarlo por uno más simple. Esto nos facilitará las referencias a la nueva relación, y será especialmente útil en los casos en los que queramos utilizarla como operando de otra operación.
Usaremos la operación auxiliar redenominar con este objetivo.
La operación redenominar, que denotaremos con el símbolo:=, permite asignar un nombre R a la relación que resulta de una operación del álgebra relacional; lo hace de la forma siguiente:
R:=E,
Siendo E la expresión de una operación del álgebra relacional.
En el ejemplo, para dar el nombre EMPLEADOS a la relación resultante de la operación EMPLEADOS_ADM ∪ EMPLEADOS_PROD, haríamos:
EMPLEADOS:= EMPLEADOS_ADM ∪ EMPLEADOS_PROD.
Cada operación del álgebra relacional da unos nombres por defecto a los atributos del esquema de la relación resultante, tal y como veremos más adelante.
En algunos casos, puede ser necesario cambiar estos nombres por defecto por otros nombres. Por este motivo, también permitiremos cambiar el nombre de la relación y de sus atributos mediante la operación redenominar.
Utilizaremos también la operación redenominar para cambiar el esquema de una relación. Si una relación tiene el esquema S (B1, B2, ..., Bn) y queremos cambiarlo por R (A1, A2, ..., An), lo haremos de la siguiente forma:
R (A1, A2, ..., An) := S(B1, B2, ..., Bn).
A continuación presentaremos un ejemplo que utilizaremos para ilustrar las operaciones del álgebra relacional. Después veremos con detalle las operaciones.
Supongamos que tenemos una base de datos relacional con las cuatro relaciones siguientes:
1) La relación EDIFICIOS_EMP, que contiene datos de distintos edificios de los que una empresa dispone para desarrollar sus actividades.
2) La relación DESPACHOS, que contiene datos de cada uno de los despachos que hay en los edificios anteriores.
3) La relación EMPLEADOS_ADM, que contiene los datos de los empleados de la empresa que llevan a cabo tareas administrativas.
4) La relación EMPLEADOS_PROD, que almacena los datos de los empleados de la empresa que se ocupan de tareas de producción.
A continuación describimos los esquemas de las relaciones anteriores y sus ex- tensiones en un momento determinado:
• Esquema y extensión de EDIFICIOS_EMP:
EDIFICIOS_EMP
| |
edificio
|
supmediadesp
|
Marina
|
15
|
Diagonal
|
10
|
• Esquema y extensión de DESPACHOS:
DESPACHOS
| ||
edificio
|
número
|
superficie
|
Marina
|
120
|
10
|
Marina
|
230
|
20
|
Diagonal
|
120
|
10
|
Diagonal
|
440
|
10
|
• Esquema y extensión de EMPLEADOS_ADM:
EMPLEADOS_ADM
| ||||
DNI
|
nombre
|
apellido
|
edificiodesp
|
númerodesp
|
40.444.255
|
Juan
|
García
|
Marina
|
120
|
33.567.711
|
Marta
|
Roca
|
Marina
|
120
|
• Esquema y extensión de EMPLEADOS_PROD:
EMPLEADOS_PROD
| ||||
DNI
|
nombreemp
|
apellidoemp
|
edificiodesp
|
númerodesp
|
33.567.711
|
Marta
|
Roca
|
Marina
|
120
|
55.898.425
|
Carlos
|
Buendía
|
Diagonal
|
120
|
77.232.144
|
Elena
|
Pla
|
Marina
|
230
|
21.335.245
|
Jorge
|
Soler
|
NULO
|
NULO
|
88.999.210
|
Pedro
|
González
|
NULO
|
NULO
|
Se considera que los valores nulos de los atributos edificiodesp y númerodesp de las relaciones EMPLEADOS_PROD y EMPLEADOS_ADM indican que el empleado correspondiente no tiene despacho.
OPERACIONES CONJUNTISTAS
Las operaciones conjuntistas del álgebra relacional son la unión, la intersección, la diferencia y el producto cartesiano.
Unión
La unión es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que están en alguna de las relaciones de partida.
La unión es una operación binaria, y la unión de dos relaciones T y S se indica T ∪ S.
La unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD proporciona una nueva relación que contiene tanto a los empleados de administración como los empleados de producción; se indicaría así: EMPLEADOS_ADM ∪ EMPLEADOS_PROD.
Sólo tiene sentido aplicar la unión a relaciones que tengan tuplas similares.
Por ejemplo, se puede hacer la unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD porque sus tuplas se parecen. En cambio, no se podrá hacer la unión de las relaciones EMPLEADOS_ADM y DESPACHOS porque, como habéis podido observar en las tablas, las tuplas respectivas son de tipo diferente.
Más concretamente, para poder aplicar la unión a dos relaciones, es preciso que las dos relaciones sean compatibles. Decimos que dos relaciones T y S son relaciones compatibles si:
• Tienen el mismo grado.
• Se puede establecer una biyección entre los atributos de T y los atributos de
S que hace corresponder a cada atributo Ai de T un atributo Aj de S, de modo que se cumple que dominio(Ai) = dominio(Aj).
Ejemplo de relaciones compatibles
Las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD tienen grado 5. Podemos establecer la siguiente biyección entre sus atributos:
• A DNI de EMPLEADOS_ADM le corresponde DNIemp de EMPLEADOS_PROD.
• A nombre de EMPLEADOS_ADM le corresponde nombreemp de EMPLEADOS_PROD.
• A apellido de EMPLEADOS_ADM le corresponde apellidoemp de EMPLEADOS_PROD.
• A edificiodesp de EMPLEADOS_ADM le corresponde edificiodesp de EMPLEADOS_PROD.
• A númerodesp de EMPLEADOS_ADM le corresponde edificiodesp de EMPLEADOS_PROD.
Además, supondremos que los dominios de sus atributos se han declarado de forma que se cumple que el dominio de cada atributo de EMPLEADOS_ADM sea el mismo que el dominio de su atributo correspondiente en EMPLEADOS_PROD.
Por todos estos factores, podemos llegar a la conclusión de que EMPLEADOS_ADM y
EMPLEADOS_PROD son relaciones compatibles.
A continuación, pasaremos a definir los atributos y la extensión de la relación resultante de una unión:
Los atributos del esquema de la relación resultante de T ∪ S coinciden con los atributos del esquema de la relación T.
La extensión de la relación resultante de T ∪ S es el conjunto de tuplas que pertenecen a la extensión de T, a la extensión de S o a la extensión de ambas relaciones.
Ejemplo de unión
Si queremos obtener una relación R que tenga a todos los empleados de la empresa del ejemplo anterior, llevaremos a cabo la unión de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma siguiente:
R:= EMPLEADOS_ADM ∪ EMPLEADOS_PROD.
Entonces la relación R resultante será la reflejada en la tabla siguiente:
R
| ||||
DNI
|
nombre
|
apellido
|
edificiodesp
|
númerodesp
|
40.444.255
|
Juan
|
García
|
Marina
|
120
|
33.567.711
|
Marta
|
Roca
|
Marina
|
120
|
55.898.425
|
Carlos
|
Buendía
|
Diagonal
|
120
|
R
| ||||
DNI
|
nombre
|
apellido
|
edificiodesp
|
númerodesp
|
77.232.144
|
Elena
|
Pla
|
Marina
|
230
|
21.335.245
|
Jorge
|
Soler
|
NULO
|
NULO
|
88.999.210
|
Pedro
|
González
|
NULO
|
NULO
|
El hecho de que los atributos de la relación resultante coincidan con los atributos de la relación que figura en primer lugar en la unión es una convención; teóricamente, también habría sido posible convenir que coincidiesen con los de la relación que figura en segundo lugar.
Intersección
La intersección es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por las tuplas que pertenecen a las dos relaciones de partida.
La intersección es una operación binaria; la intersección de dos relaciones T y S se indica T ∩ S.
La intersección de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD obtiene una nueva relación que incluye a los empleados que son al mismo tiempo de administración y de producción:
se indicaría como EMPLEADOS_ADM ∩ EMPLEADOS_PROD.
La intersección, como la unión, sólo se puede aplicar a relaciones que tengan tuplas similares. Para poder hacer la intersección de dos relaciones, es preciso, pues, que las relaciones sean compatibles.
A continuación definiremos los atributos y la extensión de la relación resultante de una intersección.
Los atributos del esquema de la relación resultante de T ∩ S coinciden con los atributos del esquema de la relación T.
La extensión de la relación resultante de T ∩ S es el conjunto de tuplas que pertenecen a la extensión de ambas relaciones.
Ejemplo de intersección
Si queremos obtener una relación R que incluya a todos los empleados de la empresa del ejemplo que trabajan tanto en administración como en producción, realizaremos la inter- sección de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma siguiente:
R: = EMPLEADOS_ADM ∩ EMPLEADOS_PR
Entonces, la relación R resultante será:
R
| ||||
DNI
|
nombre
|
apellido
|
edificiodesp
|
númerodesp
|
33.567.711
|
Marta
|
Roca
|
Marina
|
120
|
Observad que se ha tomado la convención de que los atributos de la relación que resulta coincidan con los atributos de la relación que figura en primer lugar.
Diferencia
La diferencia es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que están en la primera relación y, en cambio, no están en la segunda. La diferencia es una operación binaria, y la diferencia entre las relaciones T y S se indica como T – S.
La diferencia EMPLEADOS_ADM menos EMPLEADOS_PROD da como resultado una nueva re- lación que contiene a los empleados de administración que no son empleados de producción, y se indicaría de este modo: EMPLEADOS_ADM – EMPLEADOS_PROD.
La diferencia, como ocurría en la unión y la intersección, sólo tiene sentido si se aplica a relaciones que tengan tuplas similares. Para poder realizar la diferencia de dos relaciones es necesario que las relaciones sean compatibles.
A continuación definimos los atributos y la extensión de la relación resultante de una diferencia.
Los atributos del esquema de la relación resultante de T – S coinciden con los atributos del esquema de la relación T.
La extensión de la relación resultante de T – S es el conjunto de tuplas que pertenecen a la extensión de T, pero no a la de S.
Ejemplo de diferencia
Si queremos obtener una relación R con todos los empleados de la empresa del ejemplo que trabajan en administración, pero no en producción, haremos la diferencia de las relaciones EMPLEADOS_ADM y EMPLEADOS_PROD de la forma siguiente:
R:= EMPLEADOS_ADM – EMPLEADOS_PROD
Entonces la relación R resultante será:
R
| ||||
DNI
|
nombre
|
apellido
|
edificiodesp
|
númerodesp
|
40.444.255
|
Juan
|
García
|
Marina
|
120
|
Se ha tomado la convención de que los atributos de la relación resultante como incidan con los atributos de la relación que figura en primer lugar.
Producto cartesiano
El producto cartesiano es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que resultan de concatenar tuplas de la primera relación con tuplas de la segunda.
El producto cartesiano es una operación binaria. Siendo T y S dos relaciones que cumplen que sus esquemas no tienen ningún nombre de atributo común, el producto cartesiano de T y S se indica como T × S.
Si calculamos el producto cartesiano de EDIFICIOS_EMP y DESPACHOS, obtendremos una nueva relación que contiene todas las concatenaciones posibles de tuplas de EDIFICIOS_EMP con tuplas de DESPACHOS.
Si se quiere calcular el producto cartesiano de dos relaciones que tienen algún nombre de atributo común, sólo hace falta redenominar previamente los atributos adecuados de una de las dos relaciones.
A continuación definimos los atributos y la extensión de la relación resultante de un producto cartesiano.
Los atributos del esquema de la relación resultante de T × S son todos los atributos de T y todos los atributos de S*.
La extensión de la relación resultante de T × S es el conjunto de todas las tuplas de la forma <v1, v2, … vn, w1, w2, ..., wm> para las que se cum- ple que <v1, v2, ..., vn> pertenece a la extensión de T y que <w1, w2, ..., wm> pertenece a la extensión de S.
Ejemplo de producto cartesiano
El producto cartesiano de las relaciones DESPACHOS y EDIFICIOS_EMP del ejemplo se puede hacer como se indica (es necesario redenominar atributos previamente):
EDIFICIOS (nombreedificio, supmediadesp):= EDICIOS_EMP(edificio, supmediadesp).
R:= EDIFICIOS × DESPACHOS.
Entonces, la relación R resultante será:
R
| ||||
nombreedificio
|
supmediadesp
|
edificio
|
número
|
superficie
|
Marina
|
15
|
Marina
|
120
|
10
|
Marina
|
15
|
Marina
|
230
|
20
|
Marina
|
15
|
Diagonal
|
120
|
10
|
Marina
|
15
|
Diagonal
|
440
|
10
|
Diagonal
|
10
|
Marina
|
120
|
10
|
R
| ||||
nombreedificio
|
supmediadesp
|
edificio
|
número
|
superficie
|
Diagonal
|
10
|
Marina
|
230
|
20
|
Diagonal
|
10
|
Diagonal
|
120
|
10
|
Diagonal
|
10
|
Diagonal
|
440
|
10
|
Conviene señalar que el producto cartesiano es una operación que raramente se utiliza de forma explícita, porque el resultado que da no suele ser útil para resolver las consultas habituales.
A pesar de ello, el producto cartesiano se incluye en el álgebra relacional por- que es una operación primitiva; a partir de la cual se define otra operación del álgebra, la combinación, que se utiliza con mucha frecuencia.
OPERACIONES ESPECÍFICAMENTE RELACIONALES
Las operaciones específicamente relacionales son la selección, la proyección y la combinación.
Selección
Podemos ver la selección como una operación que sirve para elegir algunas tuplas de una relación y eliminar el resto. Más concretamente, la selección es una operación que, a partir de una relación, obtiene una nueva relación formada por todas las tuplas de la relación de partida que cumplen una condición de selección especificada.
La selección es una operación unaria. Siendo C una condición de se- lección, la selección de T con la condición C se indica como T(C).
Para obtener una relación que tenga todos los despachos del edificio Marina que tienen más de 12 metros cuadrados, podemos aplicar una selección a la relación DESPACHOS con una condición de selección que sea edificio = Marina y superficie > 12; se indicaría DESPA- CHOS(edificio = Marina y superficie > 12).
En general, la condición de selección C está formada por una o más cláusulas de la forma:
Ai θ v,
O bien:
Ai θ Aj,
Donde Ai y Aj son atributos de la relación T, θ es un operador de comparación* y v es un valor. Además, se cumple que:
• En las cláusulas de la forma Ai θ v, v es un valor del dominio de Ai.
• En las cláusulas de la forma Ai, θ Aj, Ai y Aj tienen el mismo dominio.
Las cláusulas que forman una condición de selección se conectan con los siguientes operadores booleanos: “y” (∧) y “o” (∨).
A continuación definimos los atributos y la extensión de la relación resultante de una selección.
Los atributos del esquema de la relación resultante de T(C) coinciden con los atributos del esquema de la relación T.
La extensión de la relación resultante de T(C) es el conjunto de tuplas que pertenecen a la extensión de T y que satisfacen la condición de selección C. Una tupla t satisface una condición de selección C si, después de sustituir cada atributo que hay en C por su valor en t, la condición C se evalúa en el valor cierto.
Ejemplo de selección
Si queremos obtener una relación R con los despachos de la base de datos del ejemplo que están en el edificio Marina y que tienen una superficie de más de 12 metros cuadrados, ha- remos la siguiente selección:
R:= DESPACHOS (edificio = Marina y superficie > 12).
La relación R resultante será:
R
| ||
edificio
|
número
|
superficie
|
Marina
|
230
|
20
|
Proyección
Podemos considerar la proyección como una operación que sirve para elegir algunos atributos de una relación y eliminar el resto. Más concretamente, la proyección es una operación que, a partir de una relación, obtiene una nueva relación formada por todas las (sub)tuplas de la relación de partida que resultan de eliminar unos atributos especificados.
La proyección es una operación unaria. Siendo {Ai, Aj, ..., Ak} un subconjunto de los atributos del esquema de la relación T, la proyección de T sobre {Ai, Aj, ..., Ak} se indica como T[Ai, Aj, ..., Ak].
Para obtener una relación que tenga sólo los atributos nombre y apellido de los empleados de administración, podemos hacer una proyección en la relación EMPLEADOS_ADM sobre estos dos atributos. Se indicaría de la forma siguiente: EMPLEADOS_ADM [nombre, apellido].
A continuación definiremos los atributos y la extensión de la relación resultante de una proyección.
Los atributos del esquema de la relación resultante de T[Ai, Aj, ...,Ak]
son los atributos {Ai, Aj, ..., Ak}.
La extensión de la relación resultante de T[Ai, Aj, ..., Ak] es el conjunto de todas las tuplas de la forma <t.Ai, t.Aj, ..., t.Ak>, donde se cumple que t es una tupla de la extensión de T y donde t.Ap denota el valor para el atributo Ap de la tupla t.
Ejemplo de proyección
Si queremos obtener una relación R con el nombre y el apellido de todos los empleados de administración de la base de datos del ejemplo, haremos la siguiente proyección:
R:= EMPLEADOS_ADM [nombre, apellido]. Entonces, la relación R resultante será:
R
| |
nombre
|
apellido
|
Juan
|
García
|
Marta
|
Roca
|
Combinación
La combinación es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que resultan de concadenar tuplas de la primera relación con tuplas de la segunda, y que cumplen una condición de combinación especificada.
La combinación es una operación binaria. Siendo T y S dos relaciones cuyos esquemas no tienen ningún nombre de atributo común, y siendo B una condición de combinación, la combinación de T y S según la condición B se indica T[B]S.
Para conseguir una relación que tenga los datos de cada uno de los empleados de administración junto con los datos de los despachos donde trabajan, podemos hacer una combinación de las relaciones EMPLEADOS_ADM y DESPACHOS, donde la condición de combinación indique lo siguiente: edificiodesp = edificio y númerodesp = número. La condi- ción de combinación hace que el resultado sólo combine los datos de un empleado con los datos de un despacho si el edificiodesp y el númerodesp del empleado son iguales que el edificio y el número del despacho, respectivamente. Es decir, la condición hace que los datos de un empleado se combinen con los datos del despacho donde trabaja, pero no con datos de otros despachos.
La combinación del ejemplo anterior se indicaría de la forma siguiente:
EMPLEADOS_ADM [edificiodesp = edificio, númerodesp = número] DESPACHOS.
Si se quiere combinar dos relaciones que tienen algún nombre de atributo común, sólo hace falta redenominar previamente los atributos repetidos de una de las dos.
En general, la condición B de una combinación T[B]S está formada por una o más comparaciones de la forma
Ai θ Aj,
Donde Ai es un atributo de la relación T, Aj es un atributo de la relación S, θ es un operador de comparación ( =, ≠, <, ≤, >, ≥), y se cumple que Ai y Aj tienen el mismo dominio. Las comparaciones de una condición de combinación se separan mediante comas.
A continuación definimos los atributos y la extensión de la relación resultante de una combinación.
Los atributos del esquema de la relación resultante de T[B]S son to- dos los atributos de T y todos los atributos de S*.
La extensión de la relación resultante de T[B]S es el conjunto de tuplas que pertenecen a la extensión del producto cartesiano T × S y que satisfacen todas las comparaciones que forman la condición de combinación B. Una tupla t satisface una comparación si, después de sustituir cada atributo que figura en la comparación por su valor en t, la compa- ración se evalúa al valor cierto.
R:= EDIFICIOS[nombreedificio = edificio, supmediadesp ≤ superficie] DESPACHOS.
Entonces, la relación R resultante será:
R
| ||||
nombreedificio
|
supmediadesp
|
edificio
|
número
|
superficie
|
Marina
|
15
|
Marina
|
230
|
20
|
Diagonal
|
10
|
Diagonal
|
120
|
10
|
Diagonal
|
10
|
Diagonal
|
440
|
10
|
Supongamos ahora que para obtener los datos de cada uno de los empleados de administración, junto con los datos del despacho donde trabajan, utilizamos la siguiente combinación:
R:= EMPLEADOS_ADM [edificiodesp = edificio, númerodesp = número]DESPACHOS.
La relación R resultante será:
R
| |||||||
DNI
|
nombre
|
apellido
|
edificiodesp
|
númerodesp
|
edificio
|
número
|
superficie
|
40.444.255
|
Juan
|
García
|
Marina
|
120
|
Marina
|
120
|
10
|
33.567.711
|
Marta
|
Roca
|
Marina
|
120
|
Marina
|
120
|
10
|
La relación R combina los datos de cada empleado con los datos de su despacho.
En ocasiones, la combinación recibe el nombre de θ-combinación, y cuando todas las comparaciones de la condición de la combinación tienen el operador “=”, se denomina equicombinación.
Según esto, la combinación del último ejemplo es una equicombinación.
Observad que el resultado de una equicombinación siempre incluye una o más parejas de atributos que tienen valores idénticos en todas las tuplas.
En el ejemplo anterior, los valores de edificiodesp coinciden con los de edificio, y los valores de
númerodesp coinciden con los de número.
Puesto que uno de cada par de atributos es superfluo, se ha establecido una variante de combinación denominada combinación natural, con el fin de eliminarlos.
La combinación natural de dos relaciones T y S se denota como T * S y consiste básicamente en una equicombinación seguida de la eliminación de los atributos superfluos; además, se considera por defecto que la condición de combinación iguala todas las parejas de atributos que tienen el mismo nombre en T y en S.
Observad que, a diferencia de la equicombinación, la combinación natural se aplica a relaciones que tienen nombres de atributos comunes.
Ejemplo de combinación natural
Si hacemos:
R:= EDIFICIOS_EMP * DESPACHOS,
Se considera que la condición es edificio = edificio porque edificio es el único nombre de atributo que figura tanto en el esquema de EDIFICIOS_EMP como en el esquema de DESPACHOS. El resultado de esta combinación natural es:
R
| |||
edificio
|
supmediadesp
|
número
|
superficie
|
Marina
|
15
|
120
|
10
|
Marina
|
15
|
230
|
20
|
Diagonal
|
10
|
120
|
10
|
Diagonal
|
10
|
440
|
10
|
Notar que se ha eliminado uno de los atributos de nombre edificio.
En ocasiones, antes de la combinación natural es necesario aplicar la operación redenominar para hacer coincidir los nombres de los atributos que nos interesa igualar.
Ejemplo de combinación natural con redenominación
Por ejemplo, si queremos obtener los datos de cada uno de los empleados de administración junto con los datos del despacho donde trabajan pero sin repetir valores de atributos superfluos, haremos la siguiente combinación natural, que requiere una redenominación previa:
D (edificiodesp, númerodesp, superficie):= DESPACHOS (edificio, número, superficie),
R:= EMPLEADOS_ADM * D.
Entonces, la relación R resultante será:
R
| |||||
DNI
|
nombre
|
apellido
|
edificiodesp
|
númerodesp
|
superficie
|
40.444.255
|
Juan
|
García
|
Marina
|
120
|
10
|
33.567.711
|
Marta
|
Roca
|
Marina
|
120
|
10
|
SECUENCIAS DE OPERACIONES DEL ÁLGEBRA RELACIONAL
En muchos casos, para formular una consulta en álgebra relacional es preciso utilizar varias operaciones, que se aplican en un cierto orden. Para hacerlo, hay dos posibilidades:
1) Utilizar una sola expresión del álgebra que incluya todas las operaciones con los paréntesis necesarios para indicar el orden de aplicación.
2) Descomponer la expresión en varios pasos donde cada paso aplique una sola operación y obtenga una relación intermedia que se pueda utilizar en los pasos subsiguientes.
Ejemplo de utilización de secuencias de operaciones
Para obtener el nombre y el apellido de los empleados, tanto de administración como de producción, es necesario hacer una unión de EMPLEADOS_ADM y EMPLEADOS_PROD, y después hacer una proyección sobre los atributos nombre y apellido. La operación se puede expresar de las formas siguientes:
a) Se puede utilizar una sola expresión:
R:= (EMPLEADOS_ADM ∪ EMPLEADOS_PROD) [nombre, apellido].
b) O bien podemos expresarlo en dos pasos:
• EMPS := EMPLEADOS_ADM ∪ EMPLEADOS_PROD;
• R:= EMPS[nombre, apellido]
En los casos en que una consulta requiere efectuar muchas operaciones, resulta más sencilla la segunda alternativa, porque evita expresiones complejas.
Otros ejemplos de consultas formuladas con secuencias de operaciones
Veamos algunos ejemplos de consultas en la base de datos formuladas con secuencias de operaciones del álgebra relacional.
1) Para obtener el nombre del edificio y el número de los despachos situados en edificios en los que la superficie media de estos despachos es mayor que 12, podemos utilizar la siguiente secuencia de operaciones:
• A:= EDIFICIOS_EMP (supmediadesp > 12);
• B:= DESPACHOS * A;
• R:= B [edificio, número]
2) Supongamos ahora que se desea obtener el nombre y el apellido de todos los empleados (tanto de administración como de producción) que están asignados al despacho 120 del edificio Marina. En este caso, podemos utilizar la siguiente secuencia:
• A:= EMPLEADOS_ADM ∪ EMPLEADOS_PROD;
• B:= A (edificiodesp = Marina y númerodesp = 120);
• R:= B [nombre, apellido].
3) Si queremos consultar el nombre del edificio y el número de los despachos que ningún empleado de administración tiene asignado, podemos utilizar esta secuencia:
• A:= DESPACHOS [edificio, número];
• B:= EMPLEADOS_ADM[edificiodesp, númerodesp];
• R:= A – B.
4) Para obtener el DNI, el nombre y el apellido de todos los empleados de administración que tienen despacho, junto con la superficie de su despacho, podemos hacer lo siguiente:
• A[DNI, nombre, apellido, edificio, número]:= EMPLEADOS_ADM[DNI, nombre, apellido, edificiodesp, númerodesp];
• B:= A * DESPACHOS;
• R:= B[DNI, nombre, apellido, superficie].
Extensiones: combinaciones externas
Para finalizar el tema del álgebra relacional, analizaremos algunas extensiones útiles de la combinación.
Las combinaciones que se han descrito obtienen las tuplas del producto cartesiano de dos relaciones que satisfacen una condición de combinación. Las tuplas de una de las dos relaciones que no tienen en la otra relación una tupla como mínimo con la cual, una vez concatenadas, satisfagan la condición de combinación, no aparecen en el resultado de la combinación, y podríamos decir que sus datos se pierden.
Por ejemplo, si hacemos la siguiente combinación natural (con una redenominación previa):
D (edificiodesp, númerodesp, superficie):= DESPACHOS (edificio, número, superficie),
R:= EMPLEADOS_PROD * D.
Puesto que se trata de una combinación natural, se considera que la condición de combinación es edificio = edificio y número = número, y la relación R resultante será:
R
| |||||
DNIemp
|
nombreemp
|
apellidoemp
|
edificiodesp
|
númerodesp
|
superficie
|
33.567.711
|
Marta
|
Roca
|
Marina
|
120
|
10
|
55.898.425
|
Carlos
|
Buendía
|
Diagonal
|
120
|
10
|
77.232.144
|
Elena
|
Pla
|
Marina
|
230
|
20
|
Notar que en esta relación R no están los empleados de producción que no tienen despacho asignado (con valores nulos en edificiodesp y númerodesp), y tampoco los despachos que no tienen ningún empleado de producción, porque no cumplen la condición de combinación.
Conviene destacar que las tuplas que tienen un valor nulo para alguno de los atributos que figuran en la condición de combinación se pierden siempre, porque en estos casos la condición de combinación siempre se evalúa a falso.
En algunos casos, puede interesar hacer combinaciones de los datos de dos relaciones sin que haya pérdida de datos de las relaciones de partida. Entonces, se utilizan las combinaciones externas.
Las combinaciones externas entre dos relaciones T y S consisten en variantes de combinación que conservan en el resultado todas las tuplas de T, de S o de ambas relaciones. Pueden ser de los tipos siguientes:
1) La combinación externa izquierda entre dos relaciones T y S, que denotamos como T[C]IS, conserva en el resultado todas las tuplas de la relación T.
2) La combinación externa derecha entre dos relaciones T y S, que denotamos como T[C]DS, conserva en el resultado todas las tuplas de la relación S.
3) Finalmente, la combinación externa plena entre dos relaciones T y S, que denotamos como T[C]pS, conserva en el resultado todas las tuplas de T y todas las tuplas de S.
Estas extensiones también se aplican al caso de la combinación natural entre dos relaciones, T * S, concretamente:
a) La combinación natural externa izquierda entre dos relaciones T y S, que se indica como T *I S, conserva en el resultado todas las tuplas de la relación T.
b) La combinación natural externa derecha entre dos relaciones T y S, que se indica como T *D S, conserva en el resultado todas las tuplas de la relación S.
c) Finalmente, la combinación natural externa plena entre dos relaciones T y S, que se indica como T *P S, conserva en el resultado todas las tuplas de T y todas las tuplas de S.
Las tuplas de una relación T que se conservan en el resultado R de una combi- nación externa con otra relación S, a pesar de que no satisfacen la condición de combinación, tienen valores nulos en el resultado R para todos los atributos que provienen de la relación S.
Ejemplos de combinaciones naturales externas
1) Si hacemos la siguiente combinación natural derecha (con una redenominación previa):
D (edificiodesp, númerodesp, superficie) := DESPACHOS (edificio, número, superficie),
R:= EMPLADOS_PROD *D
La relación R resultante será:
R
| |||||
DNIemp
|
nombreemp
|
apellidoemp
|
edificiodesp
|
númerodesp
|
superficie
|
33.567.711
|
Marta
|
Roca
|
Marina
|
120
|
10
|
55.898.425
|
Carlos
|
Buendía
|
Diagonal
|
120
|
10
|
77.232.144
|
Elena
|
Pla
|
Marina
|
230
|
20
|
NULO
|
NULO
|
NULO
|
Diagonal
|
440
|
10
|
Ahora obtenemos todos los despachos en la relación resultante, tanto si tienen un empleado de producción asignado como si no. Notad que los atributos DNI, nombre y apellido para los despachos que no tienen empleado reciben valores nulos.
2) Si hacemos la siguiente combinación natural izquierda (con una redenominación previa):
D (edificiodesp, númerodesp, superficie):= DESPACHOS (edificio, número, superficie),
R:= EMPLEADOS_PROD *I D,
Entonces la relación R resultante será:
R
| |||||
DNIemp
|
nombreemp
|
apellidoemp
|
edificiodesp
|
númerodesp
|
superficie
|
33.567.711
|
Marta
|
Roca
|
Marina
|
120
|
10
|
55.898.425
|
Carlos
|
Buendía
|
Diagonal
|
120
|
10
|
77.232.144
|
Elena
|
Pla
|
Marina
|
230
|
20
|
21.335.245
|
Jorge
|
Soler
|
NULO
|
NULO
|
NULO
|
88.999.210
|
Pedro
|
González
|
NULO
|
NULO
|
NULO
|
Esta combinación externa nos permite obtener en la relación resultante a todos los empleados de producción, tanto si tienen despacho como si no. Observad que el atributo superficie para los empleados que no tienen despacho contiene un valor nulo.
3) Finalmente, si hacemos la siguiente combinación natural plena (con una redenominación previa):
D (edificiodesp, númerodesp, superficie):= DESPACHOS (edificio, número, superficie),
R:= EMPLEADOS_PROD *P D,
Entonces la relación R resultante será:
R
| |||||
DNIemp
|
nombreemp
|
apellidoemp
|
edificiodesp
|
númerodesp
|
superficie
|
33.567.711
|
Marta
|
Roca
|
Marina
|
120
|
10
|
55.898.425
|
Carlos
|
Buendía
|
Diagonal
|
120
|
10
|
77.232.144
|
Elena
|
Pla
|
Marina
|
230
|
20
|
21.335.245
|
Jorge
|
Soler
|
NULO
|
NULO
|
NULO
|
88.999.210
|
Pedro
|
González
|
NULO
|
NULO
|
NULO
|
NULO
|
NULO
|
NULO
|
Diagonal
|
440
|
10
|
En este caso, en la relación resultante obtenemos a todos los empleados de producción y también todos los despachos
RESUMEN
ALGEBRA RELACIONAL
El álgebra relacional es un conjunto de operaciones que describen paso a paso cómo computar una respuesta sobre las relaciones, tal y como éstas son definidas en el modelo relacional. Denominada de tipo procedimental, a diferencia del Cálculo relacional que es de tipo declarativo.
Describe el aspecto de la manipulación de datos. Estas operaciones se usan como una representación intermedia de una consulta a una base de datos y, debido a sus propiedades algebraicas, sirven para obtener una versión más optimizada y eficiente de dicha consulta.
OPERACIONES CONJUNTISTAS
Las operaciones conjuntistas del álgebra relacional son la unión, la intersección, la diferencia y el producto cartesiano.
Unión
La unión es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que están en alguna de las relaciones de partida.
Intersección
La intersección es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por las tuplas que pertenecen a las dos relaciones de partida.
Diferencia
Es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que están en la primera relación y, en cambio, no están en la segunda.
Producto cartesiano
El producto cartesiano es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que resultan de concatenar tuplas de la primera relación con tuplas de la segunda.
OPERACIONES ESPECÍFICAMENTE RELACIONALES
Las operaciones específicamente relacionales son la selección, la proyección y la combinación.
Selección
Podemos ver la selección como una operación que sirve para elegir algunas tuplas de una relación y eliminar el resto. Más concretamente, la selección es una operación que, a partir de una relación, obtiene una nueva relación formada por todas las tuplas de la relación de partida que cumplen una condición de selección especificada.
Proyección
Podemos considerar la proyección como una operación que sirve para elegir algunos atributos de una relación y eliminar el resto. Más concretamente, la proyección es una operación que, a partir de una relación, obtiene una nueva relación formada por todas las (sub)tuplas de la relación de partida que resultan de eliminar unos atributos especificados.
Combinación
La combinación es una operación que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que resultan de concadenar tuplas de la primera relación con tuplas de la segunda, y que cumplen una condición de combinación especificada.
SECUENCIAS DE OPERACIONES DEL ÁLGEBRA RELACIONAL
En muchos casos, para formular una consulta en álgebra relacional es preciso utilizar varias operaciones, que se aplican en un cierto orden. Para hacerlo, hay dos posibilidades:
1) Utilizar una sola expresión del álgebra que incluya todas las operaciones con los paréntesis necesarios para indicar el orden de aplicación.
2) Descomponer la expresión en varios pasos donde cada paso aplique una sola operación y obtenga una relación intermedia que se pueda utilizar en los pasos subsiguientes.
Extensiones: combinaciones externas
Para finalizar el tema del álgebra relacional, analizaremos algunas extensiones útiles de la combinación.
Las combinaciones que se han descrito obtienen las tuplas del producto cartesiano de dos relaciones que satisfacen una condición de combinación. Las tuplas de una de las dos relaciones que no tienen en la otra relación una tupla como mínimo con la cual, una vez concatenadas, satisfagan la condición de combinación, no aparecen en el resultado de la combinación, y podríamos decir que sus datos se pierden.
SUMMARY
RELATIONAL ALGEBRA
The relational algebra is a set of operations that describe step by step how to compute an answer about relationships, as they are defined in the relational model. Denominated of procedural type, unlike Relational Calculus which is declaratory.
Describes the appearance of data manipulation. These operations are used as an intermediate representation of a query to a database and, because of its algebraic properties serve for a more streamlined and efficient version of such consultation.
set operations
The set operations of relational algebra are union, intersection, difference and Cartesian product.
Union
The union is an operation, from two relations, obtained a new relationship formed by all tuples that are in any of the relationships of departure.
Intersection
The intersection is an operation, from two relations, obtained a new relationship formed by the tuples belonging to the two starting relationships.
Difference
It is an operation, from two relations, obtained a new relationship formed by all tuples that are in the first list and, instead, are not in the second.
Cartesian product
The Cartesian product is an operation, from two relations, obtained a new relationship formed by all tuples that result from concatenating tuples of the first relation with tuples of the second.
SPECIFICALLY relational operations
The specifically relational operations are selection, projection and combination.
Selection
We can see the selection as an operation that serves to choose some tuples of a relationship and eliminate the rest. More specifically, the selection is an operation that, from a relationship, get a new relationship formed by all tuples of the relationship starting to meet a condition specified selection.
Projection
We can consider the projection as an operation that is used to select some attributes of a relationship and eliminate the rest. More specifically, the projection is an operation that, from a relationship obtains a new relationship formed by all (sub) tuples of the relation that are starting to remove a specified attribute.
Combination
The combination is an operation, from two relations, obtained a new relationship formed by all tuples that result from concatenating tuples of the first relation with tuples of the second, and that meet a condition specified combination.
STRINGS relational algebra operations
In many cases, to formulate a query in relational algebra is necessary to use several operations, which are applied in a certain order. To do this, there are two possibilities:
1) Use a single expression of algebra that includes all necessary operations with parentheses to indicate the order of application.
2) Decompose the expression of several steps where each step apply a single operation for an intermediate relationship that can be used in subsequent steps.
Extensions: Outer Joins
To end the issue of relational algebra, we discuss some useful extensions of the combination.
Combinations obtained as described tuples of the Cartesian product of two relationships that satisfy a condition of combination. Tuples of one of the two relationships that do not have in the other relationship tuple least with which, once concatenated, satisfy the join condition do not appear in the result of the combination, and we could say that their data is lost .
RECOMENDACIONES
Para poder realizar una buena computación de relación, se debe tener un buen conocimiento del tema ya que así nos conllevara a poder realizar operaciones se usan como una representación intermedia de una consulta a una base de datos.
CONCLUSIONES
El álgebra relacional es un tema muy interesante y muy amplio ya que nos da a conocer los aspectos más concisos y nos conlleva a poder realizar una buena relación en una base datos.
GLOSARIO
Combinación: Operación del álgebra relacional que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que resultan de concatenar tuplas de la primera relación con tuplas de la segunda relación, y que cumplen una condición de combinación especificada.
Combinación externa: Extensión de combinación entre dos relaciones, T y S, que conserva en el resultado todas las tuplas de T, de S o de las dos relaciones.
Combinación natural: Variante de combinación que consiste básicamente en una equicombinación seguida de la eliminación de los atributos superfluos.
Consulta: Obtención de datos deducibles a partir de las relaciones que contiene la base de datos.
Diferencia: Operación del álgebra relacional que, a partir de dos relaciones, obtiene una nueva relación formada por todas las tuplas que están en la primera relación y, en cambio, no están en la segunda.
Proyección: operación del álgebra relacional que, a partir de una relación, obtiene una nueva relación formada por todas las (sub)tuplas de la relación de partida que resultan de eliminar unos atributos especificados.
LINKOGRAFÁ
Muchas gracias por su aporte de investigación. Por favor sea mas detallado en las RECOMENDACIONES y CONCLUSIONES son 3. Saludos
ResponderEliminar