Sei sulla pagina 1di 3

FUNDAMENTOS DE BASES DE DATOS

Si A contiene atributos A1 de r y A2 de s, entonces V (A, r s) se estima como min (V (A1, r) * V (A2 A1, s), V (A1 A2, r) * V (A2, s), n r s ) Obsrvese que algunos atributos pueden estar en A1 y en A2, y que A1-A2 y A2-A1 denotan, respectivamente, a los atributos de A que slo proceden de r y a los atributos de A que slo proceden de s. Nuevamente, se pueden obtener estimaciones ms precisas utilizando la teora de la probabilidad, pero las aproximaciones anteriores funcionan bastante bien.

Las estimaciones de los distintos valores son directas para las proyecciones: son iguales en #A (r) que en r. Lo mismo resulta vlido para los atributos de agrupacin de las agregaciones. Para los resultados de suma, cuenta y promedio, se puede suponer, por sencillez, que todos los valores agregados son distintos. Para min (A) y max (A), el nmero de valores distintos puede estimarse como min (V (A, r), V (G, r)), donde G denota los atributos de agrupamiento. Se omiten los detalles de la estimacin de los valores distintos para otras operaciones.

14.3. TRANSFORMACIN DE EXPRESIONES RELACIONALES


Hasta ahora se han estudiado los algoritmos para evaluar las operaciones extendidas del lgebra relacional y hacer estimaciones de sus costes. Como se mencion al comienzo de este captulo, las consultas se pueden expresar de varias maneras diferentes, con costes de evaluacin diferentes. En este apartado, en lugar de tomar la expresin relacional como se da, se consideran expresiones alternativas equivalentes. Se dice que dos expresiones del lgebra relacional son equivalentes si, en cada ejemplar legal de la base de datos, las dos expresiones generan el mismo conjunto de tuplas. (Recurdese que un ejemplar legal de la base de datos es la que satisface todas las restricciones de integridad especicadas en el esquema de la base de datos.) Obsrvese que el orden de las tuplas resulta irrelevante; puede que las dos expresiones generen las tuplas en rdenes diferentes, pero se considerarn equivalentes siempre que el conjunto de tuplas sea el mismo. En SQL las entradas y las salidas son multiconjuntos de tuplas, y se utiliza la versin para multiconjuntos del lgebra relacional para evaluar las consultas de SQL. Se dice que dos expresiones de la versin para multiconjuntos del lgebra relacional son equivalentes si en cada base de datos legal las dos expresiones generan el mismo multiconjunto de tuplas. El estudio de este captulo se basa en el lgebra relacional. Las extensiones a la versin para multiconjuntos del lgebra relacional se dejan al lector como ejercicios.
14.3.1. Reglas de equivalencia

A continuacin se relacionan varias reglas generales de equivalencia para las expresiones del lgebra relacional. Algunas de las equivalencias relacionadas aparecen en la Figura 14.2. Se utilizan $, $1, $2, etctera, para denotar los predicados, L1, L2, L3, etctera, para denotar las listas de atributos y E, E1,E2, etctera, para denotar las expresiones del lgebra relacional. El nombre de relacin r no es ms que un caso especial de expresin del lgebra relacional y puede utilizarse siempre que aparezca E. 1. Las operaciones de seleccin conjuntivas pueden dividirse en una secuencia de selecciones individuales. Esta transformacin se denomina cascada de ".

"$1@$ 2 (E) = "$1 ("$ 2 (E))

Regla 5

E1

E2

E2

E1

Regla 6a E3

E1

Una regla de equivalencia dice que las expresiones de dos formas son equivalentes. Se puede sustituir una expresin de la primera forma por una expresin de la segunda forma, o viceversa es decir, se puede sustituir una expresin de la segunda forma por una expresin de la primera forma, ya que las dos expresiones generan el mismo resultado en cualquier base de datos vlida. El optimizador utiliza las reglas de equivalencia para transformar las expresiones en otras equivalentes lgicamente.
348

E1

E2

E2 Regla 7a Si $ slo contiene atributos de E1

E3

"$

"$
E1

E2

E1

E2

FIGURA 14.2. Representacin grca de las equivalencias.

CAPTULO 14

OPTIMIZACIN DE CONSULTAS

2. Las operaciones de seleccin son conmutativas.

"$ 1 ("$ 2 (E)) = "$ 2 ("$1 (E))


