Está en la página 1de 31

1

GESTIN DE DATOS 2012


- Clase 6 -

Esquema del banco


2

Sucursal = (nombreSucursal, ciudad, activos) Cliente= (idCliente, nombre, calle, ciudad) Cuenta= (nroCuenta, nombreSucursal, saldo) PoseeCuenta= (idCliente, nroCuenta) Prstamo= (nroPrstamo, nombreSucursal, importe) PoseePrstamo= (idCliente, nroPrstamo)

Esquema del banco


3

Tabla Cliente
idCliente 19.283.746 1.928.374 nombre Gonzalez Gmez calle Arenal Carretas ciudad La Granja Junn nroPrstamo P-15 P-10

Tabla Prstamo
nombreSucursal Ro Centro importe 50000 7000

Tabla PoseeCuenta
idCliente 19.283.746 19.283.746 1.928.374 67.789.901 nroCuenta C-101 C-201 C-215 C-102

67.789.901 18.273.609
32.112.312 33.666.999 25.123.456 23.928.374

Lpez Abril
Santos Ruprez Daz Prez

Mayor Preciados
Mayor Ramblas Corrientes Maip

Pergamino Valsain
Pergamino Len La Plata Junn

P-30 P-20

Centro Sur

40000 3500

18.273.609
32.112.312 23.928.374

C-305
C-217 C-201

Tabla Sucursal
nombreSucursal ciudad Crdoba Paran Neuqun Paran Paran La Plata activos 50.000.000 38.000.000 16.000.000 33.000.000 65.000.000 55.000.000

Tabla Cuenta
nroCuenta nombreSucursal saldo

Centro Ro Sur Avenida Casino Este

Tabla PoseePrstamo
idCliente 19.283.746 1.928.374 18.273.609 33.666.999 23.928.374 nroPrstamo P-30 P-10 P-20 P-15 P-10

C-101
C-215 C-102 C-305 C-201 C-217

Centro
Ro Centro Centro Sur Ro

500
700 400 350 900 750

Oeste

La Plata

43.000.000

Operadores adicionales del lgebra Relacional


4

Adems de los seis operadores bsicos definidos, existen otros operadores que otorgan mayor expresividad al lgebra Relacional, facilitando en muchos casos la construccin de las operaciones de consulta. A continuacin se describen cuatro operaciones adicionales: reunin natural, interseccin, asignacin y divisin.

Operadores adicionales del lgebra Relacional: Reunin natural


5

El formato genrico es: tabla1|x|tabla2

Rene las tuplas de la primera tabla que se relacionan con la segunda tabla, descartando las tuplas no relacionadas. Entre las tablas debe existir un atributo comn. De no existir el atributo comn, el producto natural y el producto cartesiano actan de la misma forma. Es asociativa.

Operadores adicionales del lgebra Relacional: Producto natural


6

Ejemplo: Hallar los identificadores de los clientes que tienen prstamo en el banco y averiguar su nmero de prstamo y el importe

idCliente,nroPrstamo,importe(PoseePrstamo |x | Prstamo)
Tabla PoseePrstamo
idCliente 19.283.746 1.928.374 18.273.609 33.666.999 23.928.374 nroPrstamo P-30 P-10 P-20 P-15 P-10 nroPrstamo

Tabla Prstamo
nombreSucursal importe

idCliente 19.283.746

nroPrstamo P-30

importe 40000

P-15
P-10 P-30 P-20

Ro
Centro Centro Sur

50000
7000 40000 3500

1.928.374
18.273.609 33.666.999 23.928.374

P-10
P-20 P-15 P-10

7000
3500 50000 7000

Operadores adicionales del lgebra Relacional: Interseccin


7

El formato genrico es:


U

tabla1

tabla2

Genera una nueva tabla con las tuplas comunes a ambas tablas. Las tablas deben ser de unin compatibles; en su defecto, el resultado ser una tabla vaca. Es un operador adicional, debido a que es posible obtener la interseccin a partir de la diferencia: A B = A (A B)

