Skip to content Skip to navigation

Connexions

You are here: Home » Content » Introducción al álgebra relacional. Con ejemplos en SQL

Navigation

Recently Viewed

This feature requires Javascript to be enabled.
 

Introducción al álgebra relacional. Con ejemplos en SQL

Module by: Miguel-Angel Sicilia. E-mail the author

Summary: Se introduce el álgebra relacional como modelo formal de las bases de datos relacionales. Se proporcionan ejemplos en SQL equivalentes a operaciones del álgebra relacional para conectar ambos lenguajes.

Introducción al álgebra relacional. Con ejemplos en SQL.

El álgebra relacional permite entender el modelo relacional de bases de datos desde la perspectiva matemática. Aquí se introducen los fundamentos del álgebra relacional y se les relaciona con la estructura del lenguaje de consulta de bases de datos relacionales SQL, para conectar la teoría con la práctica.

Breve recordatorio del modelo (formal) relacional

El modelo relacional de bases de datos se basa en un modelo formal especificado de acuerdo a la teoría de conjuntos. Una base de datos en este modelo es simplemente un conjunto de relaciones. Estas relaciones las vemos informalmente como “tablas” en los gestores de bases de datos relacionales, pero no hay que olvidar que se basan en una cierta representación matemática.

Una relación de nombre R se define sobre el un conjunto de atributos Ai y se denota como R(A1, A2, ... , An).A la definición del conjunto de atributos se le denomina esquema de la relación. En contraste, la extensión de la relación de esquema R(A1, A2, ... , An) es un conjunto de tuplasti (i = 1, 2, ..., m), donde cada tupla es un conjunto de pares:

t i = {<A1:v[i,1]>, <A2:v[i,2]> ... <An:v[i, n])>}

y, para cada par <Aj:v[i,j]>, se cumple que v[i,j] es un valor que pertenece dominio(Aj), o bien un valor especial que denominaremos nulo.

Para seguir la discusión teórica utilizaremos un ejemplo de una base de datos para modelar la actividad docente de los profesores de un departamento. Comenzaremos por un esquema muy sencillo, con dos relaciones que se muestran a continuación.

Figura 1
Figura 1 (graphics1.png)
Siguiendo la notación anterior, por ejemplo, tenemos una relación DEPARTAMENTOS(nombre, grado-experimentalidad, telefono). Una posible tupla sería la siguiente:

t1 = {<nombre: Matemáticas>, <grado-experimentalidad:1.5>, <fax:918845689>}

¿Qué es el álgebra relacional?

Es un conjunto de operaciones matemáticas definidas sobre el modelo de conjuntos que se acaba de resumir, que permite especificar formalmente consultas a bases de datos relacionales.

¿Por qué estudiar el álgebra relacional?

Para comprender con más precisión lo que hacen los lenguajes de consulta como SQL.

El álgebra relacional es un conjunto de operaciones

El álgebra relacional se define como un conjunto de operaciones. Una característica importante de todas las operaciones del álgebra relacional es que tanto los operandos como el resultado son relaciones. Esta propiedad se denomina cierre (o clausura) relacional. Esto tiene dos consecuencias evidentes pero importantes:

  1. El resultado de una operación puede utilizarse como operando en otra.
  2. El resultado de una operación es una relación con todas las características del modelo relacional: no puede haber tuplas repetidas, las tuplas no están ordenadas, etc.

Dado que en muchas ocasiones trabajaremos con los resultados de operaciones como operandos de otras, es conveniente poder dar nombres a los resultados de ciertas operaciones. Esta es la operación de redenominación (:=). Es simplemente lo siguiente:

R:=expr

Con esto expresamos que el resultado de la expresión de álgebra relacional expr (que es una relación en toda regla) pasaremos a llamarla R. También es útil redenominar los atributos de una relación, con la misma notación:

R(A 1 , A 2 , ... , A n ):= S(B 1 , B 2 , ... , B n )

Lógicamente, cada atributo Bi tendrá que estar definido sobre el mismo dominio que Ai. Para ver las operaciones las dividiremos en dos grupos, las específicamente relacionales y las que son típicas de la teoría de conjuntos.

