Sie sind auf Seite 1von 15

álgebra relacional

• lenguaje procedimental
relación 1

álgebra relación 3
relacio-
nal
[relación 2]

• operaciones fundamentales

unarias selección σ (r)


proyección Π(r)
renombrar ρ(r)

binarias producto cartesiano r1 × r2


unión r1 ∪ r2
diferencia r1 — r2
álgebra relacional
selección

• σp(r): obtiene tuplas de r que satisfagan el


predicado lógico p

• ejemplos

° estudiantes de nombre ’josé’


σnombre=’josé’(estudiantes)

666 josé is

668 josé im

° cursos de ingeniería industrial

σdepto=’ii’(cursos)
666 ii 320 9.8
álgebra relacional
proyección

• ΠL(r): obtiene todas las tuplas de r


considerando únicamente los atributos en
la lista L (eliminando atributos en R − L)

• ejemplos

descripciones de cursos

Πdescrip(cursos)
bases de datos

inv. de op.

nombre y carrera de estudiantes

Πnombre, carrera(estudiantes)
josé is

maría is
álgebra relacional
ejemplos (σ y Π)
• descripciones de cursos de ingeniería en sistemas

Πdescrip(σdpto=’is’(cursos))

• id’s de los estudiantes con calificaciones


aprobatorias
Πid(σcalif>7.4(est_cursos))

• nombres y áreas donde trabajan los estudiantes de


ingeniería en sistemas

Πnombre, área(σcarrera=’is’(est_empl))

• ¿son conmutativas σ y Π?
álgebra relacional
producto cartesiano
• r = r1 × r2 r tiene todos los atributos de r1 y r2 y
sus tuplas resultan de todas las
combinaciones posibles de tuplas en r1
con tuplas en r2
• ejemplos

estudiantes × est_cursos

estudiantes. nombre carrera est_cursos. dpto num calif


id id
666 josé is 666 is 441 10.0
666 josé is 666 ii 320 9.8
666 josé is 667 is 441 7.4
667 maría is 666 is 441 10.0
667 maría is 666 ii 320 9.8
667 maría is 667 is 441 7.4
668 josé im 666 is 441 10.0
668 josé im 666 ii 320 9.8
668 josé im 667 is 441 7.4

• nombres de los estudiantes que han reprobado


Πnombre(σcalif<7.5( estudiantes × est_cursos))
^ estudiantes.id =
est_cursos.id
álgebra relacional
renombrar
• ρx(r) una operación puede referirse al atributo a
de r como x.a en lugar de r.a

• ejemplo:
id de estudiantes con el mismo nombre que aquel con
id=666

Πc.id(σe.id = 666 ^ e.nombre=c.nombre


(ρe(estudiantes) × ρc(estudiantes))
álgebra relacional
unión
• r1 ∪ r2 todas las tuplas que aparecen en r1, en
r2 o en ambas

• r1 y r2 deben ser compatibles: mismo número,


nombres y dominios de atributos

• ejemplo

nombre y id de todos los estudiantes de sistemas

Πnombre, id(σcarrera = ’is’(estudiantes) ∪


Πnombre, id(σcarrera = ’is’(est_empl)
álgebra relacional
diferencia de conjuntos
• r1 — r2 tuplas en r1 pero no en r2

• r1 y r2 deben ser compatibles: mismo número,


nombres y dominios de atributos

• ejemplo
id’s de estudiantes que toman el curso ’is 441’ y que no
son empleados

Πid(σdpto=’is’∧num=441(est_cursos)) — Πid(est_empl)
algebra relacional
definición formal

• sean e1 y e2 expresiones que representan una


relación
el álgebra relacional es el conjunto de expresiones
definidas por:
e1 ∪ e2
e1 − e2
e1 × e2
σP (e1) donde P es un predicado involucrando
atributos de e1

ΠL (e1) donde L es un subconjunto de los


atributos de e1

ρx (e1) donde x es un nombre nuevo para e1

• estas operaciones son suficientes para expresar


cualquier query del álgebra relacional
algebra relacional
operaciones adicionales

• para simplificar queries que ocurren comúnmente,


se han introducido:

intersección de conjuntos (∩)

join (producto natural) ( |×| )

división (÷)

asignación (←)

• estas operaciones no agregan expresividad al


álgebra relacional, sólo simplifican la expresión de
algunos queries.
algebra relacional
intersección

• r1 ∩ r2 todas las tuplas que aparecen tanto en


r1 como en r2

• notar que r1∩ r2 = r1 — (r1 — r2)

r1 r2

• ejemplo:

id’s de estudiantes empleados que han reprobado

Πid(est_empl) ∩ Πid(σcalif < 7.5(est_cursos))


algebra relacional
join (producto natural)

• r1 |×| r2 ≡ σP (r1 × r2)


P
donde P es un predicado involucrando
a los atributos comunes entre r1 y r2

• r1 |×| r2 caso específico (equi-join)

σr1.ai = r2.aj (r1 × r2)

donde ai y aj son atributos comunes de


r1 y r2

• efecto: realiza r1 × r2
para atributos comunes en r1 y r2,
selecciona tuplas con valores iguales
elimina columnas duplicadas
equi-join
ejemplos

• nombres de los estudiantes que han reprobado

Πnombre(σcalif<7.5( estudiantes |×| est_cursos))

• id’s de estudiantes que son también empleados

Πid( estudiantes |×| est_empl)

• descripción de los cursos con estudiantes inscritos

Πdescrip(cursos |×| est_cursos)


algebra relacional
división

• división
r ÷ s es una relación en el esquema R − S

Ejemplo:
R = A B C D S= C D R-S= A B

a b c d r÷s= a b
r= s= c d
a b e f e f e d
b c e f
e d c d
e d e f
a b d e

Ejemplo:
Estudiantes que han tomado todos los cursos de IS

∏ID, num (σdpto=’IS’ (est_cursos)) ÷


∏num(σdpto=’IS’(cursos))

Das könnte Ihnen auch gefallen