Calculo Relacional de Tuplas Lic. Gerardo Rossel 2016 Definición Ejemplos Bibliografı́a Introducción Formulas ¿Que es el Calculo Relaciónal de Tuplas? Al igual que el Álgebra Relacional, el Cálculo Relacional de Tuplas (CRT) es un lenguaje de consulta asociado al Modelo Relacional (MR). CRT es un lenguaje declarativo: describe cuáles tuplas se deben devolver pero no cómo se calculan Una consulta CRT tiene la forma {t/F (t)}, donde t es una tupla (variable libre) y F es la fórmula que describe a la tupla t. La única variable libre en F debe ser t. El lenguaje para escribir fórmulas es un subconjunto de la Lógica de Primer Orden Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Introducción Formulas Formulas Atómicas Si R es una relación, r y s variables de tuplas, a y b atributos, y op es un operador del conjunto: { =, 6=, ≤, ≥, >, < }. Las siguientes son formulas atómicas: r ∈R r .a op s.b r .a op constante o constante op r .a Donde a es un atributo donde esta definida r y b es un atributo donde esta definido s. Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Introducción Formulas Formulas Las formulas se definen recursivamente como las siguientes cualquier formula atómica es una formula ¬p, p ∧ q, p ∨ q, p =⇒ q ∃r (p(r )) Donde r es variable de tupla ∀r (p(r )) Donde r es variable de tupla En donde p y q son formulas y p(r ) denota una formula en la cual aparece la variable r . Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Introducción Formulas Consultas Seguras/Inseguras Consultas Inseguras Es posible definir consultas que devuelvan infinitos resultados las llamamos: consultas inseguras. Ejemplo: {t/¬(t ∈ Actor )} Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Introducción Formulas Consultas Seguras/Inseguras Dominio de una Formula Es posible definir el dominio de una formula F que denotamos como dom(F ) y es el conjunto de todos los valores a los que hace F referencia. Los valores que aparecen explı́citamente en F Los valores que aparecen en todas las relaciones cuyos nombres aparecen en F dom(t ∈ Actor ∧ t.edad > 18) ??? dom(¬(t ∈ Actor )) ??? Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Introducción Formulas Consultas Seguras/Inseguras Consulta Segura Se dice que una consulta {t/F (t)} es segura si todos los valores que aparecen en el resultado pertenecen al dom(F ) El cálculo relacional de tuplas restringido a expresiones seguras es equivalente en potencia expresiva al álgebra relacional básica Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Ejemplos {t/∃a(a ∈ Actor ∧ t.nombreActor = a.nombreActor )} Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Ejemplos {t/∃a(a ∈ Actor ∧ t.nombreActor = a.nombreActor )} Devuelve los nombres de todos los actores. Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Ejemplos {t/∃a(a ∈ Actor ∧ t.nombreActor = a.nombreActor )} Devuelve los nombres de todos los actores. Las consultas CRT se aplican sobre instancias de relación y también devuelven una instancia de relación (el conjunto de tuplas para las cuales la fórmula devuelve verdadero). {t/∃a(a ∈ Actor ∧ t.nombreActor = a.nombreActor ∧t.edad = a.edad)} Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Ejemplos {t/∃a(a ∈ Actor ∧ t.nombreActor = a.nombreActor )} Devuelve los nombres de todos los actores. Las consultas CRT se aplican sobre instancias de relación y también devuelven una instancia de relación (el conjunto de tuplas para las cuales la fórmula devuelve verdadero). {t/∃a(a ∈ Actor ∧ t.nombreActor = a.nombreActor ∧t.edad = a.edad)} devuelve los nombres y edades de todos los actores Los atributos que tendrán las tuplas devueltas son solamente los que aparecen alguna vez en la consulta. Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Ejemplos Dada las siguientes relaciones: Proveedores(idProv, nombre, direccion) Productos( idProd, nombre, color) Catalogo(idProv, idProd, precio) Encontrar los nombres de los proveedores que proveen algún producto rojo Buscar los idProv para los proveedores que proveen todos los productos. Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Ejemplos Dada las siguientes relaciones: Proveedores(idProv, nombre, direccion) Productos( idProd, nombre, color) Catalogo(idProv, idProd, precio) Encontrar los nombres de los proveedores que proveen algún producto rojo: Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Ejemplos Dada las siguientes relaciones: Proveedores(idProv, nombre, direccion) Productos( idProd, nombre, color) Catalogo(idProv, idProd, precio) Encontrar los nombres de los proveedores que proveen algún producto rojo: {t/∃p, pr , c(p ∈ Proveedores ∧ pr ∈ Productos ∧ c ∈ Catalogo ∧ pr .color =0 rojo 0 ∧ c.idProd = pr .idProd ∧ c.idProv = p.idProv ∧ t.nombre = p.nombre)} Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Ejemplos Proveedores(idProv, nombre, direccion) Productos( idProd, nombre, color) Catalogo(idProv, idProd, precio) Buscar los idProv para los proveedores que proveen todos los productos. {t/(∀pr ∃c(pr ∈ Productos ∧ c ∈ Catalogo x ∧(c.idProd = pr .idProd ∧ c.idProv = t.idProv )) Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Ejemplos Proveedores(idProv, nombre, direccion) Productos( idProd, nombre, color) Catalogo(idProv, idProd, precio) Buscar los idProv para los proveedores que proveen todos los productos. {t/(∀pr ∃c(pr ∈ Productos ∧ c ∈ Catalogo x ∧(c.idProd = pr .idProd ∧ c.idProv = t.idProv )) {t/(∀pr (pr ∈ Productos =⇒ ∃c(c ∈ Catalogo ∧ (c.idProd = pr .idProd ∧ c.idProv = t.idProv ))) Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Ejemplos Proveedores(idProv, nombre, direccion) Productos( idProd, nombre, color) Catalogo(idProv, idProd, precio) Buscar los idProv para los proveedores que proveen todos los productos rojos. {t/(∀pr (pr ∈ Productos ∧ pr .color =0 rojo 0 =⇒ ∃c (c ∈ Catalogo ∧ (c.idProd = pr .idProd ∧ c.idProv = t.idProv ))) Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Ejemplos Proveedores(idProv, nombre, direccion) Productos( idProd, nombre, color) Catalogo(idProv, idProd, precio) Buscar los idProv para los proveedores que proveen todos los productos rojos. {t/(∀pr (pr ∈ Productos ∧ pr .color =0 rojo 0 =⇒ ∃c (c ∈ Catalogo ∧ (c.idProd = pr .idProd ∧ c.idProv = t.idProv ))) {t/∃pr 1(pr 1 ∈ Productos ∧ (pr 1.color =0 rojo 0 ) ∧ (∀pr (pr ∈ Productos ∧ pr .color =0 rojo 0 =⇒ ∃c (c ∈ Catalogo∧(c.idProd = pr .idProd ∧c.idProv = t.idProv )) Lic. Gerardo Rossel Calculo Relacional de Tuplas Definición Ejemplos Bibliografı́a Bibliografı́a Bibliografı́a principal Ramez Elmasri and Shamkant B. Navathe. 2015. Fundamentals of Database Systems (7th ed.). Pearson. Hector Garcia-Molina, Jeffrey D. Ullman, and Jennifer Widom. 2008. Database Systems: The Complete Book (2nd ed.). Prentice Hall Press, Upper Saddle River, NJ, USA. Jeffrey D. Ullman Principles of Database and Knowledge-Base Systems Computer Science Press; 1st edition (January 1, 1990) Lic. Gerardo Rossel Calculo Relacional de Tuplas