En el lenguaje SQL se pueden redenominar atributos mediante la cláusula AS. Por ejemplo:

SELECT "grado-experimentalidad", nombre as denominacion

FROM DEPARTAMENTOS

Operaciones específicamente relacionales

La proyección permite elegir algunos atributos

La operación de proyección permite seleccionar algunos atributos de una relación (sea ésta una relación o el resultado de otras operaciones). Formalmente, dada una relación R(A1, A2, ... , An), y un subconjutno de atributos de esa relación (Ai, Aj, ..., Ak), la proyección sobre esos atributos se denota como R(Ai, Aj, ..., Ak), y contiene las partes de las tuplas con los valores de los atributos proyectados.

Es importante notar lo siguiente en las proyecciones:

  • Como el resultado de cualquier operación de álgebra relacional es una relación, las tuplas repetidas en el resultado de la proyección se eliminarán.
  • El orden de los atributos en la proyección no tiene que ser el mismo que en la relación original.

La operación de proyección en el lenguaje de consulta SQL se realiza simplemente especificando el subconjunto de atributos en la cláusula SELECT.

SELECT Ai, Aj, ..., Ak FROM R

Por ejemplo, si tuviésemos la siguiente extensión de la tabla PROFESORES:

Tabla 1
dni apellidos nombre fecha-nacimiento es-doctor teléfono-móvil D_nombre
32323 Pérez Juan 30/10/1965 true 65454545 Matemáticas
4434343 Díez José 30/10/1970 true 65789767 Historia
23423432 Sánchez Juan 30/10/1980 false 66789899 Matemáticas

La siguiente sentencia SELECT hace una proyección del nombre y los apellidos.

SELECT nombre, apellidos FROM PROFESORES

Es importante notar que la siguiente sentencia no devolvería una relación, ya que tendría dos tuplas repetidas.

SELECT nombre FROM profesores

Para asegurar que el resultado es una relación en el sentido matemático, hay que utilizar el modificador DISTINCT.

SELECT DISTINCT nombre FROM profesores

La selección permite elegir algunas tuplas

La selección es una operación que elige algunas tuplas de una relación y elimina el resto. La nueva relación contiene por tanto solo tuplas seleccionadas que cumplen una determinada condición de selección C La condición de selección es una condición lógica que permita decidir qué incluir y qué no.

Los atributos de la selección son los mismos que los de la relación original, y todas las tuplas de la selección cumplen la condición C. Por ejemplo:

R := DEPARTAMENTOS(grado-experimentalidad >1.0)

Q := PROFESORES(no es-doctor y teléfono-móvil <> null)

En SQL, la selección se especifica mediante la cláusula WHERE. Por ejemplo:

SELECT * FROM DEPARTAMENTOS

WHERE grado-experimentalidad > 1.0

SELECT * FROM PROFESORES

WHERE not es doctor and teléfono-móvil IS NOT NULL.

La combinación o reunión (join) permite cruzar los valores de tablas relacionadas

La combinación toma dos relaciones y devuelve una relación con las tuplas que resultan de concatenar tuplas de la primera con tuplas de la segunda y después seleccionar las que cumplen una condición de combinaciónC. Una combinación entre las relaciones R y Q mediante la condición C se denota como R[C]Q.

Por ejemplo, si queremos obtener la información de profesores y departamentos combinada, utilizaremos como combinación la igualdad de la clave ajena en PROFESORES con la clave primaria en DEPARTAMENTOS:

DPT:=DEPARTAMENTOS

PROFESORES[D_nombre = DPT.nombre]DPT

En SQL, la combinación se hace incluyendo más de una relación en la cláusula FROM, y la condición C se coloca como cláusula WHERE.

SELECT *

FROM PROFESORES AS P, DEPARTAMENTOS AS D

WHERE P.D_nombre = D.nombre

La equicombinación

La equicombinación (equireunión o equijoin) es una combinación que en la condición C solo tiene igualdades. Es especialmente importante porque permite obtener información relacionada por las claves ajenas de las tablas.

Combinación natural

