Pulse aquí para obtener el archivo

Anuncio
Algebra Relacional
Operadores Adicionales
Fuentes http://www-db.stanford.edu/~ullman/fcdb.html
Fundamentals of Database Systems, Elmasri y Navathe
Marta Millan
[email protected]
www.eisc.univalle.edu.co/materias
1
Operadores Adicionales
No añaden poder al algebra relacional
Responden a consultas comunes y frecuentes
Intersección de conjuntos
Join Natural
División
Asignación
Intersección ∩
Operador Binario r ∩ s
r∩s={t|t∈r∧t∈s}
r, s tienen la misma aridad (unión
compatibles)
Atributos de r y s son compatibles
r ∩ s = r – (r – s)
Intersección ∩
Relaciones
A
B
α
α
β
1
2
1
r
r∩s
A
B
α
2
A
B
α
β
2
3
s
Ejemplo
Fundamentals of Database Systems, Elmasri y Navathe
Dadas las relaciones STUDENT, INSTRUCTOR, qué operación
representan (b), (c), (d), (e)
Join Natural r
s
r ,s relaciones definidas sobre esquemas R y S
respectivamente
r
s : relación definida sobre esquema R ∪ S
asi:
Considere cada par de tuplas tr de r y ts de s
Si tr y ts son iguales para cada atributo R ∩ S, una
tupla t se adiciona a la relación resultante, donde
• t tiene el mismo valor de tr en r
• t tiene el mismo valor de ts en s
Join Natural : Ejemplo
R = (A, B, C, D)
S = (E, B, D)
Esquema resultante = (A, B, C, D, E)
r
s se define como
∏r.A, r.B, r.C, r.D, s.E (σr.B = s.B ∧ r.D = s.D (r x s))
Join Natural
Relaciones
A
B
C
D
B
D
E
α
β
γ
α
δ
1
2
4
1
2
α
γ
β
γ
β
a
a
b
a
b
1
3
1
2
3
a
a
a
b
b
α
β
γ
δ
∈
r
r
s
s
A
B
C
D
E
α
α
α
α
δ
1
1
1
1
2
α
α
γ
γ
β
a
a
a
a
b
α
γ
α
γ
δ
Join Natural (*)
Conecta dos relaciones:
Igualando los atributos del mismo nombre, y
Proyectando una copia de cada par de atributos
igualados
Denotado como R3 = R1 ⋈ R2
Ejemplo
Programacion
Asignatura
cod
nombre cred
7500081M
7500082M
7500083M
7500085M
....
BD
MDI
DSI
FADA
gr
aula
Edif Hora
7500081M 01
7500081M 02
2026
331 10-12 Jueves
2026
7500083M 80
2027
331 8-10
331 10-13
7500085M 01
2075
333
cod-c
4
4
4
4
7-10
Horarios= Asignatura⋈Programación
cod-c
nombre
cred
gr
aula
Edif
Hora
dia
01
2026
331
10-12 Jueves
BD
4
4
02
2026
8-10 Viernes
7500083M
DSI
4
80
2027
331
331
7500085M
FADA
4
01
2075
333
7500081M
7500081M
BD
10-13 lunes
7-10 Martes
dia
Viernes
lunes
Martes
Theta-Join
R3 := R1 ⋈C R2
Calcula el producto R1 Χ R2
Aplica la selección σC al resultado
En σ, C puede ser una expresión de valor
booleano
Ejemplo
Programacion
Asignatura
cod
nombre cred
7500081M
7500082M
7500083M
7500085M
....
BD
MDI
DSI
FADA
gr
aula
Edif Hora
7500081M 01
7500081M 02
2026
331 10-12 Jueves
2026
7500083M 80
2027
331 8-10
331 10-13
7500085M 01
2075
333
cod-c
4
4
4
4
7-10
dia
Viernes
lunes
Martes
Horarios= Asignatura⋈Asignatura.cod = Programacion.cod-c Programación
cod-c
nombre
cred
cod-c
gr
aula
Edif Hora
dia
7500081M
7500081M
01
2026
331 10-12 Jueves
BD
4
4
02
2026
7500083M
DSI
4
7500083M
80
2027
331 8-10 Viernes
331 10-13 lunes
7500085M
FADA
4
7500085M
01
2075
333
7500081M
7500081M
BD
7-10
Martes
División
÷
r÷s
Útil en preguntas con expresión “para
todo”
r, s son relaciones definidas sobre
esquemas R y S respectivamente donde
R = (A1, …, Am , B1, …, Bn )
S = (B1, …, Bn)
División
El resultado of r ÷ s es una relación
definida sobre el esquema
R – S = (A1, …, Am)
r ÷ s = { t | t ∈ ∏ R-S (r) ∧ ∀ u ∈ s ( tu ∈ r ) }
tu representa la concatenación de las
tuplas t y u para producir una sola tupla
División
Relaciones
r÷s
A
α
β
A
B
α
α
α
β
γ
δ
δ
δ
∈
∈
β
1
2
3
1
1
1
3
4
6
1
2
r
B
1
2
s
División
Relaciones
A
B
C
D
E
D
E
α
α
α
β
β
γ
γ
γ
a
a
a
a
a
a
a
a
α
γ
γ
γ
γ
γ
γ
β
a
a
b
a
b
a
b
b
1
1
1
1
3
1
1
1
a
b
1
1
r
r÷s
A
B
C
α
γ
a
a
γ
γ
s
Expresiones Complejas
Combinación de operadores, paréntesis y
reglas de precedencia
Notaciones
1. Secuencias de asignaciones
2. Expresiones con varios operadores
3. Arboles de expresión.
Asignaciones
Crea nombres de relaciones temporales
Renombramiento se puede requerir para darle a
una relación relations una lista de atributos
Ejemplo: R3 := R1 ⋈C R2 se puede escribir
R4 := R1 Χ R2
R3 := σC (R4)
Expresiones
El theta-join R3 := R1 ⋈C R2 se puede escribir
R3 := σC (R1 Χ R2)
Precedencia de operadores relacionales
1. [σ, π, ρ] (más alta)
2. [Χ, ⋈]
3. ∩
4. [∪, —]
Arboles de expresión
Hojas son operandos
Nodos internos son operadores aplicados a los
hijos
Ejemplo: encontrar nombres y dirección de
teatros que estén presentando peliculas
dirigidas por Bergman
Arbol de consulta
∏teatro,dirección
σ2=”Bergman”
Location
Movies
Pariscope
Arboles de expresiones
ρtitle, birthdate
σYear = 1996 AND gender ='F' AND StarName=name
⋈
MovieStar
StarIn
Ejemplo
Programación
cod-curso
aula
Dia
7500081M
2026
Martes
7500082M
2075
Martes
7500084M
2027
Lunes
7500085M
2026
Martes
Ejemplo de Join reflexivo
Usar Programación(cod-curso, aula,día) para
encontrar las aulas en las que se ofrecen dos
cursos diferentes el mismo día.
Estrategia
Usando renombramiento, definir una copia de
Programación llamada P(cod-curso1,aula, dia)
El Join Natural de Programación y P consiste de
tuplas (cod-curso, cod-curso1, aula,día) tales que el
aula y el dia son iguales
Esquemas de resultados
Union, intersección, y diferencia: esquemas de
ambps operandos debe ser el mismo. El
esquema del resultado es el mismo
Selección: el esquema del resultado es el
mismo que el del operando
Projección: el esquema está definido por la lista
de atributos
Esquemas de resultados
Producto: esquema formado con los atributos
de ambas relaciones
Usar R.A, etc., para distinguir los nombres de dos
atributos A
Theta-join: igual que el producto
Natural join: unión de los atributos de las dos
relaciones
Renombramiento: el operador indica el
esquema
Asignación
Esta operación (←) ofrece una forma
adecuada para expresar consultas complejas
Una consulta se escribe como una secuencia
• de asignaciones
• Seguida por una expresión cuyo valor se
muestra como resultado de una consulta
Las asignaciones “se asignan” a variables
temporales
Asignación:ejemplo
Escribir r ÷ s como
temp1 ← ∏R-S (r )
temp2 ← ∏R-S ((temp1 x s ) – ∏R-S,S (r ))
result = temp1 – temp2
El resultado de la expresión a la derecha de ← se
asigna a la variable de relación a la izquierda de ←
Las variables se pueden usar en las expresiones
subsecuentes
Ejemplo
Fundamentals of Database Systems, Elmasri y Navathe
Ejemplo
Fundamentals of Database Systems, Elmasri y Navathe
Ejemplos de consultas
Listar los nombres de los dependientes de las
empleadas
Recuperar el nombre del administrador
(manager) de cada departamento
Liste los nombres de los empleados quienes
trabajan en todos los proyectos en los cuales
‘Jhon Smith’ trabaja
Ejemplos de consultas
Listar los nombres de los dependientes de las
empleadas
EMP_MUJER ← σ sex=‘F’(EMPLOYEE)
NOMB_EMP ← π FNAME, LNAME, SSN (EMP_MUJER)
EMP_DEPEN ← NOMB-EMP × DEPENDENT
DEPEN_REALES ← σ SSN=ESSN (EMP_DEPEN)
RESULTADO ← π FNAME, LNAME, DEPENDENT-NAME (DEPEN_REALES)
Ejemplos de consultas
Recuperar el nombre del administrador (manager)
de cada departamento
DEPT_ADMINISTRADOR ← DEPARTMENT
MGRSSN=SSN EMPLOYEE
RESULTADO ← π DNAME, LNAME, FNAME (DEPT_ADMINISTRADOR)
Ejemplos
Liste los nombres de los empleados quienes
trabajan en todos los proyectos en los cuales
‘John Smith’ trabaja
SMITH ←
σ
FNAME=‘John’ AND LNAME=‘Smith’ (EMPLOYEE)
SMITH_PRO ← π PNS ( WORKS_ON
ESSN=SSN
SMITH)
SSN_PRO ← π ESSN,PNO ( WORKS_ON)
SSNS (SSN) ← SSN_PRO ÷ SMITH_PRO
RESULTADO ← π FNAME, LNAME (SSNS
*
EMPLOYEE)
Descargar