Algebra y Calculo Relacional

Post on 20-Dec-2015

62 views 4 download

description

Algebra y Calculo Relacional clase ufg

Transcript of Algebra y Calculo Relacional

Álgebra relacional y Cálculo relacional

Diseño de Base de DatosIng. Luis Reyes

Objetivos

El significado del término «completud relacional».

Cómo construir consultas en álgebra relacional.

Cómo construir consultas en el cálculo relacional de tuplas.

Cómo construir consultas en el cálculo relacional de dominios.

Las categorías de lenguajes de manipulación de datos relacionales (DML, Data Manipulation Language).

Introducción

El álgebra relacional y el cálculo relacional son lenguajes formales asociados al modelo relacional.

De manera informal el álgebra relacional es un lenguaje procedimental (de alto nivel) y el cálculo relacional un lenguaje no procedimental.

Sin embargo, formalmente, ambos lenguajes son equivalentes entre sí.

Álgebra relacional

Las operaciones de álgebra relacional se aplican a una o más relaciones para definir otra relación sin modificar las relaciones originales.

Tanto los operandos como los resultados son relaciones de manera que la salida de una operación puede utilizarse como entrada de otra.

Álgebra relacional

Existen cinco operaciones básicas en al álgebra relacional: selección, proyección, producto cartesiano, unión y diferencia de conjuntos.

Estas permiten realizar la mayoría de las operaciones de extracción de datos que nos interesan.

También existen la combinación, intersección y la división, que pueden expresarse en términos de las cinco operaciones básicas.

Operaciones de álgebra relacional

Selección Proyección Producto cartesiano

Diferencia de conjuntosIntersecciónUnión

Operaciones de álgebra relacional

Combinación natural

Semicombinación Combinación externa izquierda

División (área sombreada) Ejemplo de división

Selección (o Restricción)

predicate (R)

La operación de selección se aplica a una única relación R y define otra relación que contiene únicamente aquellas tuplas de R que satisfacen la condición (predicado) especificada.

Ejemplo - Selección (o Restricción)

Enumerar todos los miembros del personal cuyo salario sea superior a 10.000 euros.

salary > 10000 (Staff)

10

Proyección

col1, . . . , coln(R)

Se aplica a una única relación R y define otra relación que contiene un subconjunto vertical de R, extrayendo los valores de los atributos especificados y eliminando los duplicados.

© Pearson Education Limited 1995, 2005

Ejemplo - Proyección

Generar una lista de salarios para todo el personal, mostrando solamente los detalles referidos a los atributos staffNo, fName, lName, y salary.

staffNo, fName, lName, salary(Staff)

Unión

R S

La unión de dos relaciones R y S define una relación que contiene todas las tuplas de R, de S o tanto de R como de S, eliminándose las tuplas duplicadas.

R y S tienen que ser compatibles con respecto a la unión.

Ejemplo - Unión

Enumerar todas las ciudades en las que exista una sucursal, o un inmueble en alquiler.

city(Branch) city(PropertyForRent)

Diferencia de conjuntos

R – S

Define una relación compuesta por las tuplas que encuentran en la relación R pero no en S.

R y S deben ser compatibles con respecto a la unión.

Ejemplo – Diferencia de conjuntos

Enumerar todas las ciudades en las que exista una sucursal pero no haya inmuebles en alquiler.

city(Branch) – city(PropertyForRent)

Intersección

R S

Define una relación compuesta por el conjunto de todas las tuplas que existen tanto en R como en S.

R y S deben ser compatibles con respecto a la unión.

Expresándolo con operaciones básicas:

R S = R – (R – S)

Ejemplo - Intersección

Enumerar todas las ciudades en las que exista tanto una sucursal como al menos un inmueble en alquiler.

city(Branch) city(PropertyForRent)

18

Producto cartesiano

R X S

Define una relación que es la concatenación de cada tupla de la relación R con cada tupla de la relación S.

© Pearson Education Limited 1995, 2005

Ejemplo – Producto cartesiano

Enumerar los nombres y comentarios de todos los clientes que hayan visto un inmueble en alquiler.

(clientNo, fName, lName(Client)) X (clientNo, propertyNo,

comment (Viewing))

