Dipartimento di Elettronica ed Informazione Politecnico di...
Transcript of Dipartimento di Elettronica ed Informazione Politecnico di...
Dipartimento di Elettronica ed Informazione Politecnico di Milano
Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani
A.A. 2011/2012
Le presenti slide sono tratte dalle slide del libro di testo Atzeni, Ceri, Paraboschi, Torlone
Basi di dati (Modelli e Linguaggi di interrogazione 3/ed) McGraw-Hill, 2009
09/12/2011
Algebra relazionale: operazioni
Classificazione linguaggi
• Linguaggi formali: – Algebra relazionale – Calcolo relazionale – Programmazione logica
• Linguaggi programmativi – SQL: Structured Query Language – QBE: Query By Example
2
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Algebra relazionale
• Definita da Codd (70) • Molto utile per imparare a formulare query • Insieme minimo di 5 operazioni che danno
l'intero potere espressivo del linguaggio
3 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
4
OPERAZIONI
FONDAMENTALI
DERIVATE
UNARIE
BINARIE
selezione
proiezione
unione
differenza
prodotto cartesiano
intersezione
join
semi-join
BINARIE
σ
∏
∪
-
X
∩
Una visione d’insieme
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
studente
MATR
123
415
702
NOME
Carlo
Paola
Antonio
CITTA’
Bologna
Torino
Roma
C-DIP
Inf
Inf
Log
esame MATR 123
123
702
COD- CORSO
1
2
2
DATA 7-9-97
8-1-98
7-9-97
VOTO 30
28
20
corso COD- CORSO 1
2
TITOLO matematica
informatica
DOCENTE Barozzi
Meo
Esempio: gestione degli esami universitari
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 5
Selezione
• Applicando σ Nome='Paola' STUDENTE
• si ottiene una tabella (priva di nome) con – schema: lo stesso schema di STUDENTE – Istanza: le tuple di STUDENTE che soddisfano il
predicato di selezione
6
Matr
415
Nome
Paola Città
Torino
CDip
Inf
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
espressione booleana di predicati semplici
7
operazioni booleane : • AND (P1 AND P2) (∧)
• OR (P1 OR P2) (∨)
• NOT (P1) (¬)
predicati semplici : • TRUE, FALSE • termine comparatore
termine
comparatore : • =, !=, <, <=, >, >= termine : • costante, attributo • espressione
aritmetica di costanti e attributi
Sintassi del predicato di selezione
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Esempio di selezione
σ STUDENTE (Città='Torino') OR ((Città='Roma') AND NOT (CDip=’Log'))
8
MATR
123
415
702
NOME
Carlo
Paola
Antonio
CITTA’
Bologna
Torino
Roma
C-DIP
Inf
Inf
Log
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Proiezione
• Applicando Π Nome,CDip STUDENTE
• si ottiene una tabella (priva di nome) con – schema: gli attributi Nome e Cdip
– istanza: la restrizione delle tuple sugli attributi Nome e CDip
9
Nome
Carlo
Paola
Antonio
CDip
Inf
Inf
Log
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Assegnamento
• serve per dare un nome al risultato di una espressione algebrica
• non fa parte delle operazioni algebriche
10
INFORMATICI = σ CDIP='Inf' STUDENTI
TORINESI = σ Città='Torino' STUDENTI
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Unione e differenza • tabella1 ∪ tabella2
• tabella1 - tabella2
• tabella1 e tabella2 devono essere compatibili
– Stesso grado – Domini ordinatamente dello stesso tipo
11
t1
t2
t2 t1
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Unione: esempio
• Applicando: – INFORMATICI ∪ TORINESI
• Si ottiene una tabella (priva di nome) con – Schema: lo schema di INFORMATICI – Istanza: la unione delle tuple di INFORMATICI e
TORINESI
12
Matr
123
415
Nome
Carlo
Paola
Città
Bologna
Torino
CDip
Inf
Inf
Per quanto riguarda le istanze, è commutativa
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Differenza: esempio
• Applicando: – INFORMATICI - TORINESI
• Si ottiene una tabella (priva di nome) con – Schema: lo schema di INFORMATICI – Istanza: la differenza delle tuple di INFORMATICI e
TORINESI
13
Attenzione: NON è commutativa
Matr
123
Nome
Carlo
Città
Bologna
CDip
Inf
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Prodotto cartesiano
• Applicando: R × S • Si ottiene una tabella con
– Schema: gli attributi di R e S (grado(RxS)= grado(R)+grado(S))
– Istanza: tutte le possibili coppie di tuple di R e S (card(RxS)=card(R)*card(S))
14 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Esempio
15
A a b
B 1 3
C c b a
D 1 3 2
R1(A,B) R2(C,D)
A a a a b b b
B 1 1 1 3 3 3
C c b a c b a
D 1 3 21 3 2
R1xR2 (A,B,C,D)
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Intersezione
• TABELLA1 ∩ TABELLA2 • Come gli altri operatori insiemistici, si può
fare se TABELLA1 e TABELLA2 sono compatibili
• Derivabile tramite la seguente formula: R ∩ S = R - (R - S)
16 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Intersezione: esempio
• Applicando: – INFORMATICI ∩ TORINESI
• Si ottiene una tabella (priva di nome) con – Schema: lo schema di INFORMATICI – Istanza: la intersezione delle tuple di INFORMATICI
e TORINESI
17
Per quanto riguarda le istanze, è commutativa
Matr
415
Nome
Paola
Città
Torino
CDip
Inf
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Join
• L’espressione – STUDENTE STUDENTE.Matr=ESAME.Matr ESAME
• è equivalente alla seguente espressione (operatore derivato): – σSTUDENTE.Matr=ESAME.Matr STUDENTE × ESAME
• Nota: gli attributi omonimi sono resi non ambigui usando la notazione “puntata”: – E.g.: ESAME.Matr, STUDENTE.Matr
18
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Join
• Applicando: – STUDENTE STUDENTE.Matr=ESAME.Matr ESAME
• Si ottiene una tabella (priva di nome) con – schema: la concatenazione degli schemi di
STUDENTE e ESAME – istanza: le tuple ottenute concatenando quelle tuple di
STUDENTE e di ESAME che soddisfano il predicato
19
STUDENTE. Matr 123
123
702
Nome Carlo
Carlo
Antonio
Città Bologna
Bologna
Roma
CDip Inf
Inf
Log
ESAME. Matr 123
123
702
Cod- Corso 1
2
2
Data 7-9-97
8-1-98
7-9-97
Voto 30
28
20
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Sintassi del predicato Join
• espressione congiuntiva di predicati semplici: – ATTR1 comp ATTR2
• Dove – ATTR1 appartiene a TAB1 – ATTR2 appartiene a TAB2 – comp: =, !=, <, <=, >, >=
20 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Join naturale
• equi-join di tutti gli attributi omonimi (si omette il predicato, si elimina la colonna ripetuta) – STUDENTE ESAME
Matr 123
123
702
Nome Carlo
Carlo
Antonio
Città Bologna
Bologna
Roma
CDip Inf
Inf
Log
Cod- Corso 1
2
2
Data 7-9-97
8-1-98
7-9-97
Voto 30
28
20
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 21
Dipartimento di Elettronica ed Informazione Politecnico di Milano
Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani
A.A. 2011/2012
Le presenti slide sono tratte dalle slide del libro di testo Atzeni, Ceri, Paraboschi, Torlone
Basi di dati (Modelli e Linguaggi di interrogazione 3/ed) McGraw-Hill, 2009
09/12/2011
Algebra relazionale: interrogazioni
Espressioni algebriche
• Concatenazione di più operazioni algebriche
• Esprimono interrogazioni in modo formale • Consentono di estrarre informazioni dei dati
23 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
24
NOME
Carlo
Paola
• Quali sono i nomi degli studenti iscritti al diploma di informatica?
Matr
123
415
702
Nome
Carlo
Paola
Antonio
Città
Bologna
Torino
Roma
CDip
Inf
Inf
Log
Π Nome σ CDip='Inf' STUDENTE
Selezione e proiezione
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
25
Matr
123
415
702
Nome
Carlo
Paola
Antonio
Città
Bologna
Torino
Roma
CDip
Inf
Inf
Log
• quali i nomi degli studenti di Logistica non sono di Milano? Π Nome σ CDip='Log' ∧ Città != 'Milano’ STUDENTE
NOME
Antonio
Selezione e proiezione
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
26
STUDENTE
Matr
123
415
702
Nome
Carlo
Paola
Antonio
Città
Bologna
Torino
Roma
CDip
Inf
Inf
Log
ESAME Matr 123
123
702
Cod- Corso
1
2
2
Data 7-9-97
8-1-98
7-9-97
Voto 30
28
20
CORSO Cod- Corso 1
2
Titolo matematica
informatica
Docente Barozzi
Meo
Esempio: gestione degli esami universitari
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
27
• quali studenti hanno preso 30 in matematica? Π Nome ( STUDENTE (σ Voto=30 ESAME) (σ Titolo='matematica' CORSO))
Π Nome σ Voto=30 ∧ Titolo='matematica‘ (STUDENTE ESAME CORSO)
• equivalente a:
Uso del join 1/2
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Uso del join 2/2
• Da notare che i due join annidati ha generato la seguente relazione
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 28
Matr 123
123
702
Nome Carlo
Carlo
Antonio
Città Bologna
Bologna
Roma
CDip Inf
Inf
Log
Cod- Corso 1
2
3
Data 7-9-97
8-1-98
7-9-97
Voto 30
28
20
Docente barozzi
meo
meo
Titolo matem
infor
infor
Selezione, proiezione e join
• Quali professori hanno esaminato Antonio?
Π Docente σ Nome = 'Antonio’ (STUDENTE ESAME CORSO)
29
Docente
Meo
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Espressioni con unione e differenza
• estrarre la matricola degli studenti romani oppure degli studenti che hanno sostenuto un esame il giorno 8-1-01
30
(Π Matr σ Città='Roma' STUDENTE) ∪ (Π Matr σ Data=8-1-01 ESAME)
Matr
702
Matr
123 ∪
Matr
702
123 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Espressioni con unione e differenza
• Estrarre la matricola degli studenti che hanno preso almeno un voto superiore a 28 e non sono mai scesi sotto il 25
(Π Matr σ Voto>=28 ESAME) - (Π Matr σ Voto<25 ESAME)
Matr
702
Matr
123 - Matr
123
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3 31
Espressioni complesse 1/3
• Estrarre il nome degli studenti che non hanno mai preso meno di 28
• spiegazione: prima trovo le matricole di tutti gli studenti meno le matricole di coloro che hanno preso meno di 28, poi trovo i loro nomi.
32
Π Nome STUDENTE ( Π Matr ESAME - Π Matr σ Voto<28 ESAME)
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Espressioni complesse 2/3
• Estrarre il nome degli studenti che hanno sostenuto “informatica” e “matematica” lo stesso giorno
• spiegazione: prima trovo le matricole di coloro che hanno dato i due esami nello stesso giorno, poi trovo i loro nomi.
33
Π Nome STUDENTE
(( ESAME < σ Titolo=‘informatica’ CORSO ) < Matr = Matr ∧ Data = Data
(ESAME < σ Titolo=‘matematica’ CORSO ))
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3