Expresiones algebraicas equivalentes Francisco Moreno.
-
Upload
adolfo-herrero-crespo -
Category
Documents
-
view
236 -
download
0
Transcript of Expresiones algebraicas equivalentes Francisco Moreno.
![Page 1: Expresiones algebraicas equivalentes Francisco Moreno.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/1.jpg)
Expresiones algebraicas equivalentes
Francisco Moreno
![Page 2: Expresiones algebraicas equivalentes Francisco Moreno.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/2.jpg)
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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/3.jpg)
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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/4.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/5.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/6.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/7.jpg)
• Cascada de proyecciones.
x1, …, xn(y1, …, yn (E)) x1, …, xn(E)
Con x1, …, xn y1, …, yn
![Page 8: Expresiones algebraicas equivalentes Francisco Moreno.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/8.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/9.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/10.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/11.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/12.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/13.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/14.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/15.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/16.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/17.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/18.jpg)
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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/19.jpg)
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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/20.jpg)
--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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/21.jpg)
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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/22.jpg)
• 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.](https://reader035.fdocuments.mx/reader035/viewer/2022081504/5665b49c1a28abb57c92a45f/html5/thumbnails/23.jpg)
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;