Algebra y Calculo Relacional

46
Álgebra relacional y Cálculo relacional Diseño de Base de Datos Ing. Luis Reyes

description

Algebra y Calculo Relacional clase ufg

Transcript of Algebra y Calculo Relacional

Page 1: Algebra y Calculo Relacional

Álgebra relacional y Cálculo relacional

Diseño de Base de DatosIng. Luis Reyes

Page 2: Algebra y Calculo Relacional

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

Page 3: Algebra y Calculo Relacional

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

Page 4: Algebra y Calculo Relacional

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

Page 5: Algebra y Calculo Relacional

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

Page 6: Algebra y Calculo Relacional

Operaciones de álgebra relacional

Selección Proyección Producto cartesiano

Diferencia de conjuntosIntersecciónUnión

Page 7: Algebra y Calculo Relacional

Operaciones de álgebra relacional

Combinación natural

Semicombinación Combinación externa izquierda

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

Page 8: Algebra y Calculo Relacional

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.

Page 9: Algebra y Calculo Relacional

Ejemplo - Selección (o Restricción)

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

salary > 10000 (Staff)

Page 10: Algebra y Calculo Relacional

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

Page 11: Algebra y Calculo Relacional

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)

Page 12: Algebra y Calculo Relacional

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.

Page 13: Algebra y Calculo Relacional

Ejemplo - Unión

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

city(Branch) city(PropertyForRent)

Page 14: Algebra y Calculo Relacional

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.

Page 15: Algebra y Calculo Relacional

Ejemplo – Diferencia de conjuntos

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

city(Branch) – city(PropertyForRent)

Page 16: Algebra y Calculo Relacional

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)

Page 17: Algebra y Calculo Relacional

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)

Page 18: Algebra y Calculo Relacional

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

Page 19: Algebra y Calculo Relacional

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))

Page 20: Algebra y Calculo Relacional

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.

Page 21: Algebra y Calculo Relacional

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

Page 22: Algebra y Calculo Relacional

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 (<, , >, , =, ).

Page 23: Algebra y Calculo Relacional

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)

Page 24: Algebra y Calculo Relacional

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))

Page 25: Algebra y Calculo Relacional

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.

Page 26: Algebra y Calculo Relacional

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))

Page 27: Algebra y Calculo Relacional

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.

Page 28: Algebra y Calculo Relacional

Ejemplo – Combinación externa izquierda

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

propertyNo, street, city(PropertyForRent)

Viewing

Page 29: Algebra y Calculo Relacional

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

Page 30: Algebra y Calculo Relacional

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

Page 31: Algebra y Calculo Relacional

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

Page 32: Algebra y Calculo Relacional

Ejemplo - División

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

(clientNo, propertyNo(Viewing))

(propertyNo(rooms = 3 (PropertyForRent)))

Page 33: Algebra y Calculo Relacional

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.

Page 34: Algebra y Calculo Relacional

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.

Page 35: Algebra y Calculo Relacional

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)}

Page 36: Algebra y Calculo Relacional

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}

Page 37: Algebra y Calculo Relacional

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.

Page 38: Algebra y Calculo Relacional

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

Page 39: Algebra y Calculo Relacional

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

Page 40: Algebra y Calculo Relacional

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}

Page 41: Algebra y Calculo Relacional

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.

Page 42: Algebra y Calculo Relacional

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

Page 43: Algebra y Calculo Relacional

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’)}

Page 44: Algebra y Calculo Relacional

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.

Page 45: Algebra y Calculo Relacional

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

Page 46: Algebra y Calculo Relacional

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.