Download Álgebra

Document related concepts

Cálculo relacional wikipedia , lookup

Cálculo relacional basado en tuplas wikipedia , lookup

Normalización de bases de datos wikipedia , lookup

Tipo de dato lógico wikipedia , lookup

Transcript
LENGUAJES DE BASES DE
DATOS:
ÁLGEBRA RELACIONAL
Francisco Moreno
Curso Bases de Datos
1
Álgebra Relacional
• Es un lenguaje formal que permite consultar bases de
datos relacionales
• Conjunto de operadores que toman relaciones como
operandos y retornan una relación como resultado
 Propiedad de cierre  El resultado de un operador
puede ser el operando de otro.
• Es un lenguaje que no es usado directamente por los
desarrolladores: usado para la traducción y
optimización de consultas SQL
• Propuesta por E. F. Codd
Curso Bases de Datos
2
Álgebra Relacional
• Ocho operadores clasificados en dos
grupos:
– Tradicionales de la teoría de conjuntos: Unión,
Intersección, Diferencia y Producto Cartesiano
– Especializados: Restricción (o Selección),
Proyección, Reunión (join) y División
• Operadores adicionales: Renombrado,
Agrupamiento, Derivación (o Extensión)
Curso Bases de Datos
No traducir join
como unión
3
Álgebra Relacional
Sean las relaciones:
ADMINISTRADOR
Nota: Aquí se
usa el atributo
edad, pero en
una BD se
suele guardar
mas bien la
fecha de
nacimiento
código
1
2
3
nombre
edad
Jorge Campos
33
Enrique Muñoz
25
Esteban Paz
21
PRODUCTOR
código
2
8
10
nombre
edad
Enrique Muñoz
25
Jorge Arias
30
Juan Martínez
19
Curso Bases de Datos
4
Álgebra Relacional
sCondición(R)
• Restricción o Selección (s):
– Genera una relación que
contiene todas las tuplas de una
relación que satisfacen una
condición dada
– La condición se construye
mediante operadores de
comparación (=, <, , , etc.) y
booleanos (AND, OR, etc.)
Curso Bases de Datos
5
Álgebra Relacional
• sedad  25(ADMINISTRADOR):
código nombre
edad
1 Jorge Campos
33
2 Enrique Muñoz
25

