Ir al contenido principal

Subquerys Parte 3

Transformación Estrella
Una extensión del uso de subquerys como alternativa a los JOINS es para la transformación estrella a menudo necesaria en aplicaciones Date Warehouse. Considere una gran tabla que almacena ventas. Cada venta tiene asociado un producto particular, un comprador y un canal. Estos atributos son identificados mediante códigos, mediante el uso de llaves foráneas la tabla puede describir el producto, en comprador y el canal. Necesitamos escribir una consulta de todas las ventas de libros de comprador de Alemania a través del canal internet.

select … from sales s, products p, buyers b, channels c
where s.prod_code=p.prod_code
and s.buy_code=b.buy_code
and s.chan_code=c.chan_code
and p.product=’Books’
and b.country=’Germany’
and c.channel=’Internet’;

Esta consulta utiliza la clausula WHERE para unir las tablas y luego filtrar el resultado. La siguiente es una alternativa utilizando subquerys.

select … from sales
where prod_code in (select prod_code from products where product=’Books’)
and buy_code in (select buy_code from buyers where country=’Germany’)
and chan_code in (select chan_code from channels where channel=’Internet);


Esta segunda forma de escritura de la consulta es la Transformación Estrella. Aparte de ser inherentemente más elegante, hay razones técnicas por la cual la base de datos puede ser capaz de ejecutarla más eficientemente que la consulta original. También las consultas estrella son más fáciles de mantener, y muy simple de agregar una nueva dimensión a la consulta o para remplaza las condiciones de filtrado.

Comentarios