Operadores adicionales del lgebra Relacional: Interseccin


8

Ejemplo: Conocer todos los identificadores de los clientes que tienen prstamo y cuenta en el banco
U

idCliente(PoseePrstamo)
Tabla PoseeCuenta
idCliente 19.283.746 nroCuenta C-101

idCliente(PoseeCuenta)
idCliente 19.283.746 1.928.374 18.273.609 23.928.374

Tabla PoseePrstamo
idCliente 19.283.746 nroPrstamo P-30

19.283.746
1.928.374 67.789.901 18.273.609 32.112.312

C-201
C-215 C-102 C-305 C-217

1.928.374
18.273.609 33.666.999 23.928.374

P-10
P-20 P-15 P-10

23.928.374

C-201

Operadores adicionales del lgebra Relacional: Divisin


9

El formato genrico es:


tabla1

Genera una nueva tabla con los valores de atributos de tabla1 que se relacionan con todas las tuplas de tabla2. El esquema de la tabla2 debe estar incluido en el esquema de la tabla1, es decir todos los atributos de la tabla2 deben ser atributos de la tabla1.

tabla2

Operadores adicionales del lgebra Relacional: Divisin


10

Ejemplo
tabla1

Y Y1 Y2

X X1 X3

X1 Y1 X1 Y2 X2 Y1

X3 Y2
X3 Y1

X4 Y2

tabla1

tabla2

tabla2

Operadores adicionales del lgebra Relacional: Divisin


11

Ejemplo: Hallar a todos los identificadores de clientes que tengan abierta una cuenta en todas las sucursales ubicadas en la ciudad de Crdoba.

idCliente,nombreSucursal (PoseeCuenta|X|Cuenta) nombreSucursal ( ciudad=Crdoba (Sucursal))

Operadores adicionales del lgebra Relacional: Asignacin


12

El formato genrico es: variable temporal expresin

Tiene como objetivo otorgar mayor legibilidad a las consultas. Vuelca el resultado de una consulta en una variable temporal de tabla, la cual puede ser utilizada posteriormente. Con la asignacin se pueden escribir las consultas como programas secuenciales que constan de una serie de asignaciones seguida de una expresin cuyo valor se muestra como resultado de la consulta.

Actualizaciones utilizando lgebra Relacional


13

Altas: Permite agregar una nueva tupla a una tabla existente. tabla tabla U {atributo1, atributo2,}

Bajas: Permite quitar una tupla entera de una tabla existente. tabla tabla - predicado(tabla)

Ejercicios adicionales utilizando lgebra Relacional


14

A partir del siguiente esquema, resolver las consultas.


Alumnos = (idAlumno, nombre, dni, idLocalidad, idCarrera) Materias = (idMateria, nombre, aoQueSeCursa, idCarrera) Carrera = (idCarrera, nombre, duracinAos) Inscripciones = (idInscripcin, idAlumno, idMateria, ao, resultado) Localidades = (idLocalidad, nombre)
1.
2. 3. 4.

Presentar todos los nombres de los alumnos que cursan la carrera de Sistemas y viven en la localidad de Ayacucho. Presentar el nombre de los alumnos que tengan aprobada alguna materia de tercer ao de cualquier carrera. Obtener los nombres de los alumnos que cursan la misma carrera que el alumno con id igual a 4444. Obtener los id de todos los alumnos que se inscribieron en todas las materias de la carrera con id igual a 45.

Optimizacin de consultas
15

Una consulta en lgebra relacional o en SQL puede ser resuelta de maneras diferentes sin afectar el resultado final.
En general, el diseador de la consulta centra su objetivo en obtener el resultado, en vez de analizar con detalle cul sera la mejor secuencia de pasos a aplicar para lograr una solucin en el menor tiempo de respuesta posible.

Optimizacin de consultas
16

