Connexions module: m18351

1

Introducción 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 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.

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 teoría de conjuntos. Una base de datos en este modelo es simplemente un que se basan en una cierta representación matemática.

conjunto de relaciones.

Estas relaciones

las vemos informalmente como tablas en los gestores de bases de datos relacionales, pero no hay que olvidar Una relación 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 denición del conjunto de atributos se le denomina

esquema de la relación.

En contraste, la

extensión de la relación 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 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.
∗ 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/

A n ):= S(B 1 . Dado que en muchas ocasiones trabajaremos con los resultados de operaciones como operandos de otras. . También es útil redenominar los atributos de una relación. El resultado de una operación es una relación con todas las características del modelo relacional: no puede haber tuplas repetidas. . las operaciones del álgebra relacional es que importantes: 1.3 ¾Por qué estudiar el álgebra relacional? Para comprender con más precisión lo que hacen los lenguajes de consulta como SQL.. B n ) Bi tendrá que estar denido sobre Ai.. por ejemplo. tenemos una relación DEPARTAMENTOS(nombre.2 ¾Qué es el álgebra relacional? Es un conjunto de operaciones matemáticas denidas sobre el modelo de conjuntos que se acaba de resumir.Connexions module: m18351 2 Figure 1 Siguiendo la notación anterior. <grado-experimentalidad:1. B 2 . las especícamente relacionales y las que son típicas de la teoría http://cnx. telefono).org/content/m18351/1. . Es simplemente lo siguiente: tanto los operandos como el resultado son relaciones. grado-experimentalidad. <fax:918845689>} 1. A 2 . Para ver las operaciones las dividiremos en dos grupos.. es conveniente poder dar nombres a los resultados de ciertas operaciones.. que permite especicar formalmente consultas a bases de datos relacionales. . 1. con la misma el mismo dominio que R(A 1 . etc. Lógicamente. Esta propiedad se denomina cierre (o clausura) relacional.4 El álgebra relacional es un conjunto de operaciones El álgebra relacional se dene como un conjunto de operaciones. Esta es la operación de redenominación (:=). las tuplas no están ordenadas.5>. El resultado de una operación puede utilizarse como operando en otra. cada atributo de conjuntos. Una posible tupla sería la siguiente: t1 = {<nombre: Matemáticas>.1/ . 2. Esto tiene dos consecuencias evidentes pero Una característica importante de todas R:=expr Con esto expresamos que el resultado de la expresión de álgebra relacional toda regla) pasaremos a llamarla notación: expr (que es una relación en R. 1.

Por ejemplo: R := DEPARTAMENTOS(grado-experimentalidad >1. • • (Ai.org/content/m18351/1. An). y un subcon- la proyección sobre esos atributos se denota como y contiene las partes de las tuplas con los valores de los atributos proyectados. Ak FROM R Por ejemplo. . la selección se especica mediante la cláusula WHERE. SELECT DISTINCT nombre FROM profesores Para asegurar que el resultado es una relación en el sentido matemático. Los atributos de la selección son los mismos que los de la relación original. Aj.... ya que tendría dos tuplas repetidas. apellidos FROM PROFESORES SELECT nombre FROM profesores del nombre y los apellidos.5 Operaciones especícamente relacionales 1. La operación de proyección en el lenguaje de consulta SQL se realiza simplemente especicando el subconjunto de atributos en la cláusula SELECT.. Aj. .5.0) Q := PROFESORES(no es-doctor y teléfono-móvil <> null) SELECT * FROM DEPARTAMENTOS WHERE grado-experimentalidad > 1. si tuviésemos la siguiente extensión de la tabla PROFESORES: dni 32323 4434343 23423432 apellidos Pérez Díez Sánchez nombre Juan José Juan fecha-nacimiento 30/10/1965 30/10/1970 30/10/1980 es-doctor true true false teléfono-móvil 65454545 65789767 66789899 D_nombre Matemáticas Historia Matemáticas Table 1 La siguiente sentencia SELECT hace una proyección SELECT nombre.. R(A1..Connexions module: m18351 3 En el lenguaje SQL se pueden redenominar atributos mediante la cláusula AS. . . Ak).2 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. DISTINCT.1 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)...5. El orden de los atributos en la proyección no tiene que ser el mismo que en la relación original. 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. A2.1/ En SQL. Aj. dada una relación jutno de atributos de esa relación R(Ai. Es importante notar que la siguiente sentencia no devolvería una relación.0 SELECT * FROM PROFESORES WHERE not es doctor and teléfono-móvil IS NOT NULL. Formalmente... SELECT Ai. nombre as denominacion FROM DEPARTAMENTOS 1. Por ejemplo: SELECT "grado-experimentalidad". hay que utilizar el modicador 1. http://cnx. Por ejemplo: . .. las tuplas repetidas en el resultado de la proyección se eliminarán. Es importante notar lo siguiente en las proyecciones: Como el resultado de cualquier operación de álgebra relacional es una relación. Ak). y todas las tuplas de la selección cumplen la condición C.

6. que se pueda establecer una biyección entre los atributos de las dos relaciones).3. utilizaremos como combinación la igualdad de la clave ajena en PROFESORES con la clave primaria en DEPARTAMENTOS: DPT:=DEPARTAMENTOS PROFESORES[D_nombre = DPT. por motivos de rendimiento).2 Combinación natural Cuando se hace una equicombinación. Se entiende que en las dos relaciones no debe haber tuplas con la misma clave primaria y el resto de la información diferente. En SQL.1 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. la relación resultante tiene los atributos de las dos relaciones originales. la combinación natural puede hacerse combinándola con una proyección de los atributos de las dos relaciones que excluya alguno de los 1. que denominaremos UNION(R. o en ambas.5. DEPARTAMENTOS AS D WHERE P.5. la operación de unión de dos relaciones R y T. la combinación se hace incluyendo más de una relación en la cláusula coloca como cláusula SELECT * FROM PROFESORES AS P. 1. Por ejemplo. si queremos obtener la información de profesores y departamentos combinada.Connexions module: m18351 4 1.D_nombre = D.1/ . Si en una de las tablas este orden fuese diferente. T) sólo se puede aplicar el operador unión a dos relaciones que tengan los mismos atributos.3.6 Operaciones de teoría de conjuntos 1. pero queremos obtener un listado histórico de todos ellos.5. FROM. o que sean compatibles (es decir.org/content/m18351/1. podemos utilizar el operador UNION de SQL. Una combinación entre las relaciones R y Q mediante la condición C se denota como R[C]Q. Es especialmente importante porque permite obtener información relacionada por las claves ajenas de las tablas. habría que utilizar http://cnx.nombre WHERE. Así. Si tenemos dividida la información de los profesores antiguos y los nuevos en dos relaciones (por ejemplo.3 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.nombre]DPT En SQL. y la condición C se 1. 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. La combinación natural es una variante de la equicombinación donde se eliminan esos atributos superuos. Dado que se está exigiendo igualdad de valores en al menos un atributo. Es importante tener en cuenta lo siguiente: • Se eliminarán las tuplas repetidas.1 La equicombinación La equicombinación (equireunión o equijoin) es una combinación que en la condición C solo tiene igualdades. la relación resultante tendrá atributos con información repetida (tantos como atributos hayan sido comparados en la condición C).

1/ . si la primera relación de entrada tenía N tuplas y la segunda M tuplas.org/content/m18351/1. aunque en ocasiones serán menos dado que las tuplas repetidas habrán de eliminarse. Como la unión. DEPARTAMENTOS El producto cartesiano raramente se utiliza en la práctica.Connexions module: m18351 5 una proyección que alterase el orden. La siguiente consulta en SQL por tanto debería devolver una relación vacía: SELECT * FROM PROFESORES INTERSECT SELECT * FROM EX-PROFESORES 1. SELECT * FROM PROFESORES.6.3 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.2 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. http://cnx. pero es interesante conocerlo para diferenciarlo de la operación de combinación (join). el producto cartesiano produce N×M tuplas. la intersección solo puede aplicarse a relaciones con atributos compatibles.6. la cláusula El producto cartesiano de dos relaciones en SQL se obtiene simplemente colocando más de una tabla en FROM. Los nombres de atributos de la nueva relación serán los de la primera SELECT. En general. 1.

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer: Get 4 months of Scribd and The New York Times for just $1.87 per week!

Master Your Semester with a Special Offer from Scribd & The New York Times