3. Slo son necesarias las ltimas operaciones de una secuencia de operaciones de proyeccin, las dems pueden omitirse. Esta transformacin tambin puede denominarse cascada de #. #L1 (#L 2 ( (#L1 (E)) )) = #L1 (E) 4. Las selecciones pueden combinarse con los productos cartesianos y con las reuniones zeta. a. "$ (E1 E2) = E1 $ E2 Esta expresin es precisamente la denicin de la reunin zeta. b. "$ 1 (E1 $ 2 E2) = E1 $1 @ $ 2 E2 5. Las operaciones de reunin zeta son conmutativas. E1
$

a. Se distribuye cuando todos los atributos de la condicin de seleccin $0 implican nicamente los atributos de una de las expresiones (por ejemplo, E1) que se estn reuniendo.

"$ 0 (E1

E2) = ("$ 0 (E1))

E2

b. Se distribuye cuando la condicin de seleccin $1 implica nicamente los atributos de E1 y $2 implica nicamente los atributos de E2.

"$ 1 @ $ 2 (E1

E2) = ("$ 1 (E1))

("$ 2 (E2))

8. La operacin proyeccin se distribuye por la operacin de reunin zeta bajo las condiciones siguientes. a. Sean L1 y L2 atributos de E1 y de E2, respectivamente. Supngase que la condicin de reunin $ implica nicamente los atributos de L1 ' L 2. Entonces, !L1 ' L 2 (E1 $ E2) = = (#L1(E1)) $ (#L 2 (E2)) b. Considrese una reunin E1 $ E2. Sean L1 y L 2 conjuntos de atributos de E1 y de E2, respectivamente. Sean L3 los atributos de E1 que estn implicados en la condicin de reunin $, pero que no estn en L1 ' L 2, y sean L4 los atributos de E2 que estn implicados en la condicin de reunin $, pero que no estn en L1 ' L 2. Entonces, #L1 ' L 2 (E1 = #L1 ' L 2 ((#L1 ' L 3 (E1))
$

E2 = E2

E1

Realmente, el orden de los atributos es diferente en el trmino de la derecha y en el de la izquierda, por lo que la equivalencia no se cumple si se tiene en cuenta el orden de los atributos. Se puede aadir una operacin de proyeccin a uno de los lados de la equivalencia para reordenar los atributos de la manera adecuada, pero por simplicidad se omite la proyeccin y se ignora el orden de los atributos en la mayor parte de los ejemplos. Recurdese que el operador de reunin natural es simplemente un caso especial del operador de reunin zeta; por tanto, las reuniones naturales tambin son conmutativas. 6. a. Las operaciones de reunin natural son asociativas. (E1 E2) E3 = E1 (E2 E3) b. Las reuniones zeta son asociativas en el sentido siguiente: (E1 = E1
$1

E2) = $ (#L 2 ' L4 (E2)))

9. Las operaciones de conjuntos unin e interseccin son conmutativas. E1 ' E2 = E2 ' E1 E1 % E2 = E2 % E1 La diferencia de conjuntos no es conmutativa. 10. La unin y la interseccin de conjuntos son asociativas. (E1 ' E2) ' E3 = E1 ' (E2 ' E3) (E1 % E2) % E3 = E1 % (E2 % E3) 11. La operacin de seleccin se distribuye por las operaciones de unin, interseccin y diferencia de conjuntos.

E2)

$2 @ $3

$1 @ $ 3

(E2

E3 = $ 2 E3)

donde $2 implica solamente atributos de E2 y de E3. Cualquiera de estas condiciones puede estar vaca; por tanto, se deduce que la operacin producto cartesiano () tambin es asociativa. La conmutatividad y la asociatividad de las operaciones de reunin son importantes para la reordenacin de las reuniones en la optimizacin de las consultas. 7. La operacin de seleccin se distribuye por la operacin de reunin zeta bajo las dos condiciones siguientes:
349

"P (E1 E2) = "P (E1) "P (E2)


De manera parecida, la equivalencia anterior, con sustituido por ' o por %, tambin es vlida. Adems,

"P (E1 E2) = "P (E1) E2

FUNDAMENTOS DE BASES DE DATOS

La equivalencia anterior, con sustituido por %, tambin es vlida, pero no se cumple si se sustituye por '. 12. La operacin de proyeccin se distribuye por la operacin unin. !L (E1 ' E2) = (#L (E1)) ' (#L (E2)) sta es slo una lista parcial de las equivalencias. En los ejercicios se discuten ms equivalencias que implican a los operadores relacionales extendidos, como la reunin externa y la agregacin.
14.3.2. Ejemplos de transformaciones

regla 6.a (asociatividad de la reunin natural) para transformar la reunin sucursal (cuenta impositor) en (sucursal cuenta) impositor: !nombre-cliente ("ciudad-sucursal = Arganzuela @ saldo >1000 ((sucursal cuenta) impositor)) Luego, empleando la regla 7.a, se puede reescribir la consulta como !nombre-cliente (("ciudad-sucursal = Arganzuela @ saldo>1000 (sucursal cuenta)) impositor) Examinemos ahora la subexpresin de seleccin de esta expresin. Empleando la regla 1 se puede partir la seleccin en dos, para obtener la subexpresin siguiente:

Ahora se ilustrar el empleo de las reglas de equivalencia. Se utilizar el ejemplo del banco con los esquemas de relaciones: Esquema-sucursal = (nombre-sucursal, ciudad-sucursal, activo) Esquema-cuenta = (nmero-cuenta, nombre-sucursal, saldo) Esquema-impositor = (nombre-cliente, nmero-cuenta) Las relaciones sucursal, cuenta e impositor son ejemplos de estos esquemas. En el ejemplo del Apartado 14.1 la expresin !nombre-cliente ("ciudad-sucursal = Arganzuela (sucursal (cuenta impositor))) se transform en la expresin siguiente, ! nombre-cliente ((" ciudad-sucursal = Arganzuela (sucursal)) (cuenta impositor)) que es equivalente a la expresin algebraica original, pero que genera relaciones intermedias de menor tamao. Esta transformacin se puede llevar a cabo empleando la regla 7.a. Recurdese que la regla slo dice que las dos expresiones son equivalentes; no dice que una sea mejor que la otra. Se pueden utilizar varias reglas de equivalencia, una tras otra, sobre una consulta o sobre partes de una consulta. Como ejemplo, supngase que se modica la consulta original para restringir la atencin a los clientes que tienen un saldo superior a 1.000 . La nueva consulta del lgebra relacional es !nombre-cliente ("ciudad-sucursal =Arganzuela @ saldo >1000 (sucursal (cuenta impositor))) No se puede aplicar el predicado de la seleccin directamente a la relacin sucursal, ya que el predicado implica atributos tanto de la relacin sucursal como de la relacin cuenta. No obstante, se puede aplicar antes la
350

"ciudad-sucursal = Arganzuela ("saldo >1000 (sucursal cuenta))


Las dos expresiones anteriores seleccionan tuplas con ciudad-sucursal = Arganzuela y saldo > 1000. Sin embargo, la ltima forma de la expresin ofrece una nueva oportunidad de aplicar la regla llevar a cabo primero las selecciones, que da lugar a la subexpresin

"ciudad-sucursal =Arganzuela (sucursal) "saldo>1000 (cuenta)


La Figura 14.3 muestra la expresin inicial y la expresin nal despus de todas estas transformaciones. Tambin se podra haber utilizado la regla 7.b para obtener directamente la expresin final, sin utilizar la regla 1 para partir la seleccin en dos selecciones. De hecho, la regla 7.b puede obtenerse de las reglas 1 y 7.a. Se dice que un conjunto de reglas de equivalencia es mnimo si no se puede obtener ninguna regla a partir de una reunin de las dems. El ejemplo anterior muestra que el conjunto de reglas de equivalencia del Apartado 14.3.1 no es mnimo. Se puede generar una expresin equivalente a la original de diferentes maneras; el nmero de maneras diferentes de generar una expresin aumenta cuando se utiliza un conjunto de reglas de equivalencia que no es mnimo. Los optimizadores de consultas, por tanto, utilizan conjuntos mnimos de reglas de equivalencia. Considrese ahora la siguiente forma de la consulta de ejemplo: !nombre-cliente (("ciudad-sucursal = Arganzuela (sucursal) cuenta) impositor)

Cuando se calcula la subexpresin ("ciudad-sucursal = Arganzuela (sucursal) cuenta) se obtiene una relacin cuyo esquema es (nombre-sucursal, ciudad-sucursal, activo, nmero-cuenta, saldo)

Potrebbero piacerti anche