Consultad el apartado 3 de esta unidad didáctica. |
Como ya hemos comentado en el apartado dedicado a las operaciones del modelo relacional, el álgebra relacional se inspira en la teoría de conjuntos para especificar consultas en una base de datos relacional.
Para especificar una consulta en álgebra relacional, sean conjuntistas o específicamente relacionales se estudian en los subapartados 5.1 y 5.2 de esta unidad. preciso definir uno o más pasos que sirven para ir construyendo, mediante operaciones de álgebra relacional, una nueva relación que contenga los datos que responden a la consulta a partir de las relaciones almacenadas. Los lenguajes basados en el álgebra relacional son procedimentales, dado que los pasos que forman la consulta describen un procedimiento.
La visión que presentaremos es la de un lenguaje teórico y, por lo tanto, incluiremos sólo sus operaciones fundamentales, y no las construcciones que se podrían añadir a un lenguaje comercial para facilitar cuestiones como por ejemplo el orden de presentación del resultado, el cálculo de datos agregados, etc.
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.
Implicaciones del 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 operando. 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.
Las operaciones del álgebra relacional clasificadas según sean conjuntistas o específicamente relacionales se estudian en los subapartados 5.1 y 5.2 de esta unidad. |
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 extensiones en un momento determinado:
• Esquema y extensión de EDIFICIOS_EMP:
EDIFICIOS_EMP | |
---|---|
edificio |
supmediadesp |
Marina | 15 |
Diagonañ | 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 | nombre | apellido | 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.