Operaciones de combinación

La combinación es una derivada del producto cartesiano.

Equivalente a realizar una operación de selección utilizando el predicado de combinación como fórmula se selección sobre el producto cartesiano de las dos relaciones que funcionan como operando.

Operaciones de combinación

Existen varias formas de operación de combinación

Combinación theta

Equicombinación (un tipo particular de combinación theta)

Combinación natural

Combinación externa

Semicombinación

Combinación Theta (-combinación)

R FS

Defina una relación que contiene tuplas del producto cartesiano que satisfacen el predicado F.

El predicado tiene la forma R.ai S.bi

donde puede ser uno de los operadores de comparación (<, , >, , =, ).

Combinación Theta (-combinación)

Puede ser reescrita en términos de las operaciones básicas de selección y producto cartesiano.

R FS = F(R S)

Ejemplo - Equicombinación

Enumerar los nombres y comentarios de todos los clientes que hayan visitado un inmueble en alquiler.

(clientNo, fName, lName(Client)) Client.clientNo

= Viewing.clientNo (clientNo, propertyNo,

comment(Viewing))

Combinación natural

R S

La combinación natural entre las dos relaciones R y S sobre todos los atributos comunes. De los resultados se elimina una de las dos apariciones de cada atributo común.

Ejemplo – Combinación natural

Enumerar los nombres y comentarios de

todos los clientes que hayan visitado un

inmueble en alquiler.

(clientNo, fName, lName(Client))

(clientNo, propertyNo, comment(Viewing))

Combinación externa

Se emplea para incluir en la relación resultante las tuplas que no tengan valores correspondientes en los atributos comunes de S.

R S

La combinación externa izquierda (natural) es aquella combinación que también incluye en el resultado las tuplas de R que no tienen valores correspondientes en los atributos comunes de S.

Ejemplo – Combinación externa izquierda

Generar un informe de estado sobre las visitas de los inmuebles.

propertyNo, street, city(PropertyForRent)

Viewing

29

Semicombinación

R F S

Define una relación que contiene las tuplas de R que participan en la combinación de R con S.

© Pearson Education Limited 1995, 2005

30

Ejemplo - Semicombinación

Enumerar los detalles completos de todos los empleados que trabajen en la sucursal de Glasgow.

Staff

Staff.branchNo=Branch.branchNo(city=‘Glasgow’(Branch))

© Pearson Education Limited 1995, 2005

31

División

R S

Define una relación sobre los atributos C que está compuesta por el conjunto de tuplas de R que se corresponden con la combinación de todas las tuplas de S.

© Pearson Education Limited 1995, 2005

Ejemplo - División

Identificar todos los clientes que hayan visto todos los inmuebles con tres habitaciones.

(clientNo, propertyNo(Viewing))

(propertyNo(rooms = 3 (PropertyForRent)))

Cálculo relacional

Las consultas de cálculo relacional especifican qué hay que extraer, en lugar de cómoextraerlo.

En la lógica de primer orden o cálculo de predicados, un predicado es una función booleana con argumentos.

Cuando asignamos valores a los argumentos la función nos proporciona una expresión, denominada proposición, que puede ser verdadera o falsa.

Cálculo relacional

Si el predicado contiene una variable (Ej. ‘xes miembro del personal’), tiene que existir un rango asociado para x.

Cuando sustituimos algunos de los valores de este rango por x, la proposición puede ser verdadera; para otros valores puede ser falsa.

Aplicado a las bases de datos se puede encontrar en dos formas: tuplas y dominios.

Cálculo relacional de tuplas

Lo que nos interesa es localizar las tuplas para las que un cierto predicado sea verdadero. Es un cálculo basado en el uso de variables de tuplas.

Una variable de tuplas es una variable que «tomasus valores» en una determinada relación: Ej. unavariable cuyos únicos valores permitidos son lastuplas de la relación.

Especificar el rango de una variable de tupla S de forma que el rango sea la relación Staff:

Staff(S)

Para extraer el conjunto de todas las tuplas Stales que F(S) sea verdadera:

{S | F(S)}

Cálculo relacional de tuplas - Ejemplo

