Está en la página 1de 5

Connexions module: m18351

Introduccin al lgebra relacional. Con ejemplos en SQL


Miguel-Angel Sicilia
This work is produced by The Connexions Project and licensed under the Creative Commons Attribution License

Abstract
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.

1 Introduccin al lgebra relacional. Con ejemplos en SQL.


El lgebra relacional permite entender el modelo relacional de bases de datos desde la perspectiva matemtica. 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 teora con la prctica.

1.1 Breve recordatorio del modelo (formal) relacional


El modelo relacional de bases de datos se basa en un modelo formal especicado de acuerdo a la teora de conjuntos. Una base de datos en este modelo es simplemente un que se basan en una cierta representacin matemtica.

conjunto de relaciones.

Estas relaciones

las vemos informalmente como tablas en los gestores de bases de datos relacionales, pero no hay que olvidar Una relacin de nombre

, An).A m),

R se dene sobre el un conjunto de atributos Ai y se denota como R(A1, A2, ... R(A1, A2, ... , An) es un conjunto de tuplasti (i = 1, 2, ...,
que pertenece

la denicin del conjunto de atributos se le denomina

esquema de la relacin.

En contraste, la

extensin de la relacin de esquema

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

donde cada tupla es un conjunto de pares:

un valor especial que denominaremos

nulo.

dominio(Aj),

o bien

Para seguir la discusin terica 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 continuacin.
Version
1.1: Nov 19, 2008 12:20 pm US/Central

http://creativecommons.org/licenses/by/2.0/

http://cnx.org/content/m18351/1.1/

Connexions module: m18351

Figure 1

Siguiendo la notacin anterior, por ejemplo, tenemos una relacin DEPARTAMENTOS(nombre, grado-experimentalidad, telefono). Una posible tupla sera la siguiente: t1 = {<nombre: Matemticas>, <grado-experimentalidad:1.5>, <fax:918845689>}

1.2 Qu es el lgebra relacional?


Es un conjunto de operaciones matemticas denidas sobre el modelo de conjuntos que se acaba de resumir, que permite especicar formalmente consultas a bases de datos relacionales.

1.3 Por qu estudiar el lgebra relacional?


Para comprender con ms precisin lo que hacen los lenguajes de consulta como SQL.

1.4 El lgebra relacional es un conjunto de operaciones


El lgebra relacional se dene como un conjunto de operaciones. las operaciones del lgebra relacional es que importantes: 1. El resultado de una operacin puede utilizarse como operando en otra. 2. El resultado de una operacin es una relacin con todas las caractersticas del modelo relacional: no puede haber tuplas repetidas, las tuplas no estn 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 operacin de redenominacin (:=). Es simplemente lo siguiente:

tanto los operandos como el resultado son relaciones. Esta propiedad se denomina cierre (o clausura) relacional. Esto tiene dos consecuencias evidentes pero

Una caracterstica importante de todas

R:=expr

Con esto expresamos que el resultado de la expresin de lgebra relacional toda regla) pasaremos a llamarla notacin:

expr (que es una relacin en R. Tambin es til redenominar los atributos de una relacin, con la misma
el mismo dominio que

R(A 1 , A 2 , ...

Lgicamente, cada atributo de conjuntos.

, A n ):= S(B 1 , B 2 , ... , B n ) Bi tendr que estar denido sobre

Ai.

Para ver las

operaciones las dividiremos en dos grupos, las especcamente relacionales y las que son tpicas de la teora

http://cnx.org/content/m18351/1.1/

Connexions module: m18351

En el lenguaje SQL se pueden redenominar atributos mediante la clusula AS. Por ejemplo:

SELECT "grado-experimentalidad", nombre as denominacion FROM DEPARTAMENTOS

1.5 Operaciones especcamente relacionales 1.5.1 La proyeccin permite elegir algunos atributos La operacin de proyeccin permite seleccionar algunos atributos de una relacin (sea sta una relacin
o el resultado de otras operaciones). Formalmente, dada una relacin jutno de atributos de esa relacin

R(Ai, Aj, ..., Ak),


(Ai, Aj, ..., Ak),

R(A1, A2, ...

, An), y un subcon-

la proyeccin sobre esos atributos se denota como

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 operacin de lgebra relacional es una relacin, las tuplas repetidas en el resultado de la proyeccin se eliminarn. El orden de los atributos en la proyeccin no tiene que ser el mismo que en la relacin original.

La operacin de proyeccin en el lenguaje de consulta SQL se realiza simplemente especicando el subconjunto de atributos en la clusula SELECT.

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

Por ejemplo, si tuvisemos la siguiente extensin de la tabla PROFESORES:

dni 32323 4434343 23423432

apellidos Prez Dez Snchez

nombre Juan Jos Juan

fecha-nacimiento 30/10/1965 30/10/1970 30/10/1980

es-doctor true true false

telfono-mvil 65454545 65789767 66789899

D_nombre Matemticas Historia Matemticas

Table 1
La siguiente sentencia

SELECT hace una proyeccin SELECT nombre, apellidos FROM PROFESORES SELECT nombre FROM profesores

del

nombre

y los

apellidos.

Es importante notar que la siguiente sentencia no devolvera una relacin, ya que tendra dos tuplas repetidas.

DISTINCT. SELECT DISTINCT nombre FROM profesores

Para asegurar que el resultado es una relacin en el sentido matemtico, hay que utilizar el modicador

1.5.2 La seleccin permite elegir algunas tuplas


La seleccin es una operacin que elige algunas tuplas de una relacin y elimina el resto. La nueva relacin contiene por tanto solo tuplas seleccionadas que cumplen una determinada

condicin de seleccin C La

condicin de seleccin es una condicin lgica que permita decidir qu incluir y qu no. Los atributos de la seleccin son los mismos que los de la relacin original, y todas las tuplas de la seleccin cumplen la condicin C. Por ejemplo:

R := DEPARTAMENTOS(grado-experimentalidad >1.0) Q := PROFESORES(no es-doctor y telfono-mvil <> null)

SELECT * FROM DEPARTAMENTOS WHERE grado-experimentalidad > 1.0 SELECT * FROM PROFESORES WHERE not es doctor and telfono-mvil IS NOT NULL.
http://cnx.org/content/m18351/1.1/

En SQL, la seleccin se especica mediante la clusula WHERE. Por ejemplo:

Connexions module: m18351

1.5.3 La combinacin o reunin (join) permite cruzar los valores de tablas relacionadas
La combinacin toma dos relaciones y devuelve una relacin con las tuplas que resultan de concatenar tuplas de la primera con tuplas de la segunda y despus seleccionar las que cumplen una

condicin de combinacinC. Una combinacin entre las relaciones R y Q mediante la condicin C se denota como R[C]Q.
Por ejemplo, si queremos obtener la informacin de profesores y departamentos combinada, utilizaremos como combinacin 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 combinacin se hace incluyendo ms de una relacin en la clusula

coloca como clusula

SELECT * FROM PROFESORES AS P, DEPARTAMENTOS AS D WHERE P.D_nombre = D.nombre

WHERE.

FROM,

y la condicin

se

1.5.3.1 La equicombinacin
La equicombinacin (equireunin o equijoin) es una combinacin que en la condicin C solo tiene igualdades. Es especialmente importante porque permite obtener informacin relacionada por las claves ajenas de las tablas.

1.5.3.2 Combinacin natural


Cuando se hace una equicombinacin, la relacin resultante tiene los atributos de las dos relaciones originales. Dado que se est exigiendo igualdad de valores en al menos un atributo, la relacin resultante tendr atributos con informacin repetida (tantos como atributos hayan sido comparados en la condicin C). La combinacin natural es una variante de la equicombinacin donde se eliminan esos atributos superuos. En SQL, la combinacin natural puede hacerse combinndola con una proyeccin de los atributos de las dos relaciones que excluya alguno de los

1.6 Operaciones de teora de conjuntos 1.6.1 La unin de relaciones es la unin de conjuntos


La unin de dos relaciones devuelve una nueva relacin que contiene todas las tuplas que aparecan en cualquiera de las relaciones originales, o en ambas. As, la operacin de unin de dos relaciones R y T, que denominaremos UNION(R, T) slo se puede aplicar el operador unin a dos relaciones que tengan los mismos atributos, o que sean compatibles (es decir, que se pueda establecer una biyeccin entre los atributos de las dos relaciones). Es importante tener en cuenta lo siguiente:

Se eliminarn las tuplas repetidas. Se entiende que en las dos relaciones no debe haber tuplas con la misma clave primaria y el resto de la informacin diferente.

Si tenemos dividida la informacin de los profesores antiguos y los nuevos en dos relaciones (por ejemplo, por motivos de rendimiento), pero queremos obtener un listado histrico 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 segn el orden de aparicin. Si en una de las tablas este orden fuese diferente, habra que utilizar

http://cnx.org/content/m18351/1.1/

Connexions module: m18351

una proyeccin que alterase el orden. Los nombres de atributos de la nueva relacin sern los de la primera

SELECT.

1.6.2 La interseccin de relaciones es la interseccin de conjuntos


La interseccin de relaciones toma dos relaciones y devuelve una relacin con las tuplas que aparecan en ambas relaciones originales. Como la unin, la interseccin solo puede aplicarse a relaciones con atributos compatibles. La siguiente consulta en SQL por tanto debera devolver una relacin vaca:

SELECT * FROM PROFESORES INTERSECT SELECT * FROM EX-PROFESORES

1.6.3 El producto cartesiano combina todas las tuplas de dos relaciones


El producto cartesiano es una operacin que toma dos relaciones y obtiene una nueva relacin cuyas tuplas son la concatenacin de las tuplas de la primera relacin con las tuplas de la segunda. En general, si la primera relacin de entrada tena N tuplas y la segunda M tuplas, el producto cartesiano produce NM tuplas, aunque en ocasiones sern menos dado que las tuplas repetidas habrn de eliminarse. la clusula El producto cartesiano de dos relaciones en SQL se obtiene simplemente colocando ms de una tabla en

FROM. SELECT * FROM PROFESORES, DEPARTAMENTOS

El producto cartesiano raramente se utiliza en la prctica, pero es interesante conocerlo para diferenciarlo de la operacin de combinacin (join).

http://cnx.org/content/m18351/1.1/

También podría gustarte