scódigo < 5(PRODUCTOR):
código nombre
edad
2 Enrique Muñoz
25
Curso Bases de Datos
6
Álgebra Relacional:
pLista atributos(R)
• Proyección (p):
– Extrae atributos
(columnas) de una relación
– El resultado es una
relación (se eliminan
tuplas repetidas)
Curso Bases de Datos
7
Álgebra Relacional
•
pcódigo, edad(ADMINISTRADOR)
código edad
1
33
2
25
3
21
• pcódigo, nombre(PRODUCTOR)
código
2
8
10
Curso Bases de Datos
nombre
Enrique Muñoz
Jorge Arias
Juan Martínez
8
Álgebra Relacional
Sea una relación JUGADOR:
JUGADOR
Sea: ppaís(JUGADOR)
país
cod
nom
país
China
3
Xiu
China
Perú
8
Juan
Perú
2
Juan
Perú
Sea: pnom, país(JUGADOR)
nom
país
Xiu
China
Juan
Perú
Note que se eliminan tuplas repetidas
Curso Bases de Datos
9
Álgebra Relacional
• Producto Cartesiano: R1 X R2
– Retorna una relación que contiene todas las tuplas
resultantes de la combinación de cada tupla de R1
con cada tupla de R2
– La cabecera de la relación resultante es la unión
de las cabeceras de R1 y R2
– Para hacer el producto cartesiano, las cabeceras
de R1 y R2 no pueden tener nombres de atributos
iguales ¿por qué? Si las cabeceras tienen nombres
de atributos iguales se debe usar un alias
mediante el operador de renombrado r (más
adelante se explica este operador)
Curso Bases de Datos
10
Álgebra Relacional
Renombrado temporal
de la relación
Renombrado temporal
de los atributos
ADMINISTRADOR X rPRO(cod,nom,ed) (pcódigo,nombre,edad(PRODUCTOR))
Operador de renombrado
código
1
1
1
2
2
2
nombre
edad cod
Jorge Campos
33
Jorge Campos
33
Jorge Campos
33
Enrique Muñoz
25
Enrique Muñoz
25
Enrique Muñoz
25
3 Esteban Paz
3 Esteban Paz
3 Esteban Paz
21
21
21
Curso Bases de Datos
2
8
10
2
8
10
nom
ed
Enrique Muñoz
Jorge Arias
Juan Martínez
Enrique Muñoz
Jorge Arias
Juan Martínez
2 Enrique Muñoz
8 Jorge Arias
10 Juan Martínez
25
30
19
25
30
19
25
30
19
11
Álgebra Relacional
• Unión: R1 R2
– Retorna una relación que
contiene todas la tuplas de
R1 y de R2 (se eliminan
tuplas repetidas)
– Las relaciones deben tener
cabecera idéntica para que
sean compatibles para la
unión
Curso Bases de Datos
12
Álgebra Relacional
• ADMINISTRADOR PRODUCTOR:
Solo aparece
una vez
código
1
2
3
8
10
nombre
edad
Jorge Campos
33
Enrique Muñoz
25
Esteban Paz
21
Jorge Arias
30
Juan Martínez
19
Curso Bases de Datos
13
Álgebra Relacional
• Intersección: R1  R2
– Retorna una relación que
contiene todas las tuplas que
aparecen tanto en R1 como
en R2
– Las relaciones deben tener
cabecera idéntica para que
sean compatibles para la
intersección
Curso Bases de Datos
14
Álgebra Relacional
• ADMINISTRADOR PRODUCTOR:
código nombre
edad
2 Enrique Muñoz
25
Curso Bases de Datos
15
Álgebra Relacional
• Diferencia: R1 - R2
– Retorna una relación que
contiene todas las tuplas
que aparecen en R1 pero no
en R2 (tuplas idénticas)
– Las relaciones deben tener
cabecera idéntica para que
sean compatibles para la
diferencia
Curso Bases de Datos
16
Álgebra Relacional
• ADMINISTRADOR - PRODUCTOR:
código nombre
1 Jorge Campos
3 Esteban Paz
edad
33
21
• PRODUCTOR - ADMINISTRADOR:
código nombre
8 Jorge Arias
10 Juan Martínez
Curso Bases de Datos
edad
30
19
17
• La unión, intersección y producto cartesiano
son conmutativas y asociativas
• La diferencia no es conmutativa ni
asociativa
• La intersección no es un operador primitivo
ya que se puede expresar mediante la
diferencia
Curso Bases de Datos
18
Álgebra Relacional
No traducirla al español como unión
• Reunión (join): Tiene varias modalidades:
– Reunión natural (natural join): R1 ⋈ R2
Sea R1(A,B) y R2 (B,C). El resultado de R1 ⋈ R2
es una relación con cabecera (A,B,C) donde cada
tupla de R1 se combina con cada tupla de R2
siempre y cuando tengan el mismo valor en el
atributo en común (B).
A, B y C pueden ser atributos compuestos.
Curso Bases de Datos
19
Álgebra Relacional
EMPLEADO
código
1
2
3
8
10
12
nombre
edad depto
Jorge Campos
33
1
Enrique Muñoz
25
1
Esteban Paz
21
1
Jorge Arias
30
2
Juan Martínez
19
2
Anselmo Rodas
28
6
Nota: En este ejemplo, el campo
depto en EMPLEADO no es CF
con respecto a la relación
DEPARTAMENTO
DEPARTAMENTO
depto
1
2
3
4
descripción
Administración
Producción
Ventas
Finanzas
Atributo de
join
Curso Bases de Datos
20
Álgebra Relacional
• 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
Curso Bases de Datos
21
Álgebra Relacional
– Semi reunión (semi join): R1⊳ R2:
• Similar a la reunión natural pero solo se
muestran los atributos de la relación de la
izquierda  ¿Utilidad?
– Reunión Theta (theta join): R1 QCondición R2
• Equivale a: sCondición (R1 X R2)
• El operador de comparación usado en la
condición no es el “=“ de la reunión natural sino
alguno de los siguientes: “>“, “<“, “>=“, “<=“,
“≠“
Curso Bases de Datos
22
Álgebra Relacional
•
EMPLEADO Qdepto > dep rDEPT(dep,desc)
(p(depto,descripción)(DEPARTAMENTO)
)
código
8
10
12
12
12
12
nombre
Jorge Arias
Juan Martínez
Anselmo Rodas
Anselmo Rodas
Anselmo Rodas
Anselmo Rodas
edad
depto
30
19
28
28
28
28
Curso Bases de Datos
dep
2
2
6
6
6
6
desc
1
1
1
2
3
4
Administración
Administración
Administración
Producción
Ventas
Finanzas
23
Álgebra Relacional
• División: R1  R2
Sean las relaciones R1(A,B) y R2(B). El
resultado de R1  R2 es una relación con el
atributo A
• Un valor a  A hace parte del resultado de la
división si a está en R1 combinado con cada
valor  B que aparece en R2
• A y B pueden ser atributos compuestos
Curso Bases de Datos
24
Álgebra Relacional
ARTISTAYGENERO
codartista
nomgénero
GÉNERO
nomgénero
45 Soul
Soul
45 Pop
Pop
45 Dance
Dance
8 Soul
8 Pop
23 Dance
Curso Bases de Datos
25
Álgebra Relacional
• ARTISTAYGENERO GÉNERO
codartista
45
Ya que en este caso solo el artista 45 está
combinado con todos los géneros que
aparecen en la relación GÉNERO
Curso Bases de Datos
26
Álgebra Relacional
Operadores adicionales:
Asignación: VbleRelacion ← Relación
r: Renombra atributos y el nombre de
la relación:
rNUEVONOMBRERELACIÓN(atributos renombrados)(p(atributos)(R))
Nota: El renombrado no es definitivo, este solo tiene efecto
durante la expresión del álgebra relacional.
Curso Bases de Datos
27
Álgebra Relacional
Ģ: Operador de agrupamiento. Funciones de grupo:
SUM(), AVG(), MAX(), MIN(), COUNT()
Lista atributos de agrupamientoĢLista valores agregados(R)
Ej. Sea:
Valor agregado: función de grupo aplicada a
un atributo, cada uno con su renombrado
EMP
código
1
2
3
8
10
12
nombre
edad depto
Jorge Campos
33
1
Enrique Muñoz
25
1
Esteban Paz
21
1
Jorge Arias
30
2
Juan Martínez
19
2
Anselmo Rodas
28
6
¿Qué hace la siguiente consulta?
deptoĢCOUNT(código) AS conteo(EMP)
Curso Bases de Datos
Renombrado
del valor agregado
28
TRABAJADOR
género
cod
Álgebra Relacional
país
salario
1 m
China
100
2 m
UK
200
4 m
China
100
3 f
China
300
8 f
China
100
9 m
UK
23 f
50
China
100
país
país, géneroĢSUM (salario) AS total, COUNT(cod)
AS cuantos (TRABAJADOR)
género
total
cuantos
China
m
200
2
UK
m
250
2
China
f
500
Curso Bases de Datos
29
3
Álgebra Relacional
• Derivación:
EXTEND R ADD Lista cálculos AS Lista atributos
EMP
código
1
2
3
8
10
12
nombre
sal
bono
Jorge Campos
33
1
Enrique Muñoz
25
1
Esteban Paz
21
1
Jorge Arias
30
2
Juan Martínez
19
2
Anselmo Rodas
28
6
Ejemplo: EXTEND EMP ADD sal+bono AS totsal
Curso Bases de Datos
30
Álgebra Relacional
• Se genera una relación como la original pero
con un atributo totsal adicional:
código
1
2
3
8
10
12
nombre
sal
bono totsal
34
Jorge Campos
33
1
26
Enrique Muñoz
25
1
22
Esteban Paz
21
1
32
Jorge Arias
30
2
21
Juan Martínez
19
2
34
Anselmo Rodas
28
6
La relación
original
permanece
intacta
¿Qué hace la siguiente consulta?
Ej: EXTEND EMP ADD 1 AS num, ‘Hola’ AS mensaje
Curso Bases de Datos
31