Para obtener los detalles de todos losempleados que ganen más de 10.000euros:

{S | Staff(S) S.salary > 10000}

Para extraer un atributo concreto, comosalary, escribiríamos:

{S.salary | Staff(S) S.salary >10000}

Cálculo relacional de tuplas

Podemos usar dos cuantificadores para decir a cuántas instancias se aplica el predicado:

Cuantificador existencial Э («existe»)

Cuantificador universal ˅ («para todo»)

Las variables de tupla cualificadas mediante ˅ or Э se denominan variables legadas,

mientras que si no están cualificadas se denominan variables libres.

Cálculo relacional de tuplas

El cuantificador existencial se utiliza en fórmulas que deben ser ciertas para al menos una instancia, como en:

Staff(S) (ЭB)(Branch(B)

(B.branchNo = S.branchNo) B.city =‘London’)

Significa «Existe una tupla de Branch que tiene el mismo valor de branchNo que el valor de branchNo correspondiente a la tupla actual de Staff, S, y cuya ciudad correspondiente es Londres».

Cálculo relacional de tuplas

El cuantificador universal se utiliza enenunciados que deben ser ciertos paratodas las instancias, como en:

("B) (B.city ‘Paris’)

Significa «No existe ninguna sucursal enParís».

También podemos usar ~(ЭB) (B.city =‘Paris’) que significa «no existe ningunasucursal situada en París».

Ejemplo – Cálculo relacional de tuplas

Enumerar los nombres de todos los gerentes que ganen más de 25.000 euros.

{S.fName, S.lName | Staff(S)

S.position = ‘Manager’ S.salary > 25000}

Cálculo relacional de dominios

Utiliza variables que toman sus valores de dominios de atributos, en lugar de tomarlos de tuplas de alguna relación.

Si F(d1, d2, . . . , dn) representa una fórmula compuesta de átomos y d1, d2, . . . , dn representa variables de dominio, entonces:

{d1, d2, . . . , dn | F(d1, d2, . . . , dn)}

Es una expresión en el cálculo relacional de dominios.

42

Ejemplo – Cálculo relacional de dominios

Hallar los nombres de todos los gerentes que ganen más de 25.000 euros.

{fN, lN | (ЭsN, posn, sex, DOB, sal, bN)

(Staff (sN, fN, lN, posn, sex, DOB, sal, bN)

posn = ‘Manager’ sal > 25000)}

© Pearson Education Limited 1995, 2005

Ejemplo – Cálculo relacional de dominios

Enumerar los empleados que gestionan inmuebles en alquiler en Glasgow.

{sN, fN, lN, posn, sex, DOB, sal, bN |

(ЭsN1,cty)(Staff(sN,fN,lN,posn,sex,DOB,sal,bN)

PropertyForRent(pN, st, cty, pc, typ, rms,

rnt, oN, sN1, bN1)

(sN=sN1) cty=‘Glasgow’)}

Cálculo relacional de dominios

Cuando se restringe el cálculo relacional de dominios a expresiones seguras es equivalente al cálculo relacional de tuplas restringido también a expresiones segura, y ambos son a su vez equivalentes al álgebra relacional.

Esto quiere decir que toda expresión relacional tiene una expresión equivalente en el cálculo relacional y vice versa.

Otros lenguajes

Los lenguajes orientados a transformación son lenguajes no procedimentales que utilizan relaciones para transformar los datos de entrada en las salidas requeridas (Ej. SQL).

Los lenguajes gráficos proporcionan al usuario una imagen o ilustración de la estructura de la relación. El usuario rellena un ejemplo de lo que desea y el sistema devuelve los datos requeridos en dicho formato (Ej. QBE, Query-By-Example).

Otros lenguajes

Los lenguajes de cuarta generación (4GL, Fourth Generation Languages, permiten crear una aplicación personalizada completa utilizando un conjunto limitado de comandos en un entorno amigable y frecuentemente basado en menús.

Algunos sistemas aceptan algún tipo de lenguaje natural, que suele ser una versión restringida del inglés, lo que a veces se denomina lenguajes de quinta generación (5GL, Fifth Generation Languages). Estos desarrollos se encuentran todavía en una etapa temprana.