Base de datos: Algebra relacional

5,980 views 79 slides Aug 27, 2014
Slide 1
Slide 1 of 79
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58
Slide 59
59
Slide 60
60
Slide 61
61
Slide 62
62
Slide 63
63
Slide 64
64
Slide 65
65
Slide 66
66
Slide 67
67
Slide 68
68
Slide 69
69
Slide 70
70
Slide 71
71
Slide 72
72
Slide 73
73
Slide 74
74
Slide 75
75
Slide 76
76
Slide 77
77
Slide 78
78
Slide 79
79

About This Presentation

Bases de datos: Algebra relacional


Slide Content

B a s e s d e D a t o s Algebra relacional Agosto 2014

Algebra relacional Operaciones realizadas sobre las relaciones (tablas). Cierre relacional: Tanto los operandos como el resultado, son tablas. El resultado de una operación puede ser operando de otra operación. 2

Tipos de operaciones Según se expresan (o no) en términos de otras operaciones. Operaciones primitivas. Operaciones a partir de las cuales se pueden definir otras. Ej : Unión, diferencia, producto cartesiano, selección y proyección. Operaciones no primitivas. No son estrictamente necesarias (se pueden expresar en términos de las primitivas). Facilitan. Ej : Intersección y combinación. 3

Según el número de tablas que tienen como operandos : Operaciones binarias. Tienen dos tablas como operandos . Operaciones unarias. Tienen una sola tabla como operando. Selección y proyección. 4

Según si se parecen a la teoría de conjuntos: Operaciones conjuntistas. Unión, intersección, diferencia, producto cartesiano. Operaciones específicamente relacionales. Selección, proyección y combinación. 5

El nombre del resultado de una operación se puede expresar: Como los operandos junto con su operador: EMPLEADOS_ADM ∪ EMPLEADOS_PROD Usando un alias (operación redenominar ). R:= Expresión Ej : Empleados := EMPLEADOS_ADM ∪ EMPLEADOS_PROD Redenominar también se puede aplicar sobre atributos y sobre el esquema de una relación. 6

Si S(B 1 , B 2 , ..., B n ) y se quiere redenominar por R(A 1 , A 2 , ..., A n ) : R(A 1 , A 2 , ..., A n ) := S(B 1 , B 2 , ..., B n ) . 7

Operaciones conjuntistas Unión. A partir de dos tablas obtiene una nueva con las tuplas que estén en alguna de esas tablas. Unión entre T y S : T ∪ S. 8

Operaciones conjuntistas Unión. A partir de dos tablas obtiene una nueva con las tuplas que estén en alguna de esas tablas. Unión entre T y S : T ∪ S. Sólo tiene sentido unir tablas con tuplas semejantes. Dos tablas T y S son compatibles si: Tienen el mismo grado. Si para cada atributo A i de T hay un atributo correspondiente A j en S , coincidiendo A i y A j con un mismo dominio. 9

10

Esquema y extensión resultantes de una unión: Esquema : Al unir T con S , el esquema resultante tiene los atributos de T . Extensión : Conjunto de tuplas que pertenecen a la extensión T y S . No repetición de tuplas . 11

R := EMPLEADOS_ADM ∪ EMPLEADOS_PROD 12

13

Intersección A partir de dos tablas obtiene una nueva formada con las tuplas que pertenecen a ambas. Entre T y S se indica como T ∩ S . Ej : EMPLEADOS_ADM ∩ EMPLEADOS_PROD. Es necesario que las tablas sean compatibles . 14

Esquema y extensión: Los atributos del esquema T ∩ S coinciden con los atributos de T . La extensión de T ∩ S es el conjunto de tuplas que pertenecen a la extensión de T y S . 15

R := EMPLEADOS_ADM ∩ EMPLEADOS_PROD . 16

R := EMPLEADOS_ADM ∩ EMPLEADOS_PROD. 17

Diferencia. A partir de dos tablas, se obtiene una nueva donde las tuplas de la primera no están en la segunda. Entre T y S se indica como T – S . Ej : EMPLEADOS_ADM – EMPLEADOS_PROD. Aplica a tuplas similares entre tablas compatibles . 18

Esquema y extensión: Los atributos del esquema resultante de T – S , coinciden con los atributos de T . La extensión resultante de T – S son las tuplas que pertenecen a T pero que no están en S . 19

R := EMPLEADOS_ADM – EMPLEADOS_PROD. 20

R := EMPLEADOS_ADM – EMPLEADOS_PROD . 21

