Expresiones algebraicas equivalentes

Slides:



Advertisements
Presentaciones similares
Consultas en Visual FoxPro
Advertisements

SQL Sigla del nombre “Structured Query Language”.
Ejercicios Solemne 2 Parte 1
Consultas anidadas.
Teórico: Algebra Relacional
EL LENGUAJE ESTÁNDAR SQL
ALGEBRA RELACIONAL.
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle
Características Objeto Relacionales en Oracle
PL/SQL Francisco Moreno Universidad Nacional.
EXPLAIN PLAN Cómo leer los resultados del EXPLAIN PLAN
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle
PL/SQL Francisco Moreno Universidad Nacional.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
MySQL M.C. Pedro Bello López.
Lenguaje SQL (Structured Query Language)
PL/SQL Francisco Moreno Universidad Nacional. Introducción al PL/SQL ¿Por qué PL/SQL? A pesar de que SQL tiene mecanismos de control condicional (cláusula.
“Optimización de sentencias MySQL” jueves 26 de septiembre de 2013.
PL/SQL Francisco Moreno Universidad Nacional.
Lenguajes Formales de Consulta
SQL Structured Query Language
1 John Freddy Duitama U.de.A. Facultad de Ingeniería Optimización Algebraica. Profesor: John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A. Profesor:
SQL: Lenguaje de Interrogación Estructurado
PL/SQL Francisco Moreno Universidad Nacional.
Subconsultas Avanzadas
Algebra Relacional.
6 Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados. Visualización de Datos de Varias Tablas Utilizando Uniones.
Administración de Bases de Datos
John Freddy Duitama Muñoz. Facultad de Ingeniería. U. de. A.
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
Dr. Mario Rossainz López Aplicaciones WEB Primavera 2015.
PL/SQL Francisco Moreno Universidad Nacional.
SQL: DDL Francisco Moreno & Carlos Mario Zapata. SQL:DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la Base de Datos Tipos de Objetos:
SQL (Structured Query Language / Lenguaje de consulta estructurado)‏
IBD CLASE 15. SQL Lenguaje de Consultas Estruturado (SQL) ◦Lenguaje de trabajo estándard para modelo relacional ◦Componentes ◦DDL: Data Definition Language.
CAPITULO 4 Despliegue de Datos Desde Múltiples Tablas
Programación en Visual Basic Lección #8: SQL Por Antonio F. Huertas.
Base de Datos I. Es un lenguaje con el que los usuarios solicitan información de la BD. Estos lenguajes suelen ser de nivel superior que el de los lenguajes.
SQL: Lenguaje de Interrogación Estructurado. Vistas Declaración de vista CREATE VIEW ( ) AS SELECT... Semántica Tabla virtual cuyo contenido es el resultado.
Características Objeto Relacionales en Oracle
Características Objeto-Relacionales en Oracle Francisco Moreno Universidad Nacional.
Consultas SQL (Base de Datos)
Structured Query Language (Lenguaje Estructurado de Consultas)
John Freddy Duitama M.U.de.A. Facultad de Ingeniería. Creación del esquema de Una Base de Datos. John Freddy Duitama Muñoz. Facultad de Ingeniería. U.de.A.
SQL: DDL Francisco Moreno. SQL: DDL DDL: Lenguaje de Definición de Datos Permite crear objetos en la BD Tipos de objetos: - Tablas: corresponden a las.
Más ejemplos en SQL Francisco Moreno. S sn snombre situacion ciudad S1 Salazar 20 Londres S2 Jaramillo 10 París S3 Bernal30 París S4 Caicedo 20 Londres.
Ingeniería de Sistemas y Modelamiento.
Uso de los JOINS en MYSQL
SQL Sigla del nombre “Structured Query Language”.
Para pasar a tablas todos los datos sin dejar nada y que las tablas tengan sentido por si solas se tiene que seguir unos pasos: 1.Toda entidad se transforma.
Tipos de Datos.
Base de datos Francisco Castro. Creación de una tabla drop table TABLA cascade constraints; /*==============================================================*/
JOIN EN MYSQL Bueno en esta presentación mostrare cosas acerca de los usos de la sentencia JOIN en mysql , mediante esta presentación planeo mostrar los.
Características Objeto Relacionales en Oracle Francisco Moreno Universidad Nacional.
Bases de Datos SQL.
AA Gerardo Morgade Donato AA Isnel Leyva Herbella.
Base de Datos I – Ing. Mary Carlota Bernal J.
Administración de Base de Datos Procesamiento y Optimización de Consultas Prof Mercy Ospina Torres Prof Renny A. Hernandez
SQL: DDL.
Administración de Base de Datos Procesamiento y Optimización de Consultas Prof Mercy Ospina Torres Prof Renny A. Hernandez
INTEGRACION DE LAS TECNOLOGIAS DE LA INFORMACION Y COMUNICACION Implementación de base de datos (Lenguaje de manipulación de datos) Ing. Linda Masias Morales.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Structure Query Languaje SQL. Introducción a SQL El lenguaje de consulta estructurado (SQL) es un lenguaje de base de datos normalizado, utilizado por.
Administración de Base de Datos Procesamiento y Optimización de Consultas Prof Mercy Ospina Torres Prof Renny A. Hernandez
Querys a bases de datos con MS ACCESS. DEFINAMOS LOS TERMINOS: DML=Lenguaje de manipulación de datos Las sentencias DML permiten generar consultas para.
Base de Datos I – Ing. Mary Carlota Bernal J. BASE DE DATOS I Conversión del Modelo Entidad – Relación a Relacional.
Crear una tabla (create table - sp_tables - sp_columns - drop table) Para ver las tablas existentes creadas por los usuarios en una base de datos usamos.
SQL: structured Query Language
Transcripción de la presentación:

Expresiones algebraicas equivalentes Francisco Moreno

Dos expresiones del álgebra relacional, E1 y E2, son equivalentes si representan la misma relación: E1 E2

Sean E, E1, E2 y E3 expresiones del álgebra relacional. Conmutatividad para reunión natural, reunión y producto cartesiano. F es una condición que involucra atributos de E1 y E2. E1 ⋈E2E2 ⋈E1 E1 ⋈FE2E2 ⋈FE1 E1 x E2E2 x E1 Natural Join Reunión  La reunión  es E1 ⋈F E2  F(E1 x E2)

Asociatividad para las mismas tres operaciones. F1 y F2 son condiciones. (E1 ⋈E2 ⋈E3E1 ⋈E2 ⋈E3 (E1 ⋈F1E2 ⋈F2E3E1 ⋈F1E2 ⋈F2E3 (E1 x E2xE3E1 x E2 x E3 Donde: F1 involucra solo atributos de E1 y E2, F2 involucra solo atributos de E2 y E3

Las operaciones de unión en intersección también son conmutativas y asociativas: E1  E2  E2  E1 (E1  E2)  E3  E1  (E2  E3) E1  E2  E2  E1 (E1  E2)  E3  E1  (E2  E3)

Una consulta que involucra el join de N relaciones genera T(N). N Una consulta que involucra el join de N relaciones genera T(N) * N! planes diferentes de ejecución (planes basados solo en asociatividad y conmutatividad) T(N) es el número de formas en que una permutación particular se puede parentizar. Ej: si N = 4, T(4) = 5 entonces 5 * 4! = 120 planes Fórmula para obtener T(N)  Ver los números de Catalán

x1, …, xn(y1, …, yn (E)) x1, …, xn(E) Cascada de proyecciones. x1, …, xn(y1, …, yn (E)) x1, …, xn(E) Con x1, …, xn  y1, …, yn

F1(F2(E)) F2(F1(E)) Cascada de selecciones. F1(F2(E))  F2 ^ F1(E) Luego, se puede conmutar el lado izquierdo: F1(F2(E)) F2(F1(E))

Conmutando selecciones y proyecciones. Si F involucra solo atributos entre x1, …, xn entonces: x1, …, xn(F(E)) F(x1, …, xn(E)) De una manera más general, si F involucra atributos y1, …, ym  x1, …, xn: x1, …, xn(F (E)) x1, …, xn(F(x1, …, xn, y1, …, ym)(E))

Conmutando selecciones con el producto cartesiano. Si todos los atributos usados en F pertenecen a E1, entonces : F(E1 x E2 ) F(E1) x E2

F(E1 x E2) F1(E1) x F2(E2) Corolario 1: Si F = F1 ^ F2 , donde F1 involucra solo atributos de E1 y F2 involucra solo atributos de E2, entonces : F(E1 x E2) F1(E1) x F2(E2)

F(E1 x E2 ) F2(F1(E1) x (E2)) Corolario 2: Si F2 involucra atributos de ambas expresiones y F1 solo de E1, entonces: F(E1 x E2 ) F2(F1(E1) x (E2))

F(E1  E2 ) F(E1)  F(E2) Conmutando la selección con la unión. F(E1  E2 ) F(E1)  F(E2) Conmutando la selección con la intersección. F(E1  E2 ) F(E1)  F(E2)

F(E1 - E2 ) F(E1) - F(E2 ) Conmutando la selección con la diferencia. F(E1 - E2 ) F(E1) - F(E2 ) F(E1 - E2 ) F(E1) - E2

F(E1 ⋈ E2 ) F(E1) ⋈F(E2) Selección con reunión natural. Si F involucra únicamente atributos que son comunes a E1 y a E2, entonces : F(E1 ⋈ E2 ) F(E1) ⋈F(E2)

A1, …, An(E1 x E2)  B1, …, Bm(E1) x C1, …, Ck(E2) Conmutando la proyección con un producto cartesiano. Sean los atributos A1,…,An de los cuales B1,…,Bm aparecen en E1 y C1,…,Ck aparecen en E2, entonces : A1, …, An(E1 x E2)  B1, …, Bm(E1) x C1, …, Ck(E2)

A1, …, An(E1  E2 ) A1, …, An(E1)  A1, …, An(E2) Conmutando la proyección con la unión. A1, …, An(E1  E2 ) A1, …, An(E1)  A1, …, An(E2) Note que esta equivalencia no se cumple para la intersección ni para la diferencia (a menos que A1,…, An sean todos los atributos de las relaciones)

Un ejemplo concreto en Oracle: CREATE TABLE emp( cc NUMBER(8) PRIMARY KEY, dep NUMBER(5) NOT NULL, sal NUMBER(6) NOT NULL ); INSERT INTO emp VALUES(1, 5, 100); INSERT INTO emp VALUES(2, 5, 200); INSERT INTO emp VALUES(3, 7, 100); SET AUTOTRACE ON

Sea: Cada empleado con todos los empleados (producto cartesiano), pero solo se imprimen los datos de los empleados (e1): SELECT e1.* FROM emp e1, emp e2; En la siguiente consulta ¿el optimizador evita el producto? FROM emp e1, emp e2 WHERE e1.cc = e2.cc;

--Ahora sea: CREATE TABLE curso( cod NUMBER(8) PRIMARY KEY, nom VARCHAR2(10) NOT NULL ); INSERT INTO curso VALUES(1, 'Música'); INSERT INTO curso VALUES(2, 'Pintura');

Cada empleado con todos los cursos (producto cartesiano), pero solo se imprimen los datos de los empleados: SELECT e1.* FROM emp e1, curso; En la siguiente consulta ¿el optimizador evita el producto? SELECT DISTINCT e1.*

Otra prueba: Hacer un join entre las tablas A y B donde B tiene un atributo que es clave foránea con respecto a la clave primaria de A. Ver que sucede si solo se seleccionan en la consulta los datos de la tabla B.

Considere también transformaciones como las siguientes. “Imprimir el código de todos los empleados cuyos dptos. aparecen en la tabla dept” Compare estas dos consultas: SELECT idemp FROM emp WHERE dpto IN (SELECT dpto FROM dept); FROM emp e, dpto d WHERE e.dpto = d.dpto;