Calculo Relacional de Tuplas

Anuncio
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
Descargar