Bases de Datos Cap:IV

4,076 views
3,812 views

Published on

Álgebra relacional y
Cálculo relacional
Transparencias
Ponente: Juan Carlos Morocho

Published in: Education, Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,076
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
289
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • utpl
  • utpl
  • Bases de Datos Cap:IV

    1. 1. ESCUELA : NOMBRES: BASE DE DATOS I CICLO Ciencias de la Computación Ing. Juan Carlos Morocho OCTUBRE 2009 – FEBRERO 2010 BIMESTRE: I BIMESTRE
    2. 2. Capítulo 4 Álgebra relacional y Cálculo relacional Transparencias
    3. 3. Capítulo 4 - Objetivos <ul><li>El significado del término «completud relacional». </li></ul><ul><li>Cómo construir consultas en álgebra relacional. </li></ul><ul><li>Cómo construir consultas en el cálculo relacional de tuplas. </li></ul><ul><li>Cómo construir consultas en el cálculo relacional de dominios. </li></ul><ul><li>Las categorías de lenguajes de manipulación de datos relacionales (DML, Data Manipulation Language ). </li></ul>
    4. 4. Introducción <ul><li>El álgebra relacional y el cálculo relacional son lenguajes formales asociados al modelo relacional. </li></ul><ul><li>De manera informal el álgebra relacional es un lenguaje procedimental (de alto nivel) y el cálculo relacional un lenguaje no procedimental. </li></ul><ul><li>Sin embargo, formalmente, ambos lenguajes son equivalentes entre sí. </li></ul>
    5. 5. Álgebra relacional <ul><li>Las operaciones de álgebra relacional se aplican a una o más relaciones para definir otra relación sin modificar las relaciones originales. </li></ul><ul><li>Tanto los operandos como los resultados son relaciones de manera que la salida de una operación puede utilizarse como entrada de otra. </li></ul>
    6. 6. Álgebra relacional <ul><li>Existen cinco operaciones básicas en al álgebra relacional: selección, proyección, producto cartesiano, unión y diferencia de conjuntos. </li></ul><ul><li>Estas permiten realizar la mayoría de las operaciones de extracción de datos que nos interesan. </li></ul><ul><li>También existen la combinación, intersección y la división, que pueden expresarse en términos de las cinco operaciones básicas. </li></ul>
    7. 7. Operaciones de álgebra relacional Selección Proyección Producto cartesiano Diferencia de conjuntos Intersección Unión
    8. 8. Operaciones de álgebra relacional Combinación natural Semicombinación Combinación externa izquierda División (área sombreada) Ejemplo de división
    9. 9. Selección (o Restricción) <ul><li> predicate (R) </li></ul><ul><ul><li>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. </li></ul></ul>
    10. 10. Ejemplo - Selección (o Restricción) <ul><li>Enumerar todos los miembros del personal cuyo salario sea superior a 10.000 euros. </li></ul><ul><ul><li> salary > 10000 (Staff) </li></ul></ul>
    11. 11. Proyección <ul><li> col1, . . . , coln (R) </li></ul><ul><ul><li>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. </li></ul></ul>© Pearson Education Limited 1995, 2005
    12. 12. Ejemplo - Proyección <ul><li>Generar una lista de salarios para todo el personal, mostrando solamente los detalles referidos a los atributos staffNo , fName , lName , y salary . </li></ul><ul><ul><li> staffNo, fName, lName, salary (Staff) </li></ul></ul>
    13. 13. Unión <ul><li>R  S </li></ul><ul><ul><li>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. </li></ul></ul><ul><ul><li>R y S tienen que ser compatibles con respecto a la unión. </li></ul></ul>
    14. 14. Ejemplo - Unión <ul><li>Enumerar todas las ciudades en las que exista una sucursal, o un inmueble en alquiler. </li></ul><ul><ul><li> city (Branch)   city (PropertyForRent) </li></ul></ul>
    15. 15. Diferencia de conjuntos <ul><li>R – S </li></ul><ul><ul><li>Define una relación compuesta por las tuplas que encuentran en la relación R pero no en S. </li></ul></ul><ul><ul><li>R y S deben ser compatibles con respecto a la unión. </li></ul></ul>
    16. 16. Ejemplo – Diferencia de conjuntos <ul><li>Enumerar todas las ciudades en las que exista una sucursal pero no haya inmuebles en alquiler. </li></ul><ul><ul><li> city (Branch) –  city (PropertyForRent) </li></ul></ul>
    17. 17. Intersección <ul><li>R  S </li></ul><ul><ul><li>Define una relación compuesta por el conjunto de todas las tuplas que existen tanto en R como en S. </li></ul></ul><ul><ul><li>R y S deben ser compatibles con respecto a la unión. </li></ul></ul><ul><li>Expresándolo con operaciones básicas: </li></ul><ul><ul><li>R  S = R – (R – S) </li></ul></ul>
    18. 18. Ejemplo - Intersección <ul><li>Enumerar todas las ciudades en las que exista tanto una sucursal como al menos un inmueble en alquiler. </li></ul><ul><ul><li> city (Branch)   city (PropertyForRent) </li></ul></ul>
    19. 19. Producto cartesiano <ul><li>R X S </li></ul><ul><ul><li>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. </li></ul></ul>© Pearson Education Limited 1995, 2005
    20. 20. Ejemplo – Producto cartesiano <ul><li>Enumerar los nombres y comentarios de todos los clientes que hayan visto un inmueble en alquiler. </li></ul><ul><ul><li>(  clientNo, fName, lName (Client)) X (  clientNo, propertyNo, comment (Viewing)) </li></ul></ul>
    21. 21. Operaciones de combinación <ul><li>La combinación es una derivada del producto cartesiano. </li></ul><ul><li>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. </li></ul>
    22. 22. Operaciones de combinación <ul><li>Existen varias formas de operación de combinación </li></ul><ul><ul><li>Combinación theta </li></ul></ul><ul><ul><li>Equicombinación (un tipo particular de combinación theta) </li></ul></ul><ul><ul><li>Combinación natural </li></ul></ul><ul><ul><li>Combinación externa </li></ul></ul><ul><ul><li>Semicombinación </li></ul></ul>
    23. 23. Combinación Theta (  -combinación) <ul><li>R F S </li></ul><ul><ul><li>Defina una relación que contiene tuplas del producto cartesiano que satisfacen el predicado F. </li></ul></ul><ul><ul><li>El predicado tiene la forma R.a i  S.b i donde  puede ser uno de los operadores de comparación (<,  , >,  , =,  ). </li></ul></ul>
    24. 24. Combinación Theta (  -combinación) <ul><li>Puede ser reescrita en términos de las operaciones básicas de selección y producto cartesiano. </li></ul><ul><ul><ul><li>R F S =  F (R  S) </li></ul></ul></ul>
    25. 25. Ejemplo - Equicombinación <ul><li>Enumerar los nombres y comentarios de todos los clientes que hayan visitado un inmueble en alquiler. </li></ul><ul><ul><li>(  clientNo, fName, lName (Client)) Client.clientNo = Viewing.clientNo (  clientNo, propertyNo, comment (Viewing)) </li></ul></ul>
    26. 26. Combinación natural <ul><li>R S </li></ul><ul><ul><li>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. </li></ul></ul>
    27. 27. Ejemplo – Combinación natural <ul><li>Enumerar los nombres y comentarios de todos los clientes que hayan visitado un inmueble en alquiler. </li></ul><ul><ul><li>(  clientNo, fName, lName (Client)) </li></ul></ul><ul><ul><li>(  clientNo, propertyNo, comment (Viewing)) </li></ul></ul>
    28. 28. Combinación externa <ul><li>Se emplea para incluir en la relación resultante las tuplas que no tengan valores correspondientes en los atributos comunes de S. </li></ul><ul><li>R S </li></ul><ul><ul><li>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. </li></ul></ul>
    29. 29. Ejemplo – Combinación externa izquierda <ul><li>Generar un informe de estado sobre las visitas de los inmuebles. </li></ul><ul><ul><li> propertyNo, street, city (PropertyForRent) </li></ul></ul><ul><ul><li>Viewing </li></ul></ul>
    30. 30. Semicombinación <ul><li>R F S </li></ul><ul><ul><li>Define una relación que contiene las tuplas de R que participan en la combinación de R con S. </li></ul></ul>© Pearson Education Limited 1995, 2005
    31. 31. Ejemplo - Semicombinación <ul><li>Enumerar los detalles completos de todos los empleados que trabajen en la sucursal de Glasgow. </li></ul><ul><ul><li>Staff Staff.branchNo=Branch.branchNo (  city=‘Glasgow’ (Branch)) </li></ul></ul>© Pearson Education Limited 1995, 2005
    32. 32. División <ul><li>R  S </li></ul><ul><ul><li>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. </li></ul></ul>© Pearson Education Limited 1995, 2005
    33. 33. Ejemplo - División <ul><li>Identificar todos los clientes que hayan visto todos los inmuebles con tres habitaciones. </li></ul><ul><ul><li>(  clientNo, propertyNo (Viewing))  </li></ul></ul><ul><ul><li>(  propertyNo (  rooms = 3 (PropertyForRent))) </li></ul></ul>
    34. 34. Cálculo relacional <ul><li>Las consultas de cálculo relacional especifican qué hay que extraer, en lugar de cómo extraerlo. </li></ul><ul><li>En la lógica de primer orden o cálculo de predicados, un predicado es una función booleana con argumentos. </li></ul><ul><li>Cuando asignamos valores a los argumentos la función nos proporciona una expresión, denominada proposición , que puede ser verdadera o falsa. </li></ul>
    35. 35. Cálculo relacional <ul><li>Si el predicado contiene una variable (Ej. ‘ x es miembro del personal’), tiene que existir un rango asociado para x . </li></ul><ul><li>Cuando sustituimos algunos de los valores de este rango por x, la proposición puede ser verdadera; para otros valores puede ser falsa. </li></ul><ul><li>Aplicado a las bases de datos se puede encontrar en dos formas: tuplas y dominios . </li></ul>
    36. 36. Cálculo relacional de tuplas <ul><li>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 . </li></ul><ul><li>Una variable de tuplas es una variable que «toma sus valores» en una determinada relación: Ej. una variable cuyos únicos valores permitidos son las tuplas de la relación. </li></ul><ul><li>Especificar el rango de una variable de tupla S de forma que el rango sea la relación Staff : </li></ul><ul><ul><li>Staff(S) </li></ul></ul><ul><li>Para extraer el conjunto de todas las tuplas S tales que F(S) sea verdadera: </li></ul><ul><ul><li>{S | F(S)} </li></ul></ul>
    37. 37. Cálculo relacional de tuplas - Ejemplo <ul><li>Para obtener los detalles de todos los empleados que ganen más de 10.000 euros: </li></ul><ul><ul><li>{S | Staff(S)  S.salary > 10000} </li></ul></ul><ul><li>Para extraer un atributo concreto, como salary , escribiríamos: </li></ul><ul><ul><li>{S.salary | Staff(S)  S.salary > 10000} </li></ul></ul>
    38. 38. Cálculo relacional de tuplas <ul><li>Podemos usar dos cuantificadores para decir a cuántas instancias se aplica el predicado: </li></ul><ul><ul><li>Cuantificador existencial Э («existe») </li></ul></ul><ul><ul><li>Cuantificador universal ˅ («para todo») </li></ul></ul><ul><li>Las variables de tupla cualificadas mediante ˅ or Э se denominan variables legadas , mientras que si no están cualificadas se denominan variables libres . </li></ul>
    39. 39. Cálculo relacional de tuplas <ul><li>El cuantificador existencial se utiliza en fórmulas que deben ser ciertas para al menos una instancia, como en: </li></ul><ul><ul><li>Staff(S)  ( Э B)(Branch(B)  </li></ul></ul><ul><ul><li>(B.branchNo = S.branchNo)  B.city = ‘London’) </li></ul></ul><ul><li>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». </li></ul>
    40. 40. Cálculo relacional de tuplas <ul><li>El cuantificador universal se utiliza en enunciados que deben ser ciertos para todas las instancias, como en: </li></ul><ul><ul><li>(&quot;B) (B.city  ‘Paris’) </li></ul></ul><ul><li>Significa «No existe ninguna sucursal en París». </li></ul><ul><li>También podemos usar ~( Э B) (B.city = ‘Paris’) que significa «no existe ninguna sucursal situada en París». </li></ul>
    41. 41. Ejemplo – Cálculo relacional de tuplas <ul><li>Enumerar los nombres de todos los gerentes que ganen más de 25.000 euros. </li></ul><ul><ul><li>{S.fName, S.lName | Staff(S)  </li></ul></ul><ul><ul><li>S.position = ‘Manager’  S.salary > 25000} </li></ul></ul>
    42. 42. Cálculo relacional de dominios <ul><li>Utiliza variables que toman sus valores de dominios de atributos, en lugar de tomarlos de tuplas de alguna relación. </li></ul><ul><li>Si F( d 1 , d 2 , . . . , d n ) representa una fórmula compuesta de átomos y d 1 , d 2 , . . . , d n representa variables de dominio, entonces: </li></ul><ul><ul><li>{ d 1 , d 2 , . . . , d n | F( d 1 , d 2 , . . . , d n )} </li></ul></ul><ul><ul><li>Es una expresión en el cálculo relacional de dominios. </li></ul></ul>
    43. 43. Ejemplo – Cálculo relacional de dominios <ul><li>Hallar los nombres de todos los gerentes que ganen más de 25.000 euros. </li></ul><ul><ul><li>{fN, lN | ( Э sN, posn, sex, DOB, sal, bN) </li></ul></ul><ul><ul><li>(Staff (sN, fN, lN, posn, sex, DOB, sal, bN)  </li></ul></ul><ul><ul><li>posn = ‘Manager’  sal > 25000)} </li></ul></ul>© Pearson Education Limited 1995, 2005
    44. 44. Ejemplo – Cálculo relacional de dominios <ul><li>Enumerar los empleados que gestionan inmuebles en alquiler en Glasgow. </li></ul><ul><ul><li>{sN, fN, lN, posn, sex, DOB, sal, bN | </li></ul></ul><ul><ul><li>( Э sN1,cty)(Staff(sN,fN,lN,posn,sex,DOB,sal,bN)  </li></ul></ul><ul><ul><li>PropertyForRent(pN, st, cty, pc, typ, rms, </li></ul></ul><ul><ul><li>rnt, oN, sN1, bN1)  </li></ul></ul><ul><ul><li>(sN=sN1)  cty=‘Glasgow’)} </li></ul></ul>
    45. 45. Cálculo relacional de dominios <ul><li>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. </li></ul><ul><li>Esto quiere decir que toda expresión relacional tiene una expresión equivalente en el cálculo relacional y vice versa . </li></ul>
    46. 46. Otros lenguajes <ul><li>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). </li></ul><ul><li>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 ). </li></ul>
    47. 47. Otros lenguajes <ul><li>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. </li></ul><ul><li>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. </li></ul>

    ×