El documento presenta conceptos sobre el álgebra relacional, que permite operar con el modelo relacional mediante operadores que toman relaciones como operandos y devuelven una relación como resultado. Se describen 8 operadores iniciales clasificados en tradicionales de teoría de conjuntos y especiales, así como operadores adicionales. Se incluyen ejemplos para ilustrar cada operador.
1. 21/05/13 Curso Bases de Datos 1
CONCEPTOS Y DISEÑOS DE
BASES DE DATOS
Gustavo Cáceres Castellanos
Universidad Pedagógica y Tecnológica de Colombia
gustavo.caceres@uptc.edu.co
Especialización en Bases de Datos
ÁLGEBRA RELACIONAL
2. 21/05/13 Curso Bases de Datos 2
Álgebra Relacional
Permite operar con el Modelo Relacional
Conjunto de operadores que toman relaciones
como sus operandos y regresan una relación
como resultado El álgebra es cerrada
Es un formalismo que permite solicitar
información a las Bases de Datos
Es un lenguaje puro (en general no se
implementa directamente)
Propuesta por Codd
Se usa para la traducción de una consulta SQL
y para optimización de consultas
3. 21/05/13 Curso Bases de Datos 3
Álgebra Relacional
8 operadores iniciales clasificados en
2 grupos:
Tradicionales de la teoría de conjuntos:
Unión, Intersección, Diferencia y
Producto Cartesiano
Especiales: Restricción (o Selección),
Proyección, Reunión (join) y División
Operadores adicionales: Renombrado,
Agrupamiento
4. 21/05/13 Curso Concepto y Diseño de
Bases de Datos
4
Álgebra Relacional
Código Nombre Edad
1 Jorge Campos 33
2 Enrique Muñoz 25
3 Esteban Paz 21
Código Nombre Edad
2 Enrique Muñoz 25
8 Jorge Arias 30
10 Juan Martínez 19
ADMINISTRADOR
PRODUCTOR
Sean las relaciones:
¡¡REPASO!!
¿Cuál es el esquema de
la relación
ADMINISTRADOR?
(Código,Nombre,Edad)
5. 21/05/13 Curso Bases de Datos 5
Restricción o Selección (σ)
El argumento es una relación y
una condición
Produce una relación R1 que
contiene todas las tuplas de R
que cumplen una condición
específica
La condición se construye
mediante operadores de
comparación (=,<,> etc.) y
booleanos (AND, OR etc.)
El resultado es una nueva
relación cuyo esquema es
idéntico al esquema de R
σcondición(R)
6. 21/05/13 Curso Bases de Datos 6
Restricción o Selección (σ)
σEdad >= 25(Administrador):
σCódigo < 5 (Productor):
Código Nombre Edad
1 Jorge Campos 33
2 Enrique Muñoz 25
3 Esteban Paz 21
Código Nombre Edad
1 Jorge Campos 33
2 Enrique Muñoz 25
Código Nombre Edad
2 Enrique Muñoz 25
Código Nombre Edad
2 Enrique Muñoz 25
8 Jorge Arias 30
10 Juan Martínez 19
7. 21/05/13 Curso Bases de Datos 7
Proyección (π)
Toma como argumento
una relación R y una lista
de atributos
Se utiliza para extraer
atributos (columnas) de
una relación R
El resultado es una nueva
relación R1 cuyo esquema
corresponde a la lista de
atributos proyectados
En R1 se eliminan las
tuplas duplicadas
Se puede extraer más de
una columna a la vez
π Lista Atributos (R)
8. 21/05/13 Curso Bases de Datos 8
Proyección (π)
πCódigo,Edad(Administrador)
Código Edad
1 33
2 25
3 21
Código Nombre
2 Enrique Muñoz
8 Jorge Arias
10 Juan Martínez
πCódigo,Nombre(Productor)
Código Nombre Edad
1 Jorge Campos 33
2 Enrique Muñoz 25
3 Esteban Paz 21
9. 21/05/13 Curso Bases de Datos 9
Proyección (π)
Código Edad
1 30
2 25
3 30
Suponga una relación W así:
πEdad(W)
W
Edad
30
25
¡¡ se eliminan tuplastuplas repetidas !!
El resultado será:
10. 21/05/13 Curso Bases de Datos 10
Producto Cartesiano: R1 XX R2
Toma como argumentos dos relaciones R1 y R2
Da como resultado una relación R3 cuyo esquema consta
tanto de los atributos de R1 como de los atributos de R2
Los esquemas de R1 y R2 deben ser disjuntos, es decir
los esquemas de R1 y R2 no pueden tener nombres de
atributos en común ¿por qué?
Se debe usar un alias (mediante el operador ρ) si los
esquemas no son disjuntos
R3 contiene todas las tuplas resultantes de la
concatenación de cada tupla de R1con cada una de las
tuplas de R2
Renombrado de atributos
11. RENOMBRADO DE ATRIBUTOS
21/05/13 Curso Bases de Datos 11
Forma I:
Administrador XX [ρCódigoCod,NombreNom,EdadEdad1(Productor)]
Forma II:
Productor1(Cod,Nom,Edad1) ‹-- Productor
12. 21/05/13 Curso Bases de Datos 12
Ejemplo
Código Nombre Edad Cod Nom Edad1
1 Jorge Campos 33 2 Enrique Muñoz 25
1 Jorge Campos 33 8 Jorge Arias 30
1 Jorge Campos 33 10 Juan Martínez 19
2 Enrique Muñoz 25 2 Enrique Muñoz 25
2 Enrique Muñoz 25 8 Jorge Arias 30
2 Enrique Muñoz 25 10 Juan Martínez 19
3 Esteban Paz 21 2 Enrique Muñoz 25
3 Esteban Paz 21 8 Jorge Arias 30
3 Esteban Paz 21 10 Juan Martínez 19
El renombrado ρρ de la relationde la relation
RR(A,B,C,D) en(A,B,C,D) en RR(A,K,L,D) se denota(A,K,L,D) se denota
ρρ BBK,CK,CLL (R)
¡¡ El renombrado es puramente sintáctico !!
Administrador XX [ρCódigoCod,NombreNom,EdadEdad1(Productor)]
13. 21/05/13 Curso Bases de Datos 13
Unión: R1 ∪ R2
Toma como argumentos
dos relaciones R1 y R2 con
esquemas idénticos
Retorna una relación R3
con el mismo esquema de
R1 y R2 que contiene todas
la tuplas de R1 y todas las
de R2, eliminando tuplas
repetidas
R1
R2
14. 21/05/13 Curso Bases de Datos 14
Ejemplo:
Administrador ∪ Productor:
Código Nombre Edad
1 Jorge Campos 33
2 Enrique Muñoz 25
3 Esteban Paz 21
8 Jorge Arias 30
10 Juan Martínez 19
15. 21/05/13 Curso Bases de Datos 15
Intersección: R1 ∩ R2
Toma como argumentos
dos relaciones R1 y R2
con esquemas idénticos
Retorna una relación R3
con el mismo esquema
de R1 y R2 que contiene
todas las tuplas que
aparecen tanto en R1
como en R2
R1
R2
16. 21/05/13 Curso Bases de Datos 16
Ejemplo
Administrador ∩ Productor
Código Nombre Edad
2 Enrique Muñoz 25
17. 21/05/13 Curso Bases de Datos 17
Diferencia: R1 − R2
Toma como argumento
dos relaciones R1 y R2
con esquemas idénticos
Retorna una relación R3
con el mismo esquema
de R1 y R2 que
contiene todas las
tuplas que aparecen en
R1 pero no en R2
R1
R2
18. 21/05/13 Curso Bases de Datos 18
Ejemplo
Administrador − Productor:
Productor − Administrador:
Código Nombre Edad
1 Jorge Campos 33
3 Esteban Paz 21
Código Nombre Edad
8 Jorge Arias 30
10 Juan Martínez 19
19. 21/05/13 Curso Bases de Datos 19
La unión, intersección y producto
cartesiano son conmutativas y
asociativas
La diferencia no es conmutativa ni
asociativa
La intersección no es primitiva ya que
puede ser expresada mediante la
diferencia
Propiedades
20. 21/05/13 Curso Bases de Datos 20
Reunión (JOIN)
NATURAL JOIN: R1 * R2
Si R1(A,B) y R2(B,C) el resultado de R1 *R2
es una relación R3 con esquema R3(A,B,C)
donde cada tupla de R1 se concatena con cada
tupla de R2 SIEMPRE Y CUANDO tengan el
mismo valor del atributo en común (B).
El atributo B puede ser compuesto.
21. 21/05/13 Curso Bases de Datos 21
Ejemplo
Código Nombre Edad Depto
1 Jorge Campos 33 1
2 Enrique Muñoz 25 1
3 Esteban Paz 21 1
8 Jorge Arias 30 2
10 Juan Martínez 19 2
12 Anselmo Rodas 28 6
Depto Descripción
1 Administración
2 Producción
3 Ventas
4 Finanzas
Empleado
Departamento
Atributo de
Join
NotaNota: En este ejemplo, el campo
Depto en Empleado NO ES CF
con respecto a la tabla Departamento
22. 21/05/13 Curso Bases de Datos 22
Ejemplo
Empleado * Departamento
Código Nombre Edad Depto Descripción
1 Jorge Campos 33 1 Administración
2 Enrique Muñoz 25 1 Administración
3 Esteban Paz 21 1 Administración
8 Jorge Arias 30 2 Producción
10 Juan Martínez 19 2 Producción
23. 21/05/13 Curso Bases de Datos 23
SEMI JOIN ( ⊳)
Idéntico al NATURAL JOIN pero la
relación resultante tiene el esquema
de la relación izquierda ¿Utilidad?
24. 21/05/13 Curso Bases de Datos 24
THETA JOIN (R1 ⋈ Condición R2)
El operador de comparación usado en la
condición NO es el “==“ sino alguno de
los siguientes: “>>“, “<<“, “>=>=“, “<=<=“,
“≠≠“
Es equivalente a: σCondición (R1 X R2)
25. 21/05/13 Curso Bases de Datos 25
Ejemplo
Empleado ⋈ Depto > Dep [ρ DeptoDep (Departamento)]
Código Nombre Edad Depto Dep Desc
8 Jorge Arias 30 2 1 Administración
10 Juan Martínez 19 2 1 Administración
12 Anselmo Rodas 28 6 1 Administración
12 Anselmo Rodas 28 6 2 Producción
12 Anselmo Rodas 28 6 3 Ventas
12 Anselmo Rodas 28 6 4 Finanzas
26. 21/05/13 Curso Bases de Datos 26
División: R1 ÷ R2
Def 1: Sean las relaciones R1(A,B) y
R2(B). El resultado de R1 ÷ R2es una
relación R3 cuyo esquema esta compuesto
por el atributo A, donde para todo valor
de B en R2 existe una pareja en R1de A
con ese valor.
Def 2:
R ÷ S = {t | t ∈ ΠΠK (R) y {t} x s ⊆⊆ r} con
K= esquema de R – esquema de S
Tuplas de S
Tuplas de R
27. 21/05/13 Curso Bases de Datos 27
Ejemplo
Empleado
Código Nombre Edad Depto
1 Jorge Campos 33 1
2 Enrique Muñoz 25 1
2 Enrique Muñoz 25 2
3 Esteban Paz 21 1
8 Jorge Arias 30 2
10 Juan Martínez 19 2
Depto
1
2
Departamento
Empleado ÷ (πDepto(Departamento))
En este ejemplo la relación empleado no está
normalizada, observe que la CP es (Código, Depto)
y Código Nombre, Edad
Código Nombre Edad
2 Enrique Muñoz 25
28. 21/05/13 Curso Bases de Datos 28
Ademas ..
Se permite también el siguiente operador:
Asignación: VbleRelacion Relación←
Otra forma de renombrar atributos y el
nombre de la relación
ρ NuevoNombreRelación(Atributos Renombrados) (π(Lista Atributos)(R))
29. 21/05/13 Curso Bases de Datos 29
Agrupar con funciones
F : Agrupar con funciones Suma(), Promedio(), Max(), Min(),
Cuenta()
Código Nombre Edad Depto
1 Jorge Campos 33 1
2 Enrique Muñoz 25 1
3 Esteban Paz 21 1
8 Jorge Arias 30 2
10 Juan Martínez 19 2
12 Anselmo Rodas 28 6
¿Qué hace la siguiente consulta?
Depto F Cuenta(Código) AS conteo (Emp)
Renombrado
de la función de
Grupo
Emp
Atributos de Agrupamiento FFunciones de Grupo (R)
Ej. Sea:
SINTAXIS:
30. 21/05/13 Curso Bases de Datos 30
Extender
Extend R ADD expresión AS nuevo_atributo
Código Nombre Sal Bono
1 Jorge Campos 33 1
2 Enrique Muñoz 25 1
3 Esteban Paz 21 1
8 Jorge Arias 30 2
10 Juan Martínez 19 2
12 Anselmo Rodas 28 6
Emp
Ej: Extend Emp ADD Sal*2 AS Saldobl
31. 21/05/13 Curso Bases de Datos 31
Ejemplo
Se genera una relación como la original
pero con un atributo saldobl adicional:
Código Nombre Sal Bono Saldobl
1 Jorge Campos 33 1 66
2 Enrique Muñoz 25 1 50
3 Esteban Paz 21 1 42
8 Jorge Arias 30 2 60
10 Juan Martínez 19 2 38
12 Anselmo Rodas 28 6 56
¿Qué hace la siguiente consulta?
Ej: Extend Emp ADD 1 AS num, ‘Hola’ AS mensaje