Professional Documents
Culture Documents
Un
lenguaje de consulta es un lenguaje con el que los usuarios solicitan informacin de la BBDD.
Estos lenguajes suelen ser de nivel superior que el de los lenguajes de programacin habituales. Procedimientales
z
Clasificacin
El usuario indica al sistema que lleve a cabo una serie de operaciones en la BBDD para calcular el resultado. El usuario describe la informacin deseada sin dar un procedimiento concreto para obtener la informacin.
No procedimientales
z
parte de los esquemas de relaciones y se define un lenguaje de manipulacin de datos. Dentro de estos lenguajes podemos encontrar
lgebra Relacional (Procedimental) Clculo Relacional de Tuplas (No procedimental) Clculo Relacional de Dominios (No procedimental)
Estos
lenguajes son estrictos y formales y han servido como base para los lenguajes implementados en los SGBD comerciales que veremos posteriormente.
lgebra Relacional
Lenguaje de consulta procedimental basado en lgebra de conjuntos. Serie de operaciones que toman una o dos relaciones como entrada y generan una relacin como salida, pero siempre sin modificar los datos de la base de datos (es un lenguaje de consulta). Las operaciones son:
Seleccin Proyeccin Reunin (JOIN o producto cartesiano con condicin) Divisin Operaciones habituales de conjuntos: unin, interseccin, resta y producto cartesiano.
El conjunto completo (conjunto de operaciones que permiten realizar todas las operaciones posibles) en este lenguaje es: {unin, resta, producto cartesiano, seleccin, proyeccin}
Seleccin
La
operacin de seleccin da como resultado un conjunto de tuplas que cumplen la condicin de seleccin aplicada sobre la entrada.
condicin c.
R ser un esquema de relacin o una expresin que lo represente. c ser un conjunto de clusulas conectadas entre s mediante operadores booleanos (, , ). Cada clusula ser de la forma
z z
<nombre atributo> OPCOMP <nombre atributo> donde OPCOMP ser un operador de comparacin (=, , <, , >, )
El
resultado de la consulta es una seleccin con los mismos atributos que la original.
4
Seleccin (cont.)
Ejemplo:
base de datos de empleados. con sueldo superior a 1.200 : cuyos apellidos sean iguales:
Proyeccin
La
operacin de proyeccin devuelve las tuplas de la relacin que se le pasa como argumento, omitiendo ciertas columnas.
Los atributos que queramos obtener se colocan como subndice de la operacin, separados por comas.
atributos de la lista.
R ser un esquema de relacin o una expresin que lo represente. LISTA_ATRIBUTOS ser una sucesin de atributos separados por comas.
Una
proyeccin no repite tuplas porque su resultado es una relacin que a su vez es un conjunto de tuplas
Los conjuntos no repiten elementos Dos tuplas son iguales si son iguales componente a componente
Proyeccin (cont.)
Ejemplo:
base de datos de empleados (ejemplo anterior). DNI y sueldo de todos los empleados:
( EMP ) /* Tuplas de EMP con sueldo > 1200 */ /* DNI empleados con sueldo > 1200 */
( R1 )
Renombramiento
La
operacin de renombramiento permite cambiar el nombre del esquema y de las columnas de otro esquema.
R ser un esquema de relacin o una expresin que lo represente. E ser el nombre del esquema resultantes. LISTA_ATRIBUTOS ser una sucesin de atributos separados por comas. stos sern los nuevos nombres para los atributos definidos en el esquema R.
La
Renombramiento
Ejemplo:
Los atributos de una relacin se pueden renombrar para facilitar el manejo de atributos:
/* Renombramiento de DNI a D */ (EMP) /* Renombramiento de todos los atributos */
(EMP)
compatibles:
Mismo nmero de atributos y mismo dominio dos a dos: R1 (A1, A2, ... An) R2 (B1, B2, Bn)
Para todo i, 1 i n, Dom (Ai) = Dom (Bi)
El
resultado de estas operaciones ser otra relacin (no repite tuplas). En la relacin resultante, los atributos sern los de la relacin que pongamos como primer operando. Lo habitual es realizar uniones, intersecciones y restas con esquemas exactamente iguales.
10
EST (DNI_EST, NOMB_EST) PROF (DNI_PROF, NOMB_PROF) Personas que son alumnos o son profesores PER (DNI, NOMBRE) (EST (DNI, NOMBRE) (EST) PROF (DNI, NOMBRE)(PROF))
z z
Las tuplas resultantes pasaran a la relacin PER. Si hay algn alumno que es a la vez profesor y alumno slo aparecer una vez en la relacin PER.
11
Producto Cartesiano
Esta es una operacin binaria. No exige que las relaciones sean compatibles. R1 (A1, ..., An) R2 (B1, ..., Bm) R (A1, ..., An, B1, ..., Bm) La relacin resultante, R, contiene tuplas con los atributos de ambas relaciones. Pero esas tuplas son el resultado de combinar cada una de las tuplas de la primera relacin con todas las de la segunda.
Ejemplo: R1 (A1, ..., An) x1, ..., x1 x2, ..., x2 x3, ..., x3
R1 (A1, ..., An) R2 (B1, ..., Bm) x1, ..., x1,y1, ..., y1 x1, ..., x1, y2, ..., y2 x2, ..., x2, y1, ..., y1 x2, ..., x2, y2, ..., y2 x3, ..., x3, y1, ..., y1 x3, ..., x3, y2, ..., y2
12
Ejemplos
Ejemplo: para el siguiente esquema se pide obtener el DNI de los empleados que trabajan en el departamento Contabilidad.
EMP (DNI, NUMDEP) 123 456 235 987 1 2 2 1 1 2 DPTO (ND, NOMD) Ventas Contabilidad"
Pasos a seguir:
Combinar los datos de ambas tablas. Quedarse con las filas donde cada empleado aparezca junto a su departamento y adems el nombre del departamento sea Contabilidad Filtrar campos para obtener DNI.
13
Ejemplos
Solucin
1: 2:
/* Tuplas con NOMD = Contabilidad*/
14
Producto Cartesiano
En
P.
ej.:
EMP(DNI, NUM) DPTO(NUM, NOMD)
RES DNI (
15
Ejemplos
para el siguiente esquema se pide obtener el DNI de los empleados que trabajan en el departamento Contabilidad. DPTO (NUM, NOMD) EMP (DNI, NUM) solucin con renombramiento.
Ejemplo:
(NUM (R1))
/* Renombrado */
/* Prod. cartesiano */
16
Ejemplos
Para el siguiente esquema se pide obtener el nombre de los empleados que trabajan en proyectos dirigidos por Lpez. EMP (DNI, NOM) PROY (NP, DIRECTOR) TRABAJA ( DNIE, NPRO ) Observaciones:
Ejemplo:
El atributo que formar la relacin resultado est en EMP El atributo sobre el que se aplica la condicin est en PROY Se deben combinar los datos de las relaciones y luego filtrar para obtener aquellas filas donde los atributos de reunin coinciden, adems de aplicar las condiciones correspondientes.
17
Ejemplos
Solucin:
R2 TRABAJA R1 R4 DNIE (R3) R5 R4 EMP R6 DNI = DNIE (R5) RES NOM (R6)
/* Resultado final*/
18
Ejemplos
Ejemplo:
Para el siguiente esquema se pide obtener el DNI de los empleados cuyo supervisor gana ms de 2.000 .
EMP (DNI, SUELDO, DNISUPERVISOR)
Soluciones:
EMP1 (DNI1, S1, DNI_S1) (EMP) R1 EMP EMP1 R2 DNISUPERVISOR = DNI1 S1 > 2000 (R1) RES DNI (R2)
R1 SUELDO > 2000 (EMP) R2 (DNI_S) (DNI (R1)) R3 EMP R2 R4 DNISUPERVISOR = DNI_S (R3) RES DNI (R4)
19
Ejemplos
Ejemplo:
Para el siguiente esquema se pide obtener el DNI de los empleados con al menos dos hijos.
EMP (DNI, NOM) HIJOS (DNI,NOM)
Solucin:
R3 DNI1 = DNI NOM NOM1 (R2) /* Interesan tuplas as: 1 A 1 B (igual RES DNI (R3)
20
Ejemplos
Ejemplo: para el siguiente esquema se pide obtener el DNI de los empleados supervisados por DNI = 123 EMP (DNI, SUELDO, DNISUP)
DNI de los empleados supervisados a uno y dos niveles por DNI = 123
RES DNI ( DNISUP = 123 (EMP) ) /* DNI de los supervisados directamente */ R1 (DNI1) (DNI (DNISUP = 123 (EMP) )) R2 DNISUP = DNI1 (EMP R1) R3 DNI (R2) /* En R3 estn los DNI de los superv. a 2 niveles por 123. */ RES R1 R3 No se puede responder a empleados supervisados a cualquier nivel.
21
Reunin/Join
Operacin
condicin. R1 c R2 = conjunto de tuplas resultantes del producto cartesiano R1 R2 que cumplen la condicin c.
c es la condicin de reunin, y ser un conjunto de clusulas conectadas entre s mediante operadores booleanos (, , ), cada una de la forma
z z
<nombre atributo> OPCOMP <nombre atributo> donde OPCOMP ser un operador de comparacin (=, , <, , >, )
En
R2 c (R1 R2)
22
Reunin/Join
c (cont.)
La reunin entre dos relaciones puede dar como resultado el conjunto vaco si ninguna de las tuplas del producto cartesiano cumple la condicin de reunin. Las tuplas cuyos atributos de reunin sean nulos no aparecen en el resultado. Ejemplo: para el siguiente esquema se pide obtener el DNI de los empleados que trabajan en el departamento Contabilidad. EMP (DNI, NUMDEP) DPTO (ND, NOMD) Solucin:
R1 NOMD = Contabilidad (DPTO) /* Tuplas con NOMD = Contabilidad */ R2 EMP /* Tuplas de los empleados de NUMDEP = ND R1
Contabilidad. */
23
Reunin/Join Natural
Producto
cartesiano con condicin implcita: se seleccionan aquellas tuplas cuyos valores coincidan en los atributos con igual nombre.
Se eliminan los atributos duplicados Dados R1(r) y R2(s) donde Ai, 1<=i<=k son atributos comunes a R1 y R2
R1
R2 rs(R1.A1=R2.A1R1.Ak=R2.Ak(R1 R2)) R1 R2 R1 R2
24
Reunin/Join natural
Ejemplos:
(cont.)
EMP
z
25
Reunin/Join natural
Ejemplo:
(cont.)
dado el siguiente esquema, obtener el nombre de los propietarios de coches modelo Ferrari F50.
CLIENTES (DNI, NOM, DIR) COCHES (MATR, MODELO, ANIO) PROPIEDAD (DNI,MATR)
Solucin:
R2 PROPIEDAD
R1 R2)
26
Reunin/Join externa
Existen
dos variantes
Izquierda:
R1
R2,
Aade todas las tuplas de la relacin de la izquierda que no coinciden con ninguna tupla de la relacin de la derecha Estas tuplas aparecern con los atributos correspondientes a la relacin R2 con valor nulo.
Derecha:
R1
R2
27
La
RES (DNI, ND, NOMD) 123 456 235 1 2 2 Ventas Contabilidad" Contabilidad"
28
EMP
DPTO
RES (DNI, ND, NOMD) 123 456 235 1 2 2 3 Ventas Contabilidad" Contabilidad" Marketing
EMP
DPTO
RES (DNI, ND, NOMD) 123 456 235 987 1 2 2 4 Ventas Contabilidad" Contabilidad" 29
Divisin
Sean R1 y R2 dos esquemas de relacin, con X e Y como conjuntos de atributos respectivamente, para realizar la divisin debe ocurrir que Y sea subconjunto de X R1 (X) R2 (Y)
Una tupla u est en R1 R2 cuando para todo v de R2, la tupla que se obtiene al unir los valores de u y v est en R1. Matemticamente: R1 (A1, A2, ... , An) R2 (An-s, , An) R (A1, A2, , An-s-1)
Idea
Consultas en las que se busca que algn atributo de una relacin tome (al menos) todos los valores de otro atributo en otra relacin (para todo).
30
Divisin (cont.)
dado el siguiente esquema de relacin, obtener el DNI de los empleados que trabajan en todos los proyectos en los que trabaja el empleado con DNI = 123. EMP (DNI, NOM) TRAB (DNI, NPRO) Solucin:
Ejemplo:
/* NPRO de todos los proyectos en los que trabaja DNI=123 */ /* DNI tales que todas las concatenaciones de los DNI con los NPRO de TEMP existe en TRAB. */
31
Divisin (cont.)
TEMP (NPRO)
RES (DNI)
1 2
123 456
32
Divisin (cont.)
Ejemplo 2: obtener el DNI de los empleados que trabajan en todos los proyectos en los que trabaja el empleado con DNI = 123. EMP (DNI, NOM) Solucin 1:
z
/* NPRO de todos los proyectos en los que trabaja DNI=123 */ /* CONJUNTO VACO (probablemente) */
Solucin 2:
/* NPRO de todos los proyectos en los que trabaja DNI=123 */ /* Todas la tuplas DNI, NPRO */ /* DNI de los empleados que trabajan todos los proyectos en que trabaja 123 */
33
RES R2 R1
z
valores nulos afectan a las diferentes operaciones del lgebra relacional. Cualquier comparacin (=, , <, , >, ) que incluya un valor nulo, tiene como resultado un valor desconocido. Los valores nulos tambin pueden aparecer en operaciones booleanas
NULO cierto = desconocido , NULO falso = falso, NULO NULO = desconocido NULO cierto = cierto , NULO falso = desconocido, NULO NULO = desconocido NULO = desconocido
34
Si la evaluacin del predicado sobre una tupla devuelve cierto, la tupla se incluye en el resultado en otro caso (falso o desconocido), no se incluye. La operacin de proyeccin trata los nulos como cualquier otro valor a la hora de eliminar duplicados. Si una parte de valores de las tuplas coinciden y las dos tienen valores nulos en el resto, se tratan como duplicados.
Proyeccin
Unin,
interseccin y diferencia
35
Se utiliza la equivalencia reunin = seleccin(producto cartesiano) Por tanto dos tuplas con valor nulo en el atributo comn no coinciden.
Reunin
externa
Funciona de manera similar para aquellas tuplas que cumplan las condiciones de reunin. Para el resto de tuplas, dependiendo del tipo de reunin externa, se incluirn el resto de tuplas rellenando con valores nulos.
36