basi di dati algebra relazionale - innovit.org · m4880 sistemi digitali 2 d104 d102 verdi...
TRANSCRIPT
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 1
DBMG
Modello relazionale e algebra relazionale
Algebra relazionale
IntroduzioneSelezione e proiezioneProdotto cartesiano e joinNatural join, theta-join e semi-join
DBMG 2
j , j jOuter joinUnione e intersezioneDifferenza e antijoinDivisione e altri operatori
DBMG
Algebra relazionale
Algebra relazionale
Estende l’algebra degli insiemi per il modello relazionaleDefinisce un insieme di operatori che operano su relazioni e producono come risultato una
l i
DBMG 4
relazioneGode della proprietà di chiusura
il risultato di qualunque operazione algebrica su relazioni è a sua volta una relazione
Operatori dell’algebra relazionale
Operatori unariselezione (σ)proiezione (π)
Operatori binari
DBMG 5
prodotto cartesiano (×)join ( )unione (∪)intersezione (∩)differenza (-) divisione (/)
Operatori dell’algebra relazionale
Operatori insiemisticiunione (∪)intersezione (∩)differenza (-)
DBMG 6
prodotto cartesiano (×)
Operatori relazionaliselezione (σ)proiezione (π)join ( )divisione (/)
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 2
Relazioni d’esempio
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
Corsi
DBMG 7
F0410 Basi di dati 2 D102
Docenti MatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG
Algebra relazionale
Selezione
La selezione estrae un sottoinsieme “orizzontale”della relazione
opera una decomposizione orizzontale della relazione
DBMG 9
Selezione: esempio
Trovare i corsi tenuti nel secondo semestre
DBMG 10
Selezione: esempio
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
Corsi
DBMG 11
F0410 Basi di dati 2 D102
Selezione: esempio
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104F1401 Elettronica 1 D104
Corsi
DBMG 12
Codice NomeCorso Semestre MatrDocenteM4880 Sistemi digitali 2 D104
F0410 Basi di dati 2 D102
R
F0410 Basi di dati 2 D102
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 3
Selezione: definizione
R = σpALa selezione genera una relazione R
avente lo stesso schema di Acontenente tutte le tuple della relazione A per cui è
DBMG 13
è vero il predicato pIl predicato p è un’espressione booleana (operatori ∧,∨,¬) di espressioni di confronto tra attributi o tra attributi e costanti
p: Città=‘Torino’ ∧ Età>18p: DataRestituzione>DataConsegna+10
Selezione: esempio
Trovare i corsi tenuti nel secondo semestre
DBMG 14
Corsi
Selezione: esempio
Trovare i corsi che tenuti nel secondo semestre
σSemestre=2
DBMG 15
Corsi
Selezione: esempio
Trovare i corsi tenuti nel secondo semestre
σSemestre=2
R
DBMG 16
Corsi
Selezione: esempio
Trovare i corsi tenuti nel secondo semestreR = σSemestre=2Corsi
σSemestre=2
R
DBMG 17
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi
Corsi
Proiezione
La proiezione estrae un sottoinsieme “verticale”della relazione
opera una decomposizione verticale della relazione
DBMG 18
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 4
Proiezione: esempio (n. 1)
Trovare il nome dei docenti
DBMG 19
Docenti MatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
Proiezione: esempio (n. 1)
DBMG 20
Docenti MatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
Proiezione: esempio (n. 1)
DBMG 21
R NomeDocVerdi
Neri
Bianchi
Proiezione: definizione
R = πLALa proiezione genera una relazione R
avente come schema la lista di attributi L (sottoinsieme dello schema di A)
DBMG 22
contenente tutte le tuple presenti in A
Trovare il nome dei docenti
Docenti
πNomeDoc
R
Proiezione: esempio (n. 1)
DBMG 23
Docenti
Trovare il nome dei docenti
R = πNomeDocDocenti
Docenti
πNomeDoc
R
Proiezione: esempio (n. 1)
DBMG 24
Docenti MatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
Docenti
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 5
Proiezione: esempio (n. 2)
Trovare i nomi dei dipartimenti in cui è presente almeno un docente
DBMG 25
Proiezione: esempio (n. 2)
Trovare i nomi dei dipartimenti in cui è presente almeno un docente
R = πDipartimentoDocentiπDipartimento
R
DBMG 26
Docenti
Proiezione: esempio (n. 2)
Docenti MatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG 27
Proiezione: esempio (n. 2)
Docenti MatrDocente NomeDoc DipartimentoD102 Verdi InformaticaD105 Neri InformaticaD104 Bianchi Elettronica
DBMG 28
R DipartimentoInformatica
Elettronica
Proiezione: definizione
R = πLALa proiezione genera una relazione R
avente come schema la lista di attributi L (sottoinsieme dello schema di A)
DBMG 29
contenente tutte le tuple presenti in A
Sono eliminati gli eventuali duplicati dovuti all’esclusione degli attributi non in L
se L include una chiave candidata, non vi sono duplicati
Selezione+proiezione: esempio
Selezionare il nome dei corsi nel secondo semestre
DBMG 30
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 6
Selezione+proiezione: esempio
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
Corsi
DBMG
F0410 Basi di dati 2 D102
Selezione+proiezione: esempio
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104F1401 Elettronica 1 D104
Corsi
DBMG
Codice NomeCorso Semestre MatrDocenteM4880 Sistemi digitali 2 D104
F0410 Basi di dati 2 D102
Selezione
F0410 Basi di dati 2 D102
Selezione+proiezione: esempio
Codice NomeCorso Semestre MatrDocenteM4880 Sistemi digitali 2 D104
F0410 Basi di dati 2 D102
DBMG 33
NomeCorsoSistemi digitali
Basi di dati
Proiezione
R
Selezione+proiezione: esempio
σSemestre=2
Trovare il nome dei corsi nel secondo semestre
DBMG 34
Corsi
Selezione+proiezione: esempio
σSemestre=2
πNomeCorso
RTrovare il nome dei corsi nel secondo semestre
DBMG 35
Corsi
Selezione+proiezione: esempio
σSemestre=2
πNomeCorso
RTrovare il nome dei corsi nel secondo semestre
R = πNomeCorso(σSemestre=2Corsi)
DBMG 36
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi
Corsi
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 7
Selezione+proiezione: esempio (corretto?)
Trovare il nome dei corsi nel secondo semestre
R = σSemestre=2 (πNomeCorsoCorsi)
σSemestre=2
πNomeCorso
R
DBMG 37
CorsiCodice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi
Selezione+proiezione: soluzione errata
Corsi Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
DBMG 38
F0410 Basi di dati 2 D102
Selezione+proiezione: soluzione errata
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
Corsi
DBMG 39
NomeCorsoInformatica 1
Sistemi digitali
ElettronicaBasi di dati
Proiezione
F0410 Basi di dati 2 D102
Selezione+proiezione: soluzione errata
NomeCorsoInformatica 1
Sistemi digitali
DBMG 40
L’attributo Semestre non esiste piùnon è più disponibile l’informazione relativa al semestre
non si può eseguire l’operazione di selezione
ElettronicaBasi di dati
Selezione+proiezione: soluzione errata
Trovare il nome dei corsi nel secondo semestre
R = σSemestre=2 (πNomeCorsoCorsi)
σSemestre=2
πNomeCorso
R
DBMG 41
CorsiCodice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi
DBMG
Algebra relazionale
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 8
Prodotto cartesiano
Il prodotto cartesiano di due relazioni A e B genera tutte le coppie formate da una tupla di A e una tupla di B
DBMG 43
Prodotto cartesiano: esempio
Trovare il prodotto cartesiano tra Corsi e Docenti
DBMG 44
Prodotto cartesiano: esempio
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
Corsi
DBMG 45
F0410 Basi di dati 2 D102
Docenti MatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
Prodotto cartesiano: esempio
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
M2170 Informatica 1 1 D102 D102 Verdi Informatica
M2170 Informatica 1 1 D102 D105 Neri Informatica
M2170 Informatica 1 1 D102 D104 Bianchi Elettronica
R
DBMG 46
Prodotto cartesiano: esempio
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
M2170 Informatica 1 1 D102 D102 Verdi Informatica
M2170 Informatica 1 1 D102 D105 Neri Informatica
M2170 Informatica 1 1 D102 D104 Bianchi Elettronica
R
DBMG 47
M4880 Sistemi digitali
2 D104 D102 Verdi Informatica
M4880 Sistemi digitali
2 D104 D105 Neri Informatica
M4880 Sistemi digitali
2 D104 D104 Bianchi Elettronica
Prodotto cartesiano: esempio
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
M2170 Informatica 1 1 D102 D102 Verdi Informatica
M2170 Informatica 1 1 D102 D105 Neri Informatica
M2170 Informatica 1 1 D102 D104 Bianchi Elettronica
R
DBMG 48
M4880 Sistemi digitali
2 D104 D102 Verdi Informatica
M4880 Sistemi digitali
2 D104 D105 Neri Informatica
M4880 Sistemi digitali
2 D104 D104 Bianchi Elettronica
F1401 Elettronica 1 D104 D102 Verdi Informatica
F1401 Elettronica 1 D104 D105 Neri Informatica
F1401 Elettronica 1 D104 D104 Bianchi Elettronica
F0410 Basi di dati 2 D102 D102 Verdi Informatica
F0410 Basi di dati 2 D102 D105 Neri Informatica
F0410 Basi di dati 2 D102 D104 Bianchi Elettronica
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 9
Prodotto cartesiano: definizione
R = A × BIl prodotto cartesiano di due relazioni A e B genera una relazione R
avente come schema l’unione degli schemi di A e di B
DBMG 49
di B contenente tutte le coppie formate da una tupla di A e una tupla di B
Il prodotto cartesiano è commutativo
A × B = B × A
associativo(A × B) × C = A × (B × C)
Trovare il prodotto cartesiano tra Corsi e Docenti
Prodotto cartesiano: esempio
R
DBMG 50
Corsi Docenti
Trovare il prodotto cartesiano tra Corsi e Docenti
R = Corsi × Docenti
Prodotto cartesiano: esempio
R
DBMG 51
Corsi Docenti
Legame tra attributi
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
M2170 Informatica 1 1 D102 D102 Verdi Informatica
M2170 Informatica 1 1 D102 D105 Neri Informatica
M2170 Informatica 1 1 D102 D104 Bianchi Elettronica
R
DBMG 52
M4880 Sistemi digitali
2 D104 D102 Verdi Informatica
M4880 Sistemi digitali
2 D104 D105 Neri Informatica
M4880 Sistemi digitali
2 D104 D104 Bianchi Elettronica
F1401 Elettronica 1 D104 D102 Verdi Informatica
F1401 Elettronica 1 D104 D105 Neri Informatica
F1401 Elettronica 1 D104 D104 Bianchi Elettronica
F0410 Basi di dati 2 D102 D102 Verdi Informatica
F0410 Basi di dati 2 D102 D105 Neri Informatica
F0410 Basi di dati 2 D102 D104 Bianchi Elettronica
Join
Il join di due relazioni A e B genera tutte le coppie formate da una tupla di A e una tupla di B “semanticamente legate”
DBMG 53
Join: esempio
Trovare le informazioni sui corsi e sui docenti che li tengono
DBMG 54
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 10
Join: esempio
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
Corsi
DBMG 55
F0410 Basi di dati 2 D102
Docenti MatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
Join: esempio
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
M2170 Informatica 1 1 D102 D102 Verdi Informatica
M2170 Informatica 1 1 D102 D105 Neri Informatica
M2170 Informatica 1 1 D102 D104 Bianchi Elettronica
DBMG 56
M4880 Sistemi digitali
2 D104 D102 Verdi Informatica
M4880 Sistemi digitali
2 D104 D105 Neri Informatica
M4880 Sistemi digitali
2 D104 D104 Bianchi Elettronica
F1401 Elettronica 1 D104 D102 Verdi Informatica
F1401 Elettronica 1 D104 D105 Neri Informatica
F1401 Elettronica 1 D104 D104 Bianchi Elettronica
F0410 Basi di dati 2 D102 D102 Verdi Informatica
F0410 Basi di dati 2 D102 D105 Neri Informatica
F0410 Basi di dati 2 D102 D104 Bianchi Elettronica
Join: esempio
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
M2170 Informatica 1 1 D102 D102 Verdi Informatica
M4880 Sistemi digitali
2 D104 D104 Bianchi Elettronica
F1401 Elettronica 1 D104 D104 Bianchi Elettronica
R
DBMG 57
F1401 Elettronica 1 D104 D104 Bianchi Elettronica
F0410 Basi di dati 2 D102 D102 Verdi Informatica
Join: esempio
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
M2170 Informatica 1 1 D102 D102 Verdi Informatica
M4880 Sistemi digitali
2 D104 D104 Bianchi Elettronica
F1401 Elettronica 1 D104 D104 Bianchi Elettronica
R
DBMG 58
Nota bene: il docente (D105,Neri,Informatica), che non tiene alcun corso, non compare nel risultato del join
F1401 Elettronica 1 D104 D104 Bianchi Elettronica
F0410 Basi di dati 2 D102 D102 Verdi Informatica
Join: definizione
Il join è un operatore derivatopuò essere espresso utilizzando gli operatori ×, σp, πL
Il join è definito separatamente perché esprime i t ti t lt i i i ti ll
DBMG 59
sinteticamente molte operazioni ricorrenti nelle interrogazioniEsistono diversi tipi di join
natural jointheta-join (e il suo sottocaso equi-join)semi-join
DBMG
Algebra relazionale
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 11
R = A BIl natural join di due relazioni A e B genera una relazione R
avente come schema
Natural join: definizione
DBMG 61
gli attributi presenti nello schema di A e non presenti nello schema di Bgli attributi presenti nello schema di B e non presenti nello schema di Auna sola copia degli attributi comuni (con lo stesso nome nello schema di A e di B)
contenente tutte le coppie costituite da una tupla di A e una tupla di B per cui il valore degli attributi comuni è uguale
R = A BIl natural join è commutativo e associativo
Natural join: proprietà
DBMG 62
Natural join: esempio
Corsi Docenti
RTrovare le informazioni sui corsi e sui docenti che li tengono
DBMG 63
Co s oce t
Trovare le informazioni sui corsi e sui docenti che li tengono
R = Corsi Docenti
Natural join: esempio
Corsi Docenti
R
DBMG 64
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre MatrDocente
Docenti.NomeDoc
Docenti.Diparimento
M2170 Informatica 1 1 D102 Verdi Informatica
M4880 Sistemi digitali 2 D104 Bianchi Elettronica
F1401 Elettronica 1 D104 Bianchi Elettronica
F0410 Basi di dati 2 D102 Verdi Informatica
R
Corsi Docenti
Trovare le informazioni sui corsi e sui docenti che li tengono
R = Corsi Docenti
Natural join: esempio
Corsi Docenti
R
DBMG 65
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre MatrDocente
Docenti.NomeDoc
Docenti.Diparimento
M2170 Informatica 1 1 D102 Verdi Informatica
M4880 Sistemi digitali 2 D104 Bianchi Elettronica
F1401 Elettronica 1 D104 Bianchi Elettronica
F0410 Basi di dati 2 D102 Verdi Informatica
R
Co s oce t
Trovare le informazioni sui corsi e sui docenti che li tengono
R = Corsi Docenti
Natural join: esempio
Corsi Docenti
R
DBMG 66
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre MatrDocente
Docenti.NomeDoc
Docenti.Diparimento
M2170 Informatica 1 1 D102 Verdi Informatica
M4880 Sistemi digitali 2 D104 Bianchi Elettronica
F1401 Elettronica 1 D104 Bianchi Elettronica
F0410 Basi di dati 2 D102 Verdi Informatica
R
Co s oce t
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 12
Trovare le informazioni sui corsi e sui docenti che li tengono
R = Corsi Docenti
Natural join: esempio
Corsi Docenti
R
DBMG 67
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre MatrDocente
Docenti.NomeDoc
Docenti.Diparimento
M2170 Informatica 1 1 D102 Verdi Informatica
M4880 Sistemi digitali 2 D104 Bianchi Elettronica
F1401 Elettronica 1 D104 Bianchi Elettronica
F0410 Basi di dati 2 D102 Verdi Informatica
R
Corsi Docenti
Natural join: esempio
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre MatrDocente
Docenti.NomeDoc
Docenti.Diparimento
M2170 Informatica 1 1 D102 Verdi Informatica
M4880 Sistemi digitali 2 D104 Bianchi Elettronica
F1401 Elettronica 1 D104 Bianchi Elettronica
F0410 B i di d ti 2 D102 V di I f ti
R
DBMG 68
Nota bene: l’attributo comune MatrDocente è presente una volta sola nello schema della relazione risultante R
F0410 Basi di dati 2 D102 Verdi Informatica
Theta-join
Il theta-join di due relazioni A e B genera tutte le coppie formate da una tupla di A e una tupla di B che soddisfano una generica “condizione di legame”
DBMG 69
Theta-join: esempio
Trovare la matricola dei docenti che sono titolari di almeno due corsi
DBMG 70
Theta-join: esempio
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi C1
DBMG 71
F0410 Basi di dati 2 D102
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi C2
Trovare la matricola dei docenti che sono titolari di almeno due corsi
Theta-join: esempio
p
DBMG 72
p: C1.MatrDocente=C2.MatrDocente
Corsi C1 Corsi C2
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 13
Theta-join: esempio
p
Trovare la matricola dei docenti che sono titolari di almeno due corsi
DBMG 73
p: C1.MatrDocente=C2.MatrDocente ∧ C1.Codice<>C2.Codice
Corsi C1 Corsi C2
Theta-join: esempio
p
RπC1.MatrDocente
Trovare la matricola dei docenti che sono titolari di almeno due corsi
DBMG 74
p: C1.MatrDocente=C2.MatrDocente ∧ C1.Codice<>C2.Codice
R = πC1.MatrDocente((Corsi C1) (Corsi C2))p
Corsi C1 Corsi C2
Theta-join: esempio
Corsi C1.Codice
Corsi C1.NomeCorso
Corsi C1.Semestre
Corsi C1.MatrDocente
Corsi C2.Codice
Corsi C2.NomeCorso
Corsi C2.Semestre
Corsi C2.MatrDocente
M2170 Informatica 1 1 D102 M2170 Informatica 1 1 D102
M2170 Informatica 1 1 D102 M4880 Sistemi digitali 2 D104
M2170 Informatica 1 1 D102 F1401 Elettronica 1 D104
M2170 Informatica 1 1 D102 F0410 Basi di dati 2 D102
M4880 Sistemi digitali 2 D104 M2170 Informatica 1 1 D102
DBMG
g
M4880 Sistemi digitali 2 D104 M4880 Sistemi digitali 2 D104
M4880 Sistemi digitali 2 D104 F1401 Elettronica 1 D104
M4880 Sistemi digitali 2 D104 F0410 Basi di dati 2 D102
F1401 Elettronica 1 D104 M2170 Informatica 1 1 D102
F1401 Elettronica 1 D104 M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104 F1401 Elettronica 1 D104
F1401 Elettronica 1 D104 F0410 Basi di dati 2 D102
F0410 Basi di dati 2 D102 M2170 Informatica 1 1 D102
F0410 Basi di dati 2 D102 M4880 Sistemi digitali 2 D104
F0410 Basi di dati 2 D102 F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102 F0410 Basi di dati 2 D102
Theta-join: esempio
Corsi C1.Codice
Corsi C1.NomeCorso
Corsi C1.Semestre
Corsi C1.MatrDocente
Corsi C2.Codice
Corsi C2.NomeCorso
Corsi C2.Semestre
Corsi C2.MatrDocente
M2170 Informatica 1 1 D102 M2170 Informatica 1 1 D102
M2170 Informatica 1 1 D102 M4880 Sistemi digitali 2 D104
M2170 Informatica 1 1 D102 F1401 Elettronica 1 D104
M2170 Informatica 1 1 D102 F0410 Basi di dati 2 D102
M4880 Sistemi digitali 2 D104 M2170 Informatica 1 1 D102
DBMG
g
M4880 Sistemi digitali 2 D104 M4880 Sistemi digitali 2 D104
M4880 Sistemi digitali 2 D104 F1401 Elettronica 1 D104
M4880 Sistemi digitali 2 D104 F0410 Basi di dati 2 D102
F1401 Elettronica 1 D104 M2170 Informatica 1 1 D102
F1401 Elettronica 1 D104 M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104 F1401 Elettronica 1 D104
F1401 Elettronica 1 D104 F0410 Basi di dati 2 D102
F0410 Basi di dati 2 D102 M2170 Informatica 1 1 D102
F0410 Basi di dati 2 D102 M4880 Sistemi digitali 2 D104
F0410 Basi di dati 2 D102 F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102 F0410 Basi di dati 2 D102
Theta-join: esempio
Corsi C1.Codice
Corsi C1.NomeCorso
Corsi C1.Semestre
Corsi C1.MatrDocente
Corsi C2.Codice
Corsi C2.NomeCorso
Corsi C2.Semestre
Corsi C2.MatrDocente
M2170 Informatica 1 1 D102 F0410 Basi di dati 2 D102
M4880 Sistemi digitali 2 D104 F1401 Elettronica 1 D104
F1401 Elettronica 1 D104 M4880 Sistemi digitali 2 D104
F0410 Basi di dati 2 D102 M2170 Informatica 1 1 D102
DBMG 77
Theta-join: esempio
Corsi C1.Codice
Corsi C1.NomeCorso
Corsi C1.Semestre
Corsi C1.MatrDocente
Corsi C2.Codice
Corsi C2.NomeCorso
Corsi C2.Semestre
Corsi C2.MatrDocente
M2170 Informatica 1 1 D102 F0410 Basi di dati 2 D102
M4880 Sistemi digitali 2 D104 F1401 Elettronica 1 D104
F1401 Elettronica 1 D104 M4880 Sistemi digitali 2 D104
F0410 Basi di dati 2 D102 M2170 Informatica 1 1 D102
DBMG 78
Corsi C1.MatrDocente
D102
D104
R
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 14
Theta-join: definizione
R = A pBIl theta-join di due relazioni A e B genera una relazione R
avente come schema l’unione degli schemi di A e di B
DBMG 79
di Bcontenente tutte le coppie costituite da una tupla di A e una tupla di B per cui è vero il predicato p
Il predicato p è nella forma X θ YX è un attributo di A, Y è un attributo di Bθ è un operatore di confronto compatibile con i domini di X e di Y
Il theta-join è commutativo e associativo
Equi-join: definizione
R = A pBEqui-join
caso particolare del theta-join in cui θ è l’operatore di uguaglianza (=)
DBMG 80
Il semi-join di due relazioni A e B seleziona tutte le tuple di A “semanticamente legate” ad almeno una tupla di B
le informazioni di B non compaiono nel risultato
Semi-join
DBMG 81
Trovare le informazioni relative ai docenti titolari di almeno un corso
Semi-join: esempio
DBMG 82
Semi-join: esempio
Docenti MatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG 83
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi
Semi-join: esempio
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
D102 Verdi Informatica M2170 Informatica 1 1 D102
D102 Verdi Informatica M4880 Sistemi digitali
2 D104
D102 Verdi Informatica F1401 Elettronica 1 D104
DBMG 84
D102 Verdi Informatica F1401 Elettronica 1 D104
D102 Verdi Informatica F0410 Basi di dati 2 D102
D105 Neri Informatica M2170 Informatica 1 1 D102
D105 Neri Informatica M4880 Sistemi digitali
2 D104
D105 Neri Informatica F1401 Elettronica 1 D104
D105 Neri Informatica F0410 Basi di dati 2 D102
D104 Bianchi Elettronica M2170 Informatica 1 1 D102
D104 Bianchi Elettronica M4880 Sistemi digitali
2 D104
D104 Bianchi Elettronica F1401 Elettronica 1 D104
D104 Bianchi Elettronica F0410 Basi di dati 2 D102
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 15
Semi-join: esempio
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
D102 Verdi Informatica M2170 Informatica 1 1 D102
D102 Verdi Informatica F0410 Basi di dati 2 D102
D104 Bianchi Elettronica M4880 Sistemi digitali
2 D104
DBMG 85
digitali
D104 Bianchi Elettronica F1401 Elettronica 3 D104
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
D102 Verdi Informatica
D104 Bianchi Elettronica
R
R = A pBIl semi-join di due relazioni A e B genera una relazione R
avente lo stesso schema di A
Semi-join: definizione
DBMG 86
contenente tutte le tuple di A per cui è vero il predicato specificato da p
Il predicato p è espresso nella stessa forma del theta-join (confronto tra attributi di A e di B)
Il semi-join può essere espresso in funzione del theta-join
A pB = πschema(A)(A pB)
Il semi-join non gode della proprietà commutativa
Semi-join: proprietà
DBMG 87
Trovare le informazioni relative ai docenti titolari di almeno un corso
Semi-join: esempio
p
R
DBMG 88
Docenti Corsi
p: Docenti.MatrDocente=Corsi.MatrDocente
Trovare le informazioni relative ai docenti titolari di almeno un corso
Semi-join: esempio
p
R
DBMG 89
R=Docenti Corsi
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
D102 Verdi Informatica
D104 Bianchi Elettronica
R
Docenti Corsi
p: Docenti.MatrDocente=Corsi.MatrDocente
p
DBMG
Algebra relazionale
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 16
Variante del join che permette di conservare l’informazione relativa alle tuple non semanticamente legate dal predicato di join
completa con valori nulli le tuple prive di controparte
Outer-join
DBMG 91
Esistono tre tipi di outer-joinleft: sono completate solo le tuple del primo operandoright: sono completate solo le tuple del secondo operandofull: sono completate le tuple di entrambi gli operandi
Il left outer-join di due relazioni A e B genera le coppie formate da
una tupla di A e una di B “semanticamente legate” +
Left outer-join
DBMG 92
una tupla di A “non semanticamente legata” a tuple di B completata con valori nulli per tutti gli attributi di B
Trovare le informazioni sui docenti e sui corsi che tengono
Left outer-join: esempio
DBMG 93
Left outer-join: esempio
Docenti MatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG 94
Codice NomeCorso Semestre MatrDocente
M2170 Informatica 1 1 D102
M4880 Sistemi digitali
2 D104
F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi
Left outer-join: esempio
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
D102 Verdi Informatica M2170 Informatica 1 1 D102
D102 Verdi Informatica F0410 Basi di dati 2 D102
D104 Bianchi Elettronica M4880 Sistemi digitali
2 D104
R
DBMG 95
digitali
D104 Bianchi Elettronica F1401 Elettronica 1 D104
Left outer-join: esempio
Docenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
D102 Verdi Informatica M2170 Informatica 1 1 D102
D102 Verdi Informatica F0410 Basi di dati 2 D102
D104 Bianchi Elettronica M4880 Sistemi digitali
2 D104
R
DBMG 96
digitali
D104 Bianchi Elettronica F1401 Elettronica 1 D104
D105 Neri Informatica null null null null
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 17
R = A p BIl left outer-join di due relazioni A e B genera una relazione R
avente come schema l’unione degli schemi di A e di B
Left outer-join: definizione
DBMG 97
di Bcontenente le coppie formate da
una tupla di A e una tupla di B per cui è vero il predicato puna tupla di A che non è correlata mediante il predicato p a tuple di B completata con valori nulli per tutti gli attributi di B
Il left outer-join non è commutativo
Trovare le informazioni sui docenti e sui corsi che tengono
Left outer-join: esempio
R
p
DBMG 98
p: Docenti.MatrDocente=Corsi.MatrDocente
Docenti Corsi
p
Trovare le informazioni sui docenti e sui corsi che tengono
R = Docenti pCorsi
Left outer-join: esempio
R
p
DBMG
p: Docenti.MatrDocente=Corsi.MatrDocente
Docenti Corsi
p
RDocenti.MatrDocente
Docenti.NomeDoc
Docenti.Dipartimento
Corsi.Codice
Corsi.NomeCorso
Corsi.Semestre
Corsi.MatrDocente
D102 Verdi Informatica M2170 Informatica 1 1 D102
D102 Verdi Informatica F0410 Basi di dati 2 D102
D104 Bianchi Elettronica M4880 Sistemi digitali 2 D104
D104 Bianchi Elettronica F1401 Elettronica 1 D104
D105 Neri Informatica null null null null
R = A p BIl right outer-join di due relazioni A e B genera una relazione R
avente come schema l’unione degli schemi di A e di B
Right outer-join: definizione
DBMG 100
di Bcontenente le coppie formate da
una tupla di A e una tupla di B per cui è vero il predicato puna tupla di B che non è correlata mediante il predicato p a tuple di A completata con valori nulli per tutti gli attributi di A
Il right outer-join non è commutativo
R = A p BIl full outer-join di due relazioni A e B genera una relazione R
avente come schema l’unione degli schemi di A e di B
Full outer-join: definizione
DBMG 101
B
R = A p BIl full outer-join di due relazioni A e B genera una relazione R
contenente le coppie formate da
Full outer-join: definizione
DBMG 102
una tupla di A e una tupla di B per cui è vero il predicato puna tupla di A che non è correlata mediante il predicato p a tuple di B completata con valori nulli per tutti gli attributi di B una tupla di B che non è correlata mediante il predicato p a tuple di A completata con valori nulli per tutti gli attributi di A
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 18
R = A p BIl full outer-join è commutativo
Full outer-join: proprietà
DBMG 103
DBMG
Algebra relazionale
L’unione di due relazioni A e B seleziona tutte le tuple presenti in almeno una delle due relazioni
Unione
DBMG 105
A B
Unione
L’unione di due relazioni A e B seleziona tutte le tuple presenti in almeno una delle due relazioni
DBMG 106
A BA B
Unione: relazioni d’esempio
DocentiLaureaMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG 107
DocentiMasterMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D101 Rossi Elettrica
Trovare le informazioni relative ai docenti dei corsi di laurea o di master
Unione: esempio
DBMG 108
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 19
Unione: esempio
DocentiLaureaMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG
MatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D101 Rossi Elettrica
R
MatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
D101 Rossi Elettrica
DocentiMaster
Unione: esempio
DocentiLaureaMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG
MatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D101 Rossi Elettrica
Nota bene:i duplicati sono eliminati
DocentiMasterR
MatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
D101 Rossi Elettrica
R = A ∪ BL’unione di due relazioni A e B genera una relazione R
avente lo stesso schema di A e B
Unione: definizione
DBMG 111
contenente tutte le tuple appartenenti ad A e tutte le tuple appartenenti a B (o a entrambi)
Compatibilitàle relazioni A e B devono avere lo stesso schema (numero e tipo degli attributi)
Le tuple duplicate sono eliminateL’unione è commutativa e associativa
Trovare le informazioni relative ai docenti dei corsi di laurea o di master
Unione: esempio
∪R
DBMG 112
DocentiLaurea DocentiMaster
Trovare le informazioni relative ai docenti dei corsi di laurea o di master
R = DocentiLaurea ∪ DocentiMaster
Unione: esempio
∪R
DBMG 113
DocentiLaurea DocentiMaster
R MatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
D101 Rossi Elettrica
L’intersezione di due relazioni A e B seleziona tutte le tuple presenti in entrambe le relazioni
Intersezione
DBMG 114
A B
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 20
L’intersezione di due relazioni A e B seleziona tutte le tuple presenti in entrambe le relazioni
Intersezione
DBMG 115
A BA B
Trovare le informazioni relative ai docenti sia di corsi di laurea, sia di master
Intersezione: esempio
DBMG
Intersezione: esempio
DocentiMaster
DocentiLaureaMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG 117
DocentiMasterMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D101 Rossi Elettrica
Intersezione: esempio
DocentiMaster
DocentiLaureaMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG 118
DocentiMasterMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D101 Rossi Elettrica
R MatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
R = A ∩ BL’ intersezione di due relazioni A e B genera una relazione R
avente lo stesso schema di A e Bcontenente tutte le tuple appartenenti sia ad A sia
Intersezione: definizione
DBMG 119
contenente tutte le tuple appartenenti sia ad A sia a B
Compatibilitàle relazioni A e B devono avere lo stesso schema (numero e tipo degli attributi)
L’intersezione è commutativa e associativa
Trovare le informazioni relative ai docenti sia di corsi di laurea, sia di master
Intersezione: esempio
∩R
DBMG 120
DocentiLaurea DocentiMaster
∩
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 21
Trovare le informazioni relative ai docenti sia di corsi di laurea, sia di master
R = DocentiLaurea ∩ DocentiMaster
Intersezione: esempio
∩R
DBMG 121
DocentiLaurea DocentiMaster
∩
R MatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
DBMG
Algebra relazionale
La differenza di due relazioni A e B seleziona tutte le tuple presenti esclusivamente in A
Differenza
DBMG 123
A B
La differenza di due relazioni A e B seleziona tutte le tuple presenti esclusivamente in A
Differenza
DBMG 124
A BA-B
A B
Differenza
A A
DBMG 125
A BA-B
A B
A BB-A
A-B≠B-A
Trovare i docenti di corsi di laurea ma non di master
Differenza: esempio (n.1)
DBMG 126
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 22
DocentiMaster
DocentiLaureaMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
Differenza: esempio (n.1)
DBMG 127
DocentiMasterMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D101 Rossi Elettrica
DocentiMaster
DocentiLaureaMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
Differenza: esempio (n.1)
DBMG 128
DocentiMasterMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D101 Rossi Elettrica
R MatrDocente NomeDoc Dipartimento
D105 Neri Informatica
D104 Bianchi Elettronica
R = A - BLa differenza di due relazioni A e B genera una relazione R
avente lo stesso schema di A e di B
Differenza: definizione
DBMG 129
contenente tutte le tuple appartenenti ad A che non appartengono a B
Compatibilitàle relazioni A e B devono avere lo stesso schema (numero e tipo degli attributi)
La differenza non gode né della proprietà commutativa, né della proprietà associativa
Trovare i docenti di corsi di laurea ma non di master
-R
Differenza: esempio (n.1)
DBMG 130
DocentiLaurea DocentiMaster
Trovare i docenti di corsi di laurea ma non di master
R = DocentiLaurea - DocentiMaster
-R
Differenza: esempio (n.1)
DBMG 131
DocentiLaurea DocentiMaster
MatrDocente NomeDoc Dipartimento
D105 Neri Informatica
D104 Bianchi Elettronica
R
Differenza: esempio (n. 2)
Trovare i docenti di corsi di master ma non di laurea
DBMG 132
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 23
Trovare i docenti di corsi di master ma non di laurea
R = DocentiMaster - DocentiLaurea
Differenza: esempio (n. 2)
-R
DBMG 133
DocentiMaster DocentiLaurea
Differenza: esempio (n. 2)
DocentiMasterMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D101 Rossi Elettrica
DocentiLaurea
DBMG 134
MatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
Differenza: esempio (n. 2)
DocentiMasterMatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D101 Rossi Elettrica
DocentiLaurea
DBMG 135
MatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
MatrDocente NomeDoc Dipartimento
D101 Rossi Elettrica
R
Trovare Matricola, Nome e Dipartimento dei docenti che non tengono corsi
Differenza: esempio (n. 3)
DBMG 136
Differenza: esempio (n. 3)
Trovare Matricola, Nome e Dipartimento dei docenti che non tengono corsi
DBMG 137
DocentiπMatrDocente
Differenza: esempio (n. 3)
Trovare Matricola, Nome e Dipartimento dei docenti che non tengono corsi
DBMG 138
Docenti CorsiπMatrDocente πMatrDocente
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 24
Differenza: esempio (n. 3)
Trovare Matricola, Nome e Dipartimento dei docenti che non tengono corsi
DBMG 139
Docenti Corsi
-πMatrDocente πMatrDocente
Differenza: esempio (n. 3)
R
Trovare Matricola, Nome e Dipartimento dei docenti che non tengono corsi
DBMG 140
Docenti Corsi
-πMatrDocente πMatrDocente
Docenti
Trovare Matricola, Nome e Dipartimento dei docenti che non tengono corsi
Differenza: esempio (n. 3)
R
DBMG 141
R = Docenti ((πMatrDocenteDocenti) – (πMatrDocenteCorsi))
Docenti Corsi
-πMatrDocente πMatrDocente
Docenti
Differenza: esempio (n. 3)
DocentiMatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG 142
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi
Differenza: esempio (n. 3)
DocentiMatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
Matricole dei docenti
DBMG 143
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi
Matricole dei docenti che tengono almeno un corso
Differenza: esempio (n. 3)
MatrDocenteD102
D105
D104M t D tDiff
DBMG 144
MatrDocenteD102
D104
MatrDocenteD105
Differenza
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 25
Differenza: esempio (n. 3)
Natural JoinDocenti
MatrDocenteD105
DBMG 145
MatrDocente NomeDoc Dipartimento
D102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
MatrDocente NomeDoc DipartimentoD105 Neri Informatica
R
L’anti-join tra due relazioni A e B seleziona tutte le tuple di A “semanticamente non legate”a tuple di B
le informazioni di B non compaiono nel risultato
Anti-join
DBMG 146
Trovare Matricola, Nome e Dipartimento dei docenti che non tengono corsi
Anti-join: esempio
DBMG 147
Anti-join: esempio
Corsi
DocentiMatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG 148
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi
Anti-join: esempio
Corsi
DocentiMatrDocente NomeDoc DipartimentoD102 Verdi Informatica
D105 Neri Informatica
D104 Bianchi Elettronica
DBMG 149
Codice NomeCorso Semestre MatrDocenteM2170 Informatica 1 1 D102
M4880 Sistemi digitali 2 D104
F1401 Elettronica 1 D104
F0410 Basi di dati 2 D102
Corsi
MatrDocente NomeDoc DipartimentoD105 Neri Informatica
R
R = A BL’anti-join di due relazioni A e B genera una relazione R
avente lo stesso schema di A
Anti-join: definizione
p
DBMG 150
contenente tutte le tuple di A per cui non esiste nessuna tupla in B per cui è vero il predicato p
Il predicato p è espresso nella stessa forma del theta-join e del semi-joinL’anti-join non gode né della proprietà commutativa, né della proprietà associativa
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 26
Trovare Matricola, Nome e Dipartimento dei docenti che non tengono corsi
Anti-join: esempio
R
p
DBMG 151
Docenti Corsip: Docenti.MatrDocente=Corsi.MatrDocente
Trovare Matricola, Nome e Dipartimento dei docenti che non tengono corsi
R = Docenti Corsi
Anti-join: esempio
R
pp
DBMG 152
RMatrDocente NomeDoc DipartimentoD105 Neri Informatica
Docenti Corsip: Docenti.MatrDocente=Corsi.MatrDocente
p
DBMG
Algebra relazionale
Trovare gli studenti che hanno superato l’esame di tutti i corsi del primo anno
Divisione: esempio
EsamiSuperati
MatrStudente CodCorso
S1 C1
CorsiPrimoAnnoCodCorso
…
DBMG 154
S1 C1
S1 C2
S1 C3
S1 C4
S1 C5
S1 C6
S2 C1
S2 C2
S3 C2
S4 C2
S4 C4
S4 C5
…
…
…
Divisione: esempio (n. 1)
MatrStudente CodCorsoS1 C1
S1 C2
S1 C3
CodCorsoC1
EsamiSuperati CorsiPrimoAnno
DBMG 155
S1 C3
S1 C4
S1 C5
S1 C6
S2 C1
S2 C2
S3 C2
S4 C2
S4 C4
S4 C5
Divisione: esempio (n. 1)
MatrStudente CodCorsoS1 C1
S1 C2
S1 C3
CodCorsoC1
EsamiSuperati CorsiPrimoAnno
DBMG 156
S1 C3
S1 C4
S1 C5
S1 C6
S2 C1
S2 C2
S3 C2
S4 C2
S4 C4
S4 C5
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 27
Divisione: esempio
MatrStudente CodCorsoS1 C1
S1 C2
S1 C3
CodCorsoC1
EsamiSuperati CorsiPrimoAnno
DBMG 157
S1 C3
S1 C4
S1 C5
S1 C6
S2 C1
S2 C2
S3 C2
S4 C2
S4 C4
S4 C5
RMatrStudente
S1
S2
Divisione: esempio (n. 2)
MatrStudente CodCorsoS1 C1
S1 C2
S1 C3
CodCorsoC2
C4
EsamiSuperati CorsiPrimoAnno
DBMG 158
S1 C3
S1 C4
S1 C5
S1 C6
S2 C1
S2 C2
S3 C2
S4 C2
S4 C4
S4 C5
Divisione: esempio (n. 2)
MatrStudente CodCorsoS1 C1
S1 C2
S1 C3
CodCorsoC2
C4
EsamiSuperati CorsiPrimoAnno
DBMG 159
S1 C3
S1 C4
S1 C5
S1 C6
S2 C1
S2 C2
S3 C2
S4 C2
S4 C4
S4 C5
Divisione: esempio (n. 2)
MatrStudente CodCorsoS1 C1
S1 C2
S1 C3
CodCorsoC2
C4
EsamiSuperati CorsiPrimoAnno
DBMG 160
S1 C3
S1 C4
S1 C5
S1 C6
S2 C1
S2 C2
S3 C2
S4 C2
S4 C4
S4 C5
RMatrStudente
S1
S4
Divisione: esempio (n. 3)
CodCorsoC1
C2
C3
EsamiSuperati CorsiPrimoAnnoMatrStudente CodCorso
S1 C1
S1 C2
S1 C3
DBMG 161
C3
C4
C5
C6
S1 C3
S1 C4
S1 C5
S1 C6
S2 C1
S2 C2
S3 C2
S4 C2
S4 C4
S4 C5
Divisione: esempio (n. 3)
CodCorsoC1
C2
C3
EsamiSuperati CorsiPrimoAnnoMatrStudente CodCorso
S1 C1
S1 C2
S1 C3
DBMG 162
C3
C4
C5
C6
S1 C3
S1 C4
S1 C5
S1 C6
S2 C1
S2 C2
S3 C2
S4 C2
S4 C4
S4 C5
Basi di dati Algebra relazionale
Elena Baralis©2007 Politecnico di Torino 28
Divisione: esempio (n. 3)
CodCorsoC1
C2
C3
EsamiSuperati CorsiPrimoAnnoMatrStudente CodCorso
S1 C1
S1 C2
S1 C3
DBMG 163
C3
C4
C5
C6
S1 C3
S1 C4
S1 C5
S1 C6
S2 C1
S2 C2
S3 C2
S4 C2
S4 C4
S4 C5
RMatrStudente
S1
R = A / BLa divisione della relazione A per la relazione B genera una relazione R
avente come schema schema(A) - schema(B)
Divisione: definizione
DBMG 164
contenente tutte le tuple di A tali che per ogni tupla (Y:y) presente in B esiste una tupla (X:x, Y:y) in A
La divisione non gode né della proprietà commutativa, né della proprietà associativa
Trovare gli studenti che hanno superato l’esame di tutti i corsi del primo anno
Divisione: esempio
/
R
DBMG 165
EsamiSuperati CorsiPrimoAnno
/
Trovare gli studenti che hanno superato l’esame di tutti i corsi del primo anno
Divisione: esempio
/
R
DBMG 166
R = EsamiSuperati / CorsiPrimoAnno
EsamiSuperati CorsiPrimoAnno
/
Altri operatori
Sono stati proposti numerosi altri operatori per estendere il potere espressivo dell’algebra relazionale
estensione con un nuovo attributo, definito da un’espressione scalare
DBMG 167
un espressione scalarePESO_LORDO=PESO_NETTO+TARA
calcolo di funzioni aggregate max, min, avg, count, sumeventualmente con la definizione di sottoinsiemi in cui raggruppare i dati (GROUP BY di SQL)