Upload
fernando-martinez
View
220
Download
0
Embed Size (px)
Citation preview
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
1/31
Sistemas de Informacin II
Tema6. lgebra
relacionalBibliografa:Elmasri y Navathe:Fundamentosde Sistemasde Basesde
Datos
3 edii!n"#$$# %&a'tulo ()*
+aria,-olina".llman y /idom: Database systems: the
om'leteboo0* 1rentie,2all %&a'tulo )*
CarlosCastillo
.1F 4 #$$(
5
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
2/31
#
Operaciones
1royetar %)
Seleionar
%)
1roduto artesiano%)
6oin! 7eunir % )
8'eraionesde on9untos
.nir %)
Intersectar()
: Restar()
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
3/31
~
.I~I,.\;I.
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
4/31
3
n
Proyeccin()
Seleionael valorde iertosatributosde todas lastu'lasde una relai!n
A1,A2,...,A
(R)={
t[A1,A
2,...,A
n]:tR }
Seleionaolumnasom'letas
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
5/31
ID_Pelcula Nombre Ao1 Laguerradelasgalaxias 1!!" #lseorde losanillos1 "$$1% &arAdentro "$$'' #lia)ede*+i+iro "$$1
ID_Actor Nombre A,ellido1 &ar- .amill
" *risto,+er Lee% /aier 0ardem' .ugo 1eaing
Proyeccin() ejemplosPelcula Actor
Ao
(Pelcula)2
341!!564"$$1564"$$'564"$$157
ID_Pelcula6Ao(Pelcula)2
34161!!564"6"$$1564%6"$$'564'6"$$157
Nombre(Actor)2
34&ar-564*risto,+er564/a(ier564.ugo57
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
6/31
n
Proyeccin() en S!
A1,A2,...,A
(R)
SELECT A1,A2,...,An FROM R
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
7/31
;
Seleccin ()
Seleionael valorde iertastu'las
condicin(R)={tR: condicin(t)es
cierto}
Seleionafilas om'letas
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
8/31
ID_Pelcula Nombre Ao1 Laguerradelasgalaxias 1!!" Lacomunidaddelanillo "$$1% &arAdentro "$$'' #lia)ede*+i+iro "$$1
ID_Actor Nombre A,ellido1 &ar- .amill
" *risto,+er Lee% /aier 0ardem' .ugo 1eaing
(
Seleccin () ejemplosPelcula Actor
A,ellido2Lee(Actor)2
34"6*risto,+er6Lee57
Ao5"$$$(Pelcula)2
34"6Lacomunidad delanillo6"$$1564'6#liaede*+i+iro6"$$157
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
9/31
Seleccin () en S!
condicin
(R
)
SELECT * FROM R WHERE condicin
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
10/31
ID_Pelcula Nombre Ao1 Laguerradelasgalaxias 1!!" Lacomunidaddelanillo "$$1% &arAdentro "$$'' #lia)ede*+i+iro "$$1
ID_Actor Nombre A,ellido1 &ar- .amill" *risto,+er Lee% /aier 0ardem' .ugo 1eaing
Composicinde seleccin yproyeccin,?
Pelcula Actor
Nombre(A,ellido2Lee(Actor))2
34*risto,+er57
Nombre(Ao5"$$$(Pelcula))2
34Lacomunidad delanillo56
4#liaede*+i+iro57
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
11/31
5$
n
Composicin(y ?) en S!
A1,A2,...,A
(condicin
(R))
SELECT A1,A2,...,An FROM R WHERE condicin
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
12/31
ID_Pelcula Nombre Ao ID_#studio1 Laguerradelasgalaxias 1!! %" Lacomunidaddelanillo "$$1 "% &aradentro "$$' '' #lia)ede *+i+iro "$$1 1
"liminar d#plicados ()
Elimina tu'las
du'liadasen una
relai!n
(R)
Pelcula
(?Ao(Pelcula)231!6"$$16"$$' 7
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
13/31
Operacindelta en S!
(R)
SELECT DISTINCT * FROM R
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
14/31
Prod#ctocartesiano()
A
B = {(a,b):a A b B}
E9em'lo:
< = >s"t?
B = >u"v"@?
s"t?>u"v"@?
> %s"u)"%s"v)"%s"@)"%t"u)"%t"v)"%t"@) ?
Aaardinalidades B
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
15/31
Prod#ctocartesiano()
ID_Pelcula Nombre Ao ID_#studio1 Laguerradelasgalaxias 1!! %" Lacomunidaddelanillo "$$1 "% &aradentro "$$' '' #lia)ede *+i+iro "$$1 1
Pelcula
ejemplosEstudio
ID_
#stud
io Nombre
1 8+ibli" Ne9Line*inema% Lucas:ilms' ;ogecine
PelculaEstudio2
3
416Laguerradelasgalaxias61!!6%6168+ibli56
416Laguerradelasgalaxias61!!6%6"6Ne9Line*inema56
416Laguerradelasgalaxias61!!6%6%6Lucas:ilms56
416Laguerradelasgalaxias61!!6%6'6;ogecine56
4"6Lacomunidaddelanillo6"$$16"6168+ibli56
4"6Lacomunidaddelanillo6"$$16"6"6Ne9Line*inema56
4"6Lacomunidaddelanillo6"$$16"6%6Lucas:ilms56
4"6Lacomunidaddelanillo6"$$16"6'6;ogecine56
4%6&aradentro6"$$'6'6168+ibli56
4%6&aradentro6"$$'6'6"6Ne9Line*inema56
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
16/31
5
Prod#ctocartesiano() enS!
R1
R2
SELECT * FROM R1,R2
S l i bi i
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
17/31
Seleccionarcombinaciones
ID_Pelcula Nombre Ao ID_#studio1 Laguerradelasgalaxias 1!! %" Lacomunidaddelanillo "$$1 "% &aradentro "$$' '' #lia)ede *+i+iro "$$1 1
ID_#studio Nombre1 8+ibli" Ne9Line*inema% Lucas:ilms' ;ogecine
5;
correctasPelcula Estudio
Pelcula.!"estudio=#studio.!"#studio(Pelcula#studio)2
3
416Laguerradelasgalaxias61!!6%6%6Lucas:ilms56
4"6Lacomunidaddelanillo6"$$16"6"6Ne9Line*inema56
4%6&
aradentro6"$$'6'6'6;ogecine5
64'6#lia)ede*+i+iro6"$$1616168+ibli5
7
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
18/31
correctasen S!
R1.$=R2.$
(R1R
2)
SELECT * FROM R1,R2WHERE R1.k=R2.k
$ t i i
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
19/31
$otacin% operacin&e#nir (JOIN)
R1.$=R2.$
(R1R
2)
R1 $
R2
5
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
20/31
Operacin'OI$ en S!
R1 $
R2
SELECT * FROM R1,R2WHERE R1.k=R2.k
5
Op ra in 'OI$
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
21/31
Operacin'OI$en (yS!
R1 $
R2
SELECT * FROM R1 JOIN R2 USIN!k"
#$
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
22/31
'OI$ nat#ral
R1
R2
8mitir el subndiesignifia:
.nir segFn todos los atributos Gue tenganel mismo nombre en las dos tablas
#5
Operacin $)T*&)! 'OI$
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
23/31
Operacin$)T*&)! 'OI$en (yS!
R1
R2
SELECT * FROM R1
NATURAL JOIN R2
Nota: esto usa todos los atributos Gue se llamen de lamisma manera" a vees no es lo Gue nosotros Gueremos
Co#$ni%&%! id'co#$ni%&%, no# "M$nici(i! id'#$nici(i, id'co#$ni%&%, no# "
Hueremos unir idIomunitat'ero no nom ##
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
24/31
"jemplode $)T*&)! 'OI$#)+,- ,c% co#$ni%&%.no#, #$nici(i.no#, #$nici(i.*$(/0ici0/o# co#$ni%&% n&%$/&oin #$nici(i33334 no# 4 no# 4 *$(/0ici 433334 C$%& 4 C$%& 4 15.62 44 Mi& 4 Mi& 4 17.58 4
33332 /o9 in % !:.1; *c"#)+,- ,c% co#$ni%&%.no#, #$nici(i.no#,#$nici(i.*$(/0ici 0/o# co#$ni%&%oin #$nici(i$*in
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
25/31
!"+T 'OI$
68JNeliminaalgunosdatosAos Gue no estKn en las dos tablas
AEFL 68JNreem'laMalos eliminados'or
valoresnulosen latablade laiMGuierda
#C
Operacin !"+T 'OI$
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
26/31
#
Operacin!"+T 'OI$en (yS!
R1 $
R2
SELECT * FROM R1 LEFT JOIN R2 USIN!k"
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
27/31
#;
ID_Pelcula Nom
bre Ao ID_#studio1 Laguerradelasgalaxias 1!! %" Lacomunidaddelanillo "$$1 "% &aradentro "$$' '' #lia)ede *+i+iro "$$1 1
*N= Nombre1 8+ibli1 Ne9Line*inema1 Lucas:ilms1 ;ogecine
*N= Nombre1 8+ibli1 Ne9Line*inema1 Lucas:ilms1 ;ogecine$ Nue(o #studio
"jemplo!"+T 'OI$Pelcula
Estudio
ID_#studio Nombre1 8+ibli" Ne9Line *inema% Lucas:ilms' ;ogecine> Nue(o #studio
SELECT co$n%!id'(ic$&"AS CNTFROM *%$dio JOIN (ic$&
USIN !id'*%$dio"
SELECT co$n%!id'(ic$&"AS CNTFROM *%$dio LEFT JOIN (ic$&
USIN !id'*%$dio"
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
28/31
#(
id_salida id_llegada
1 "1 '> %> '
> "> 1" '
id_ciudad Nombre1 0arcelona" 0erlin% Roma' Paris> 0uda,est
Nombre *N=0arcelona "0erlin 10uda,est 'Paris $
Rom
a $
Otro ejemplo!"+T 'OI$Ciudad
Viaje
SELECTci$d&d.no#>/,COUNT!@i&.id'*&id&"
FROMci$d&d LEFT JOIN @i& ON!ci$d&d.id'ci$d&d=@i&.id'*&id&"
ROU Bci$d&d.no#>/
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
29/31
#
id_salida id_llegada1 "1 '> %> '
> "> 1" '
Nombre Nombre0arcelona 0erlin0arcelona Paris0uda,est Roma
0uda,est Paris0uda,est 0erlin0uda,est 0arcelona0erlin Paris
"jemplom,ltiples'OI$
Ciudad
Viaje
id_ciudad Nombre1 0arcelona" 0erlin% Roma' Paris> 0uda,est
SELECT c*.no#>/, c.no#>/FROM @i&
JOIN ci$d&d AS c ON!@i&.id'*&id&=c*.id'ci$d&d" JOINci$d&d AS c, ON!@i&.id'
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
30/31
#
&es#men
1royetar %): elegirolumnas
Seleionar%): riterio'ara las
filas 1roduto artesiano%):
'rodutotablas
6oin! 7eunir % )?combinartablas
7/25/2019 Bases de Datos Parte 610 Lgebra Relacional3277
31/31
~
.I~I,.\;I.