Cuando se hace una equicombinación, la relación resultante tiene los atributos de las dos relaciones originales. Dado que se está exigiendo igualdad de valores en al menos un atributo, la relación resultante tendrá atributos con información repetida (tantos como atributos hayan sido comparados en la condición C). La combinación natural es una variante de la equicombinación donde se eliminan esos atributos superfluos.

En SQL, la combinación natural puede hacerse combinándola con una proyección de los atributos de las dos relaciones que excluya alguno de los

Operaciones de teoría de conjuntos

La unión de relaciones es la unión de conjuntos

La unión de dos relaciones devuelve una nueva relación que contiene todas las tuplas que aparecían en cualquiera de las relaciones originales, o en ambas.

Así, la operación de unión de dos relaciones R y T, que denominaremos UNION(R, T) sólo se puede aplicar el operador unión a dos relaciones que tengan los mismos atributos, o que sean compatibles (es decir, que se pueda establecer una biyección entre los atributos de las dos relaciones).

Es importante tener en cuenta lo siguiente:

  • Se eliminarán las tuplas repetidas. Se entiende que en las dos relaciones no debe haber tuplas con la misma clave primaria y el resto de la información diferente.

Si tenemos dividida la información de los profesores antiguos y los nuevos en dos relaciones (por ejemplo, por motivos de rendimiento), pero queremos obtener un listado histórico de todos ellos, podemos utilizar el operador UNION de SQL.

SELECT * FROM PROFESORES

UNION

SELECT * FROM EX-PROFESORES

El operador UNION requiere que los atributos de las relaciones devueltas por las dos SELECT sean del mismo tipo según el orden de aparición. Si en una de las tablas este orden fuese diferente, habría que utilizar una proyección que alterase el orden. Los nombres de atributos de la nueva relación serán los de la primera SELECT.

La intersección de relaciones es la intersección de conjuntos

La intersección de relaciones toma dos relaciones y devuelve una relación con las tuplas que aparecían en ambas relaciones originales. Como la unión, la intersección solo puede aplicarse a relaciones con atributos compatibles.

La siguiente consulta en SQL por tanto debería devolver una relación vacía:

SELECT * FROM PROFESORES

INTERSECT

SELECT * FROM EX-PROFESORES

El producto cartesiano combina todas las tuplas de dos relaciones

El producto cartesiano es una operación que toma dos relaciones y obtiene una nueva relación cuyas tuplas son la concatenación de las tuplas de la primera relación con las tuplas de la segunda. En general, si la primera relación de entrada tenía N tuplas y la segunda M tuplas, el producto cartesiano produce N×M tuplas, aunque en ocasiones serán menos dado que las tuplas repetidas habrán de eliminarse.

El producto cartesiano de dos relaciones en SQL se obtiene simplemente colocando más de una tabla en la cláusula FROM.

SELECT * FROM PROFESORES, DEPARTAMENTOS

El producto cartesiano raramente se utiliza en la práctica, pero es interesante conocerlo para diferenciarlo de la operación de combinación (join).

Content actions

Download module as:

PDF | EPUB (?)

What is an EPUB file?

EPUB is an electronic book format that can be read on a variety of mobile devices.

Downloading to a reading device

For detailed instructions on how to download this content's EPUB to your specific device, click the "(?)" link.

| More downloads ...

Add module to:

My Favorites (?)

'My Favorites' is a special kind of lens which you can use to bookmark modules and collections. 'My Favorites' can only be seen by you, and collections saved in 'My Favorites' can remember the last module you were on. You need an account to use 'My Favorites'.

| A lens I own (?)

Definition of a lens

Lenses

A lens is a custom view of the content in the repository. You can think of it as a fancy kind of list that will let you see content through the eyes of organizations and people you trust.

What is in a lens?

Lens makers point to materials (modules and collections), creating a guide that includes their own comments and descriptive tags about the content.

Who can create a lens?

Any individual member, a community, or a respected organization.

What are tags? tag icon

Tags are descriptors added by lens makers to help label content, attaching a vocabulary that is meaningful in the context of the lens.

| External bookmarks