Producto cartesiano. A partir de dos tablas se obtiene una nueva conformada por las tuplas que resultan de concatenar las tuplas de la primera con la segunda. Siendo dos tablas T y S , sus esquemas no tienen un nombre de atributo común, su producto cartesiano se indica como T × S . Atributos con mismo nombre: redenominar . La nueva tabla contiene todas las concatenaciones posibles de tuplas entre las dos tablas T y S . 22

Esquema y extensión: Los atributos del esquema de T × S, son todos los atributos de T y todos los de S. Redenominar , si es necesario. La extensión de T × S son todas las tuplas < v 1 , v 2 , ..., v n , w 1 , w 2 , ..., w m > para las que <v 1 , v 2 , ..., v n > pertenecen a la extensión de T y < w 1 , w 2 , ..., w m > pertenecen a la extensión de S. 23

Ej : Producto cartesiano entre DESPACHOS y EDIFICIOS_EMP. Redenominar : EDIFICIOS( nombreedificio , supmediadesp ) := EDICIOS_EMP(edificio, supmediadesp ) R :=EDIFICIOS ×DESPACHOS. 24

R :=EDIFICIOS × DESPACHOS. 25 EDIFICIOS nombreedificio supmediadesp Marina 15 Diagonal 10

26

El producto cartesiano rara vez se utiliza de forma explícita, no es muy común para consultas habituales. Pero: a partir de esta operación primitiva, se define la de combinación. 27

Operaciones sobre relaciones Selección Proyección Combinación 28

Selección: Operación para elegir un subconjunto de tuplas dentro de una tabla, que cumplan una serie de condiciones específicas. Es una operación unaria. La selección sobre una tabla T bajo una condición C se expresa como T ( C ). 29

Ej : seleccionar todos los despachos del edificio Marina que tengan más de 12 m2. Selección a DESPACHOS. Condición edificio = “ Marina “ y superficie > 12. DESPACHOS(edificio = “ Marina “ y superficie> 12). 30

La condición sigue la forma: Ai θ v ó Ai θ Aj . donde Ai y Aj son atributos (bajo un mismo dominio), v es un valor especificado (del dominio de ese atributo) y θ es un operador de comparación (=,!=, <,<=,>,>=). Las cláusulas de una condición se unen con “ y “ (∧) u “ o “ (∨). 31

Esquema y extensión: Los atributos del esquema para T ( C ) coinciden con los atributos del esquema de T . La extensión de T ( C ) es el conjunto de tuplas de la extensión de T que cumplen la condición C . 32

R := DESPACHOS( edificio = “Marina” y superficie >12) 33

R := DESPACHOS( edificio = “Marina” y superficie >12) 34

Proyección Operación para elegir un subconjunto de atributos de una tabla. La nueva tabla contará con tuplas cuyos atributos serán los seleccionados. Es una operación unaria. La proyección de una tabla T sobre sus atributos { A i , A j , ..., A k } se indica como T [ A i , A j , ..., A k ]. 35

Ej : Proyección sobre EMPLEADOS_ADM enfocado a los atributos nombre y apellido . EMPLEADOS_ADM[nombre, apellido] 36

Esquema y extensión: Los atributos del esquema resultante de T [ A i , A j , ..., A k ] son los atributos { A i , A j , ..., A k } La extensión resultante de T [ A i , A j , ..., A k ] es el conjunto de tuplas de la forma < t.A i , t.A j , ..., t.A k > donde se cumple que t es una tupla de la extensión de T y t.A p indica el valor para el atributo A p de la tupla t . 37

Ej : R:= EMPLEADOS_ADM[nombre, apellido ] 38

Ej : R:= EMPLEADOS_ADM[nombre, apellido ] 39

Combinación: A partir de dos tablas se obtiene una nueva formada con las tuplas que resultan de concatenar tuplas de la primera con la segunda tabla, cumpliendo una condición de combinación específica. Es una operación binaria. Sean las tablas T y S , cuyos esquemas no tienen nombres de atributo en común y siendo C una condición de combinación, la combinación de T y S bajo la condición C se indica como T[C]S . 40

Ej : Combinar los datos de los empleados y el despacho donde trabajan. Tablas: EMPLEADOS_ADM y DESPACHOS. Condición de combinación: combinar los datos de un empleado con un despacho si el edificiodesp y numdesp del empleado es igual al edificio y número del despacho . EMPLEADOS_ADM[ edificiodesp =edificio, numerodesp = numero]DESPACHOS 41

La condición C de T[C]S se conforma por una o más comparaciones de la forma: Ai θ Aj donde: Ai es un atributo de T, Aj es un atributo de S, θ es un operador de comparación. Ai y Aj tienen el mismo dominio. 42

