Top Banner
Expresiones algebraicas equivalentes Francisco Moreno
23

Expresiones algebraicas equivalentes Francisco Moreno.

Jan 24, 2016

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Expresiones algebraicas equivalentes Francisco Moreno.

Expresiones algebraicas equivalentes

Francisco Moreno

Page 2: Expresiones algebraicas equivalentes Francisco Moreno.

Dos expresiones del álgebra relacional, E1 y

E2, son equivalentes si representan la

misma relación:

E1 E2

Page 3: Expresiones algebraicas equivalentes Francisco Moreno.

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 ⋈E2E2 ⋈E1

E1 ⋈FE2E2 ⋈FE1

E1 x E2E2 x E1

La reunión es

E1 ⋈F E2 F(E1 x E2)

Natural Join

Reunión

Page 4: Expresiones algebraicas equivalentes Francisco Moreno.

• Asociatividad para las mismas tres

operaciones. F1 y F2 son condiciones.

(E1 ⋈E2 ⋈E3E1 ⋈E2 ⋈E3

(E1 ⋈F1E2 ⋈F2E3E1 ⋈F1E2 ⋈F2E3

(E1 x E2xE3E1 x E2 x E3

Donde: F1 involucra solo atributos de E1 y E2, F2 involucra solo atributos de E2 y E3

Page 5: Expresiones algebraicas equivalentes Francisco Moreno.

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

Page 6: Expresiones algebraicas equivalentes Francisco Moreno.

• 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

Page 7: Expresiones algebraicas equivalentes Francisco Moreno.

• Cascada de proyecciones.

x1, …, xn(y1, …, yn (E)) x1, …, xn(E)

Con x1, …, xn y1, …, yn

Page 8: Expresiones algebraicas equivalentes Francisco Moreno.

• Cascada de selecciones.

F1(F2(E)) F2 ^ F1(E)

Luego, se puede conmutar el lado izquierdo:

F1(F2(E)) F2(F1(E))

Page 9: Expresiones algebraicas equivalentes Francisco Moreno.

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

Page 10: Expresiones algebraicas equivalentes Francisco Moreno.

• 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

Page 11: Expresiones algebraicas equivalentes Francisco Moreno.

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

Page 12: Expresiones algebraicas equivalentes Francisco Moreno.

• Corolario 2:

Si F2 involucra atributos de ambas expresiones y F1 solo de E1, entonces:

F(E1 x E2 ) F2(F1(E1) x (E2))

Page 13: Expresiones algebraicas equivalentes Francisco Moreno.

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

Page 14: Expresiones algebraicas equivalentes Francisco Moreno.

• Conmutando la selección con la diferencia.

F(E1 - E2 ) F(E1) - F(E2 )

F(E1 - E2 ) F(E1) - E2

Page 15: Expresiones algebraicas equivalentes Francisco Moreno.

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

Page 16: Expresiones algebraicas equivalentes Francisco Moreno.

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

Page 17: Expresiones algebraicas equivalentes Francisco Moreno.

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

Page 18: Expresiones algebraicas equivalentes Francisco Moreno.

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

Page 19: Expresiones algebraicas equivalentes Francisco Moreno.

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?

SELECT e1.* FROM emp e1, emp e2WHERE e1.cc = e2.cc;

Page 20: Expresiones algebraicas equivalentes Francisco Moreno.

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

Page 21: Expresiones algebraicas equivalentes Francisco Moreno.

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.* FROM emp e1, curso;

Page 22: Expresiones algebraicas equivalentes Francisco Moreno.

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

Page 23: Expresiones algebraicas equivalentes Francisco Moreno.

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 idempFROM empWHERE dpto IN (SELECT dpto FROM dept);

SELECT idempFROM emp e, dpto dWHERE e.dpto = d.dpto;