La optimizacin de consultas es el proceso de seleccin del plan de evaluacin de las consultas ms eficiente de entre las muchas estrategias generalmente disponibles para el procesamiento de una consulta dada, especialmente si la consulta es compleja. Los SGBD presentan, en general, un optimizador de consultas.

Optimizacin de consultas. Anlisis de


procesamiento de consultas.
17

Esquemticamente:

Usuario

Consulta

Consulta
optimizada

Optimizador

Optimizacin de consultas. Anlisis de


procesamiento de consultas.
18

El proceso de optimizacin de consultas comienza con la consulta generada por el usuario, aplicando la siguiente secuencia de pasos:
1.

2.
3.

Un analizador sintctico (parser) genera una expresin manipulable por el optimizador de consultas. El anlisis sintctico convierte al texto de entrada -en este caso, la consulta del usuario- en una estructura tipo rbol, que resulta ms til para su anlisis. A partir de la expresin interna, el optimizador obtiene una consulta equivalente ms eficiente. Por ltimo, el proceso de optimizacin considera el estado actual de la Base de Datos y los ndices definidos, para resolver la consulta que se tiene hasta el momento, con el acceso a disco posible.

Optimizacin de consultas. Medicin del


costo de consultas.
19

Para analizar con detalle el comportamiento del optimizador de consultas, se considera el nmero de accesos a disco como el factor determinante para estudiar la eficiencia de un mtodo. As, si una consulta genera 1000 tuplas intermedias y se la compara con una alternativa que slo genera 100, la segunda solucin ser considerada ms eficiente debido a que el acceso a 100 tuplas es ms rpido que el acceso a 1000 tuplas.

Optimizacin de consultas. Evaluacin


de operaciones.
20

El proceso de optimizacin de consultas comienza analizando la consulta generada por el analizador sintctico.
Para analizar las operaciones involucradas en la consulta se utilizar el lgebra Relacional porque este lenguaje resulta ms claro para explicar el comportamiento.

Optimizacin de consultas. Evaluacin


de operaciones.
21

Operacin de seleccin:

Efectuarla lo antes posible. Consideremos las tablas: Alumnos=(idAlumno, nombre, DNI,idLocalidad, idCarrera) Localidades=(idLocalidad, nombre) La consulta es Obtener los DNI de los alumnos de La Plata.
DNI ( Localidades.nombre = La Plata (Alumnos |x| Localidades))

La siguiente expresin es equivalente.


DNI (Alumnos |x|( Localidades.nombre = La Plata (Localidades)))

Optimizacin de consultas. Evaluacin


de operaciones.
22

Operacin de seleccin:

Intentar descomponer el predicado. Nuevamente, consideremos la tabla: Alumnos=(idAlumno, nombre, DNI,idLocalidad, idCarrera) La consulta es Obtener los nombres de los alumnos de la localidad con id igual a 1, que estn cursando la carrera cuyo id es 3.
nombre ( idCarrera = 3 AND idLocalidad = 1 (Alumnos))

La siguiente expresin es equivalente.


nombre ( idCarrera = 3 ( idLocalidad = 1 (Alumnos)))

Optimizacin de consultas. Evaluacin


de operaciones.
23

Operacin de proyeccin:

En lneas generales, el anlisis de una proyeccin indica que esta operacin tambin debera realizarse lo antes posible. La proyeccin reduce el tamao de cada tupla, esto significa que cada tupla ocupar menos espacio en el buffer en memoria y, por consiguiente, ser posible almacenar ms elementos.

Optimizacin de consultas. Evaluacin


de operaciones.
24

Operacin de producto natural:

Expresiones del tipo tabla1 |x| tabla2 |x| tabla3, deben intentar resolverse en pasos, es decir, resulta ms eficiente resolver primero tabla1 |x| tabla2 y con el resultado obtenido realizar el producto natural con la tabla restante. Desde el punto de vista de performance, resulta tabla1 |x| tabla2 <> tabla2 |x| tabla1 (lo analizamos luego)

Optimizacin de consultas. Evaluacin


de operaciones.
25

Tabla de expresiones equivalentes.


Consulta original predicado (tabla1 x tabla2) predicado1 AND predicado2 (tabla1) predicado (tabla1 U tabla2) predicado (tabla1 - tabla2) (tabla1 |x| tabla2 |x| tabla3) (tabla1 |x| tabla2 ) Expresin equivalente ms eficiente predicado (tabla1) x predicado (tabla2) predicado1 ( predicado2 (tabla1)) predicado (tabla1) U predicado (tabla2) predicado (tabla1) - predicado (tabla2) ((tabla1 |x| tabla2) |x| tabla3) (tabla2 |x| tabla1 )

Optimizacin de consultas. Medicin del


costo de consultas.
26

Para el anlisis del costo de las consultas, veremos algunos conceptos genricos que tienen que ver con el estado temporal de cada tabla de datos, los que permiten definir algunos valores:

CTtabla: Indica la cantidad de tuplas que actualmente tiene la tabla. CBtabla: Indica el tamao en bytes de cada tupla de la tabla. CV (a, tabla): Indica cuntos valores diferentes existen en la tabla para el atributo a.

Optimizacin de consultas. Evaluacin


del costo de las operaciones.
27

Costo de la operacin de seleccin:

Sea la expresin

atributod = valor (tabla1)


El tamao en bytes de cada tupla es CBtabla, debido a que no se genera proyeccin alguna. Para analizar la cantidad de tuplas resultantes, se tendr en cuenta el CV(atributo, tabla), y se supondr que la distribucin de valores es uniforme. Con 1000 tuplas y con 20 valores diferentes para el atributo1, son esperables 50 (1000/20) tuplas para cada valor diferente. Como conclusin, la cantidad de tuplas esperables de la consulta planteada ser: CTtabla1 / CV(atributo, tabla1)

Optimizacin de consultas. Evaluacin


del costo de las operaciones.
28

Costo de la operacin de proyeccin:

La operacin de proyeccin no afecta la cantidad de tuplas del resultado. As, la expresin

atributo (tabla1)
genera CTtabla1 tuplas, pero el tamao en bytes de las tuplas resultantes se reduce al espacio que requiere el dominio del atributo proyectado.

Optimizacin de consultas. Evaluacin


del costo de las operaciones.
29

Costo de la operacin de producto cartesiano:

La expresin

tabla1 x tabla2
genera tuplas de tamao (CBtabla1 + CBtabla2), debido a que cada tupla de tabla1 se agrupa con cada tupla de tabla2. Por esa misma causa, la cantidad de tuplas obtenidas ser (CTtabla1 * CTtabla2).

Optimizacin de consultas. Evaluacin


del costo de las operaciones.
30

Costo de la operacin de producto natural:

Supongamos que entre tabla1 y tabla2 existe un atributo comn, A. Este atributo es clave primaria en tabla1 y clave secundaria en tabla2. Si se realiza

tabla2 |x| tabla1


cada tupla t de tabla2 se rene con una y slo una tupla de tabla1. El atributo comn A es clave primaria en tabla1; por lo tanto, el valor que tiene A en tabla2 slo aparece una vez en tabla1. Adems, la bsqueda se realiza por clave primaria; por lo tanto, la respuesta es ptima.

Optimizacin de consultas. Evaluacin


del costo de las operaciones.
31

Costo de la operacin de producto natural:

Si se realiza

tabla1 |x| tabla2


el atributo A en tabla2 es clave secundaria; por lo tanto se administra como un ndice secundario. Las bsquedas en ndices secundarios son ms lentas y, adems, una tupla t de tabla1 se rene con varias tuplas de tabla2. Se concluye que cuando el producto natural se realiza entre dos tablas y el atributo comn es clave primaria en una de las tablas y clave secundaria en otra, conviene siempre realizar la operacin entre la tabla con clave secundaria sobre la tabla con clave primaria.

También podría gustarte