P. 1
ALGEBRA RELACIONAL CON SQL

ALGEBRA RELACIONAL CON SQL

|Views: 1.717|Likes:
Publicado porinfraerno

More info:

Published by: infraerno on Feb 03, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

06/04/2013

pdf

text

original

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/

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

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.org/content/m18351/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.. • • (Ai. Aj. dada una relación jutno de atributos de esa relación R(Ai.. . Por ejemplo: SELECT "grado-experimentalidad".Connexions module: m18351 3 En el lenguaje SQL se pueden redenominar atributos mediante la cláusula AS.1/ En SQL... nombre as denominacion FROM DEPARTAMENTOS 1. DISTINCT. hay que utilizar el modicador 1. .. Aj. 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. 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.5. Es importante notar lo siguiente en las proyecciones: Como el resultado de cualquier operación de álgebra relacional es una relación. .5 Operaciones especícamente relacionales 1.. http://cnx. An). las tuplas repetidas en el resultado de la proyección se eliminarán.0 SELECT * FROM PROFESORES WHERE not es doctor and teléfono-móvil IS NOT NULL.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). . . A2. y todas las tuplas de la selección cumplen la condición C.5. Ak).. SELECT DISTINCT nombre FROM profesores Para asegurar que el resultado es una relación en el sentido matemático. la selección se especica mediante la cláusula WHERE.. El orden de los atributos en la proyección no tiene que ser el mismo que en la relación original. ya que tendría dos tuplas repetidas.. Aj. apellidos FROM PROFESORES SELECT nombre FROM profesores del nombre y los apellidos. Por ejemplo: . Por ejemplo: R := DEPARTAMENTOS(grado-experimentalidad >1. Es importante notar que la siguiente sentencia no devolvería una relación.. Ak FROM R Por ejemplo. Los atributos de la selección son los mismos que los de la relación original..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. Ak).0) Q := PROFESORES(no es-doctor y teléfono-móvil <> null) SELECT * FROM DEPARTAMENTOS WHERE grado-experimentalidad > 1. SELECT Ai. Formalmente. R(A1.

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

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

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->