La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Lenguajes Formales de Consulta

Presentaciones similares


Presentación del tema: "Lenguajes Formales de Consulta"— Transcripción de la presentación:

1 Lenguajes Formales de Consulta
Base de Datos I

2 Lenguajes Formales de Consulta
Lenguaje de consulta Es un lenguaje con el que los usuarios solicitan información de la BD. Estos lenguajes suelen ser de nivel superior que el de los lenguajes de programación habituales.

3 Lenguajes Formales de Consulta
Clasificación Procedimentales No procedimentales

4 Lenguajes Formales de Consulta
Clasificación Procedimentales El usuario indica al sistema que lleve a cabo una serie de operaciones en la BD para calcular el resultado.

5 Lenguajes Formales de Consulta
Clasificación No procedimentales El usuario describe la información deseada sin dar un procedimiento concreto para obtener la información.

6 Lenguajes Formales de Consulta
Dentro de estos lenguajes podemos encontrar: Álgebra Relacional (Procedimental) Cálculo Relacional de Tuplas (No procedimental) Cálculo Relacional de Dominios (No procedimental)

7 Lenguajes Formales de Consulta
Estos lenguajes son estrictos y formales, han servido como base para los lenguajes implementados en los SGBD comerciales.

8 Algebra Relacional Lenguaje de consulta procedimental basado en álgebra de conjuntos. Serie de operaciones que toman una o dos relaciones como entrada y generan una relación como salida, pero siempre sin modificar los de la base de datos (es un lenguaje de consulta).

9 Algebra Relacional Las operaciones son: Selección Proyección
Reunión (JOIN o producto cartesiano con condición) División Operaciones habituales de conjuntos: unión, intersección, resta y producto cartesiano.

10 Selección σ La operación de selección da como resultado un conjunto de tuplas que cumplen la condición de selección aplicada sobre la entrada.

11 σc(R)= conjunto de tuplas de la relación R que cumplen la condición c.
Selección σ σc(R)= conjunto de tuplas de la relación R que cumplen la condición c. Donde: R será un esquema de relación o una expresión que lo represente. c será un conjunto de cláusulas conectadas entre sí mediante operadores booleanos (∧, ∨, ¬).

12 <nombre atributo> OPCOMP <nombre atributo>
Selección σ Cada cláusula será de la forma: <nombre atributo> OPCOMP <nombre atributo> Donde: OPCOMP será un operador de comparación (=, ≠, <, ≤, >, ≥) El resultado de la consulta es una selección con los mismos atributos que la original.

13 EMP (DNI, NOM, AP1, AP2, SUELDO)
Selección σ Ejemplo: base de datos de empleados. EMP (DNI, NOM, AP1, AP2, SUELDO) Empleados con sueldo superior a $1200 σSUELDO> 1200 (EMP) Empleados cuyos apellidos sean iguales: σAP1= AP2 (EMP) Empleados con sueldo superior a $1200 cuyos apellidos sean iguales: σ (SUELDO > 1200) ∧ (AP1 = AP2)(EMP)

14 Selección σ Ejercicios: Tabla sucursal

15 Selección σ Ejercicios: Sucursales que estén en la ciudad de Aluche.
Sucursales cuyos activos sean menores o iguales que Sucursales que están en ciudades que no sean Aluche con activos mayores que y menores a

16 Proyección Π La operación de proyección devuelve las tuplas de la relación que se le pasa como argumento, omitiendo ciertas columnas.

17 Proyección Π Los atributos que se requieran obtener se colocan como subíndice de la operación, separados por comas. ΠLISTA_ATRIBUTOS (R) = conjunto de tuplas de R con los atributos de la lista.

18 EMP (DNI, NOM, AP1, AP2, SUELDO) ΠDNI ( σ SUELDO > 1200 ( EMP ) )
Proyección Π Ejemplo: base de datos de empleados. EMP (DNI, NOM, AP1, AP2, SUELDO) DNI y sueldo de todos los empleados: ΠDNI, SUELDO ( EMP ) DNI de los empleados con más de 1200 de sueldo: ΠDNI ( σ SUELDO > 1200 ( EMP ) )

19 Proyección Π DNI de los empleados con más de de sueldo, “dos pasos”: R1 ← σ SUELDO > 1200 ( EMP ) /* Tuplas de EMP con sueldo > 1200 */ R2 ← Π DNI ( R1 )/* DNI empleados con sueldo > 1200 */

20 Proyección Π Ejercicios: Tabla Cursos

21 Proyección Π Ejercicios: Nombre de curso cuyo precio sea menor a 120.
Código curso cuya fecha de inicio sea y fecha fin Clave de profesor cuyo horario es de 9:00 a 13:00.

22 Renombramiento ρ La operación de renombramiento permite cambiar el nombre del esquema y de las columnas de otro esquema. La relación resultante contiene las mismas tuplas que el Esquema original.

23 ρEMP (D,NOM,AP1,AP2,SUELDO)(EMP)
Renombramiento ρ Ejemplo: Los atributos de una relación se pueden renombrar para facilitar el manejo de atributos: /* Renombramiento de DNI a D */ ρEMP (D,NOM,AP1,AP2,SUELDO)(EMP) /* Renombramiento de todos los atributos */ ρEMP(D,N,A1,A2,S)(EMP)

24 ρEMP1(DNI, NOM, AP1, AP2, SUELDO)(EMP)
Renombramiento ρ Ejemplo: Es también posible realizar copias de relaciones renombrando o no sus atributos: /* Copia de EMP a EMP1 sin renombrar atributos */ ρEMP1(DNI, NOM, AP1, AP2, SUELDO)(EMP)

25 Unión ∪, Intersección ∩ y Resta -
Operaciones típicas de conjuntos. Las relaciones deben ser compatibles: Mismo número 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 relación (no repite tuplas).

26 Unión ∪, Intersección ∩ y Resta -
En la relación resultante, los atributos serán los de la relación que pongamos como primer operando. Lo habitual es realizar uniones, intersecciones y restas con esquemas exactamente iguales.

27 Unión ∪, Intersección ∩ y Resta -
Ejemplo: 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))

28 Producto Cartesiano X Esta es una operación binaria. No exige que las relaciones sean compatibles. R1 (A1, ..., An) × R2 (B1, ..., Bm) → R (A1, ..., An, B1, ..., Bm) La relación 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 relación con todas las de la segunda.

29 Producto Cartesiano X x1, ..., x1 x2, ..., x2 x3, ..., x3 y1, ..., y1
R1 (A1, ..., An) R2 (B1, ..., Bm) R1 (A1, ..., An) × R2 (B1, ..., Bm) x1, ..., x1 x2, ..., x2 x3, ..., x3 y1, ..., y1 y2, ..., y2 x1, ..., x1,y1, ..., y1 x1, ..., x1, y2, ..., y2 x2, ..., x2, y1, ..., y1 x2, ..., x2, y2, ..., y2 x3, ..., x3, y1, ..., y1 x3, ..., x3, y2, ..., y2

30 Producto Cartesiano X Ejemplo: Para el siguiente esquema se pide obtener el DNI de los empleados que trabajan en el departamento “Contabilidad”.

31 Producto Cartesiano X Ejemplo: Pasos a seguir:
Combinar los datos de ambas tablas. Quedarse con las filas donde cada empleado aparezca junto a su Departamento y además el nombre del departamento sea “Contabilidad” Filtrar campos para obtener DNI.

32 Producto Cartesiano X Ejemplo: Solución 1: Solución 2:
RES ←ΠDNI( σNUMDE = ND ∧ NOMD = “Contabilidad” ( EMP × DPTO ) ) Solución 2: R1 ← σNOMD = “Contabilidad” (DPTO) R2 ← ΠND (R1) R3 ← EMP × R2 R4 ← σNUMDEP = ND (R3) RES ←ΠDNI(R4)

33 Producto Cartesiano X En un producto cartesiano puede aparecer el mismo nombre de atributo en R1 y R2. Es necesario crear un convenio de denominación para distinguir unos atributos de otros. En este caso se realiza adjuntando el nombre de la relación de la que procede originalmente. Conviene evitarlo utilizando renombramiento.

34 Producto Cartesiano X Ejemplo:
RES←ΠDNI(σEMP.NUM= DPTO.NUM ∧ NOM = “Contabilidad” (EMP×DPTO))

35 Producto Cartesiano X Ejercicio: Para el siguiente esquema se pide obtener el DNI de los empleados que trabajan en el departamento “Contabilidad”.

36 Producto Cartesiano X Ejercicio: Para el siguiente esquema se pide obtener el nombre de los empleados que trabajan en proyectos dirigidos por “López”.

37 Producto Cartesiano X Ejercicio: Para el siguiente esquema se pide obtener el nombre de los empleados que trabajan en proyectos dirigidos por “López”.

38 Producto Cartesiano X Ejercicio: Para el siguiente esquema se pide obtener el DNI de los empleados cuyo supervisor gana más de

39 Producto Cartesiano X Ejercicio: Para el siguiente esquema se pide obtener el DNI de los empleados supervisados por DNI = 123

40 Reunión/Join c Ejercicio:
Operación binaria que implementa el producto cartesiano con condición. R1 c R2 = conjunto de tuplas resultantes del producto cartesiano R1 × R2 que cumplen la condición c.

41 Reunión/Join c Ejercicio:
Operación binaria que implementa el producto cartesiano con condición. R c R2 = conjunto de tuplas resultantes del producto cartesiano R1 × R2 que cumplen la condición c. Es decir: R c R2 ≡ σc (R1 × R2)

42 Reunión/Join c Ejemplo

43 Reunión/Join c Ejemplo
La figura siguiente representa la reunión de la relación PROV1 con la relación REC cuando el NIF de PROVl coincide con el atributo NIF-PRO de PREC.

44 Reunión/Join Natural Ejemplo
Producto cartesiano con condición implícita: 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 R R2 ≡Πr∩s(σR1.A1=R2.A1…R1.Ak=R2.Ak(R1 × R2) Si no hay atributos comunes, es decir, r ∩s=∅ R R2 ≡ R1 × R2

45 Reunión/Join Natural Ejemplo:
La figura siguiente representa la reunión natural de la relación PROV1 con la relación PREC cuando el NIF de PROVl coincide con el atributo NIF-PRO de PREC. Observemos que no aparece duplicado el atributo NIF.

46 Reunión/Join Natural Ejemplo:

47 Reunión/Join Natural

48 Reunión/Join Natural Ejercicios:

49 GRACIAS


Descargar ppt "Lenguajes Formales de Consulta"

Presentaciones similares


Anuncios Google