Esquema y extensión: Los atributos de T[C]S son todos los atributos de T y todos los de S. La extensión de T[C]S es el conjunto de tuplas que pertenecen a la extensión del plano cartesiano T × S que satisfacen todas comparaciones de las condiciones de combinación C. 43

Ej : Encontrar los datos de los despachos con una superficie mayor o igual a la superficie media ( supmediadesp ) de los despachos del edificio donde se ubican. Redenominar : EDIFICIOS( nombreeedficio,supmediadesp ):=EDIFICIOS_EMP(edificio , supmediadesp ) R:=EDIFICIOS[nombreedificio=edificio,supmediadesp ≤ superficie ] DESPACHOS 44

R:=EDIFICIOS[nombreedificio=edificio,supmediadesp ≤ superficie ] DESPACHOS 45 EDIFICIOS nombreedificio supmediadesp Marina 15 Diagonal 10

R:=EDIFICIOS[nombreedificio=edificio,supmediadesp ≤ superficie ] DESPACHOS 46

R:=EMPLEADOS_ADM[edificiodesp=edificio,númerodesp=número]DESPACHOS 47

R:=EMPLEADOS_ADM[edificiodesp=edificio,númerodesp=número]DESPACHOS 48

Combinación natural: Combinación entre dos tablas T y S, representada como T * S. Consiste en una combinación donde todas las operaciones de comparación son de igualdad ( “ = “ ), a la que se le eliminan los atributos superfluos. La condición de combinación de igualdad «iguala» las parejas de atributos comunes entre T y S. Se aplica a combinaciones con nombres de atributos comunes. Se puede aplicar redenominación , para hacer coincidir los nombres de atributos que interesan. 49

Ej : R := EDIFICIOS_EMP * DESPACHOS Se considera la condición edificio = edificio. Nombres de atributos comunes. 50

Ej : R := EDIFICIOS_EMP * DESPACHOS 51

Ej : Obtener los datos de los empleados administrativos junto con los datos del despacho donde trabajan. Sin repetir valores de atributos superfluos. 52

Redenominar : D( edificiodesp,númerodesp,superficie ):=DESPACHOS( edificio,número,superficie ) Combinación natural: R := EMPLEADOS_ADM *D 53

Otra nomenclatura Selección: σ < condicion > (<tabla>) Ej : σ Salario>3000 (EMPLEADO) σ ND=4 and Salario>3000 (EMPLEADO) σ not (ND=4 and Salario >3000 ) ( EMPLEADO) 54

Proyección: Π < lista_atributos > (< relacion >) Ej : Π nombre , dirección (FABRICA) Π desc (PRODUCTO) 55

Combinación ( join ): (< relacion >) |><| <condición> (< relacion >) Es equivalente a: σ condición (R x S ) 56

Secuencia de operaciones de algebra relacional Generalmente es preciso realizar varias operaciones. Utilizar una sola expresión que incluya todas las operaciones, agrupando por paréntesis. Dividir la expresión en etapas, donde cada etapa realice una sola operación y la tabla resultante es usada en las etapas siguientes. 57

Ej : Obtener el nombre y apellido de los empleados (administrativos y de producción). 1. Unir EMPLEADOS_ADM y EMPLEADOS_PROD. 2. Proyección sobre atributos nombre y apellido . 58

Ej : Obtener el nombre y apellido de los empleados (administrativos y de producción). 1. Unir EMPLEADOS_ADM y EMPLEADOS_PROD. 2. Proyección sobre atributos nombre y apellido . Usando una sola expresión: R := (EMPLEADOS_ADM ∪ EMPLEADOS_PROD ) [nombre, apellido ] Mediante etapas: EMPS := EMPLEADOS_ADM ∪ EMPLEADOS_PROD R := EMPS[nombre, apellido] 59

Ejercicios 1. Obtener el nombre del edificio y el número de los despachos situados en edificios en los que la superficie media de estos despachos es mayor que 12. 60

1. Obtener el nombre del edificio y el número de los despachos situados en edificios en los que la superficie media de estos despachos es mayor que 12. A:= EDIFICIOS_EMP( supmediadesp > 12 ) B := DESPACHOS * A R := B[ edificio , número] 61

2. Obtener el nombre y apellido de todos los empleados (administrativos y de producción ) que están asignados al despacho 120 del edificio Marina. 62

2. Obtener el nombre y apellido de todos los empleados (administrativos y de producción ) que están asignados al despacho 120 del edificio Marina. A:= EMPLEADOS_ADM ∪ EMPLEADOS_PROD B := A( edificiodesp = «Marina» y númerodesp = 120 ) R := B[ nombre , apellido ] 63

3. Consultar el nombre del edificio y el número de los despachos que ningún empleado de administración tiene asignado. 64

3. Consultar el nombre del edificio y el número de los despachos que ningún empleado de administración tiene asignado. A:= DESPACHOS [ edificio , número ] B := EMPLEADOS_ADM[ edificiodesp , númerodesp ] R := A – B 65

Obtener el DNI, el nombre y el apellido de todos los empleados de administración que tienen despacho, junto con la superficie de su despacho. 66

Obtener el DNI, el nombre y el apellido de todos los empleados de administración que tienen despacho, junto con la superficie de su despacho. A[ DNI,nombre,apellido,edificio,número ] := EMPLEADOS_ADM[DNI , nombre, apellido, edificiodesp , númerodesp ] B := A * DESPACHOS R := B[DNI, nombre, apellido, superficie ] 67

Combinación externa. Cuando se efectúa una combinación puede haber casos en que existan tuplas con valor nulo en la condición de combinación, por lo que no serían tomadas en cuenta . También puede haber tuplas en algunas de las tablas, que no tengan un elemento con el cual cumplir la condición de combinación y tampoco serían tomadas en cuenta. Si se requiere conservar las tuplas de alguna de las dos tablas que caigan en estas situaciones, se puede recurrir a la combinación externa . 68

La combinación externa entre T y S es una variación de la combinación que conserva todas las tuplas de T , de S o de ambas. Combinación externa izquierda. Entre T y S , denotada como T [ C ] I S , conserva todas las tuplas de T . Combinación externa derecha. Entre T y S , denotada como T [ C ] D S , conserva todas las tuplas de S . Combinación externa plena. Entre T y S , denotada como T [ C ] P S , conserva todas las tuplas de T y de S . 69

Combinación natural externa izquierda. Entre T y S , denotada como T * I S , conserva todas las tuplas de T . Combinación natural externa derecha. Entre T y S , denotada como T * D S , conserva todas las tuplas de S . Combinación natural externa plena. Entre T y S , denotada como T * P S , conserva todas las tuplas de T y de S . **Las tuplas en R que no satisfacen la condición de combinación, tienen valor nulo para los atributos de la tabla con la que no tienen correspondencia. 70

Ej. Combinación natural externa derecha. D( edificiodesp , númerodesp , superficie ) := DESPACHOS ( edificio , número, superficie ) R := EMPLADOS_PROD * D D 71

Ej. Combinación natural externa derecha. D( edificiodesp , númerodesp , superficie ) := DESPACHOS ( edificio , número, superficie ) R := EMPLADOS_PROD * D D 72

Ej. Combinación natural externa izquierda. D( edificiodesp , númerodesp , superficie ) := DESPACHOS ( edificio , número, superficie ) R := EMPLADOS_PROD * I D 73

Ej. Combinación natural externa izquierda. D( edificiodesp , númerodesp , superficie ) := DESPACHOS ( edificio , número, superficie ) R := EMPLADOS_PROD * I D 74

Ej. Combinación natural externa plena. D( edificiodesp , númerodesp , superficie ) := DESPACHOS ( edificio , número, superficie ) R := EMPLADOS_PROD * P D 75

Ej. Combinación natural externa plena. D( edificiodesp , númerodesp , superficie ) := DESPACHOS ( edificio , número, superficie ) R := EMPLADOS_PROD * P D 76

Ejercicio Alumno( cve_alumno , nombre_alumno , semestre, carrera) Materia( cve ,creditos,m_carrera,semestre , nombre_mat ) Lista( cve_materia , num_grupo , cve_alum ,calif,oportunidad ) Grupo( cve_mat , num_gpo ,salon,horario,cve_prof ) Profesor( cve_profesor ,nombre_prof,grado ) ¿Nombre del alumno con su horario? ¿Profesores que dan clase? ¿Nombre del alumno y las carreras de las materias que no son de su carrera? 77

Π (( σ (Alumno)|><|Lista)|><|Grupo) Π (Profesor|><|Grupo) Π ((Alumno|><|Lista)|><|Materia) 78 nombre_alumno , horario cve_alumno = cve_alum cve_materia = cve_mat and num_grupo = num_gpo nombre_prof cve_profesor = cve_prof nombre_alumno m_carrera cve_alumno = cve_alum carrera!= m_carrera and cve_materia = cve

Referencias Chris J. Date, An introduction to database system , Addison Wesley . Costal Costa D., El modelo relacional y el álgebra relacional , UOC, GNU Free Document License , 2007. Marqués Mercedes, Bases de datos , Universitat Jaume I, ISBN: 978-84-693-0146-3, Licencia Creative Commons , 2011 . 79