Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
IL MODELLO RELAZIONALE
Operatori ed Algebra Relazionale
Prof. Aniello Cimitile
T Tipo di dati
O Operazioni
R Regole Integrità
Operazioni relazionali
• Sono operazioni INTERNE AL TIPO RELAZIONE Applicate ad una o più relazioni restituiscono come
risultato una relazione
… ovviamente gli «operandi» delle operazioni sono le «istanze» delle relazioni coinvolte
ed il risultato è, a sua volta una istanza …
NB. Nel seguito continueremo a parlare di operazioni su relazioni, convenendo che le stesse si intendono applicate ed eseguite sulle istanze delle Relazioni citate.
Siamo di fronte ad un’algebra ..
– È possibile quindi costruire espressioni relazionali,
ovvero comporre operazioni ed operandi relazionali
Il risultato di una espressione relazionale sarà naturalmente una relazione
Useremo le notazioni:
RR= op (R), RR= op (R1, R2) RR= e
Dove con op si indica un generico operatore relazionale e con e una generica espressione relazionale
warning • Non interpretare = come operatore di assegnazione di valore
• … qui lo usiamo solo come operatore di associazione di un Identificatore p al risultato di una espressione relazionale o più genericamente come indicatore di uguaglianza
– R1 = R2 non significa assegnare l’istanza di R2 ad una preesistente relazione R1 , ma che l’istanza di R1 è uguale a quella di R2
– RR = e non significa che stiamo assegnando l’istanza calcolata con e ad una esistente relazione RR, ma che indicheremo con RR la «relazione risultato di e»
NB. … in informatica e nelle ricadute applicative la differenza è enorme; se … associamo le relazioni a collezioni permanenti di dati e ai DB, si pensi Alla differenza fra
INTERROGAZIONI , DEFINIZIONE di NUOVA RELAZIONE, TOTALE SOSTITUZIONE DI UNA ISTANZA di relazioni del DB
• Interrogazione : estrazione dalla Base di Dati delle informazioni e dei dati di interesse in una specifica applicazione ed in un definito istante
• Nuova Relazione: Ampliamento della collezione permanente di dati con una nuova sezione/tabella
• Sostituzione totale di una istanza di una relazione o di un DB: cancellazione della collezione preesistente e sua sostituzione con altra …
Nessuna di tali operazioni va ovviamente confusa con le operazioni di Aggiornamento delle istanze delle relazioni esistenti ( aggiornamento dei dati …)
• Interrogare una base di dati significa estrarre dalle relazioni che la compongono le istanze di una relazione di utente che si compone di attributi e dati presenti nel DB
• …. ad esempio, «interrogare» il DB degli studenti
dell’Università del Sannio per conoscere i laureati in Ingegneria Informatica con voto>27, es. RR ≡{Nome, Cognome, Indirizzo, Voto}
• .. ciò non significa aggiungere al DB questa relazione (◦), sarebbe contro la stessa ragion d’essere di un DB ….. I dati di RR sono già presenti nel DB e produrremmo una RIDONDANZA , etc.
• (◦) In una interrogazione la quantità di informazione associata al risultato è sempre minore o uguale a quella delle relazioni interrogate
• Distingueremo: –Operazioni di modifica di una Base di Dati –Operazioni di Interrogazione di una Base di
Dati
• Le operazioni e le espressioni dell’Algebra Relazionale sono la «base» delle interrogazioni ( che, come vedremo, solo eccezionalmente vengono al più trasformate in «nuove relazioni virtuali» che chiameremo viste di utente)
• Definiremo e discuteremo separatamente e successivamente sia le operazioni di modifica di un DB (inserzioni, cancellazioni, aggiornamenti, etc.) che le «viste»
• Le istanze di una relazione sono composte da schema e insieme di tuple, e possiamo distinguere e classificare:
– Operazioni che coinvolgono solo gli schemi (◦)
– Operazioni che coinvolgono solo gli insiemi di tuple
– Operazioni che coinvolgono sia gli schemi che gli insiemi di tuple
(◦) … gli ATTRIBUTI e non modifica dei TIPI …..
• Ricordando il legame fra Relazione ed Insieme, possiamo poi distinguere e classificare:
– Operazioni native della teoria degli insiemi e da essa direttamente mutuate
– Operazioni che sono nate con le relazioni e sono caratteristiche delle stesse
• Il set di operazioni funzionalmente completo è così composto:
• UNIONE • DIFFERENZA • PRODOTTO • PROIEZIONE • SELEZIONE • RIDENOMINAZIONE
• Importanti operazioni derivate ( ottenibili componendo operazioni del set f.c.) e che vengono introdotte come primitive sono:
• INTERSEZIONE • GIUNZIONE ( o JOIN)
NB. Diciamo anche che , poiché l’operazione di prodotto è poco usabile ,
molti direttamente introducono al suo posto l’operazione JOIN che invece è molto usata ed include funzionalmente il prodotto.
Le operazioni «insiemistiche»
• Operazione di UNIONE – È una operazione binaria; simbolo ∪ – È una operazione sulle Tuple e può essere fatta se e solo se le relazioni
a cui è applicata hanno lo stesso schema
– date le relazioni : R1 di Schema SC(R1) e di insieme di tuple Tu1, ed R2 di schema SC(R2) e di insieme di tuple Tu2 con
• SC(R1)=SC(R2) = S
– Il Risultato avrà come schema lo stesso schema degli operandi e come insieme Tu di tuple l’unione dei loro rispettivi insiemi di tuple
• RR = R1 ∪ R2
• SC(RR) = S
• Tu (RR) = Tu1∪ Tu2
• Prenotati Prima seduta
– P1S ≡ { matr, nome, cognome }
• Prenotati Seconda seduta
– P2S ≡ { matr, nome, cognome }
• Prenotati Terza seduta
– P3S ≡ { matr, nome, cognome }
PRENOTATI = P1S ∪ P2S ∪ P3S
• Sono dipendenti unisannio in visita medica
Matricola Nome Cognome
0001 Paolo Corso
0002 Guido Totti
0021 Cesare Maradona
Matricola Nome Cognome
0034 Paolo Mazza
0015 Pippo Massa
0021 Cesare Maradona
Matricola Nome Cognome
0008 Ciccio Graziani
0002 Guido Totti
0021 Cesare Maradona
P1S
P2S
P3S
Matricola Nome Cognome
0001 Paolo Corso
0002 Guido Totti
0021 Cesare Maradona
0034 Paolo Mazza
0015 Pippo Massa
0008 Ciccio Graziani
P1S ∪ P2S ∪ P3S
• Operazione di DIFFERENZA – È una operazione binaria; simbolo - – È una operazione sulle Tuple e può essere fatta se e solo se le relazioni
a cui è applicata hanno lo stesso schema
– date le relazioni : R1 di Schema SC(R1) e di insieme di tuple Tu1, ed R2 di schema SC(R2) e di insieme di tuple Tu2 con
• SC(R1)=SC(R2) = S
– Il Risultato avrà come schema lo stesso schema degli operandi e come insieme di tuple Tu la differenza dei loro rispettivi insiemi di tuple
• RR = R1 - R2
• SC(RR) = S
• Tu (RR) = Tu1 -Tu2
NB. Tu1 – Tu2 ≡ { tu : t u∈ 𝑇𝑢1 𝑡𝑢 ∉ 𝑇𝑢2}
• …. dipendenti unisannio in visita medica
Matricola Nome Cognome
0001 Paolo Corso
0002 Guido Totti
0021 Cesare Maradona
Matricola Nome Cognome
0034 Paolo Mazza
0015 Pippo Massa
0021 Cesare Maradona
Matricola Nome Cognome
0008 Ciccio Graziani
0002 Guido Totti
0021 Cesare Maradona
P1S
P2S
P3S
Matricola Nome Cognome
0001 Paolo Corso
0002 Guido Totti
NONRINVIABILIPROSSIMA = P1S - P2S
Matricola Nome Cognome
0001 Paolo Corso
NONRINVIABILI = (P1S - P2S) – P3S
• Operazione di INTERSEZIONE – È una operazione binaria; simbolo ∩ – È una operazione sulle Tuple e può essere fatta se e solo se le relazioni
a cui è applicata hanno lo stesso schema
– date le relazioni : R1 di Schema SC(R1) e di insieme di tuple Tu1, ed R2 di schema SC(R2) e di insieme di tuple Tu2 con
• SC(R1)=SC(R2) = S
– Il Risultato avrà come schema lo stesso schema degli operandi e come insieme Tu di tuple l’intersezione dei loro rispettivi insiemi di tuple
• RR = R1 ∩ R2
• SC(RR) = S
• Tu (RR) = Tu1∩ Tu2
NB. Tu1 ∩ Tu2 ≡ { tu : tu ∈ 𝑇𝑢1 𝑡𝑢 ∈ 𝑇𝑢2} NB. Tu1 ∩Tu2 ≡ Tu1 – (Tu1 – Tu2)
• …. dipendenti unisannio in visita medica
Matricola Nome Cognome
0001 Paolo Corso
0002 Guido Totti
0021 Cesare Maradona
Matricola Nome Cognome
0034 Paolo Mazza
0015 Pippo Massa
0021 Cesare Maradona
Matricola Nome Cognome
0008 Ciccio Graziani
0002 Guido Totti
0021 Cesare Maradona
P1S
P2S
P3S
Matricola Nome Cognome
0021 Cesare Maradona
FATEVOI= P1S ∩ P2S ∩ P3S
Ridenominazione
• è un’operazione unaria
• è un’operazione sullo schema: trasforma uno o più attributi ( … ridenominazione = cambio nomi) mantenendo invariati i loro tipi
• … invarianza anche per le tuple
• Definizione:
– detti A,B,…,C gli attributi della relazione R da ridenominare rispettivamente X,Y,…,Z
– L’operazione di ridenominazione, che indicheremo con:
ρ𝑨 ←𝑿,𝑩← 𝒀,… ,𝑪 ←𝒁 ( R)
Restituisce come risultato una relazione RR che differisce da R unicamente nello schema ed in particolare SC(RR) è ottenuto da SC( R) sostituendo A con X, B con Y, …, C con Z
Attore FILM Anno
Robert De Niro
Taxi Driver 1976
Richard Gere Pretty Woman
1990
Roberto Benigni
La vita è bella 1997
Attrice FILM Anno
Kristin Scott Thomas
La chiave di Sara
2010
Vivien Leigh Via col vento 1939
Meryl Streep Kramer contro Kramer
1983
AttoriGF
AttriciGF
Interprete FILM Anno
Robert De Niro
Taxi Driver 1976
Richard Gere Pretty Woman
1990
Roberto Benigni
La vita è bella 1997
Interprete FILM Anno
Kristin Scott Thomas
La chiave di Sara
2010
Vivien Leigh Via col vento 1939
Meryl Streep Kramer contro Kramer
1983
ρ𝑨𝒕𝒕𝒐𝒓𝒆 ←𝑰𝒏𝒕𝒆𝒓𝒑𝒓𝒆𝒕𝒆 ( AttoriGF)
ρ𝑨𝒕𝒕𝒓𝒊𝒄𝒊 ←𝑰𝒏𝒕𝒆𝒓𝒑𝒓𝒆𝒕𝒆 ( AttriciGF)
• Impossibile fare l’unione fra AttoriGf e AttriciGF
• E’ invece possibile l’operazione :
ρ𝑨𝒕𝒕𝒐𝒓𝒆 ←𝑰𝒏𝒕𝒆𝒓𝒑𝒓𝒆𝒕𝒆 ( AttoriGF) ∪ ρ𝑨𝒕𝒕𝒓𝒊𝒄𝒊 ←𝑰𝒏𝒕𝒆𝒓𝒑𝒓𝒆𝒕𝒆
( AttriciGF)
Interprete FILM Anno
Robert De Niro Taxi Driver 1976
Richard Gere Pretty Woman 1990
Roberto Benigni La vita è bella 1997
Kristin Scott Thomas La chiave di Sara 2010
Vivien Leigh Via col vento 1939
Meryl Streep Kramer contro Kramer 1983
SELEZIONE
• È una operazione unaria
• E’ una operazione sulle tuple
• Il risultato mantiene lo schema dell’operando ma ne assume solo le tuple che soddisfano uno specifico vincolo ( espresso attraverso una Proposizione logica P)
SELEZIONA solo le Tuple che soddisfano P
• Data una relazione R ≡ { A: TA, B: TB, ….., Z: TZ}
e detto Tu (R) l’insieme delle sue tuple
• Detto f un generico predicato composto da una operazione di confronto fra un attributo X di R ed una costante k di TX, o fra un attributo X ed un attributo Y con TX=TY – X ϴ k , X ϴ Y con ϴЄ{=, <, > , ≠,≤,≥}
• Detta P una proposizione composta da un predicato f o da una espressione logica avente come operandi uno o più f ( … e come operatori ,⋁ , ≦ )
• La selezione su R secondo P , che indicheremo con
σ𝑷 (R)
Restituisce come risultato una relazione RR avente lo stesso schema di R, SC(RR)=SC(R) e come insieme Tu(RR) le tuple di R che soddisfano P Tu(RR) = { t: tЄ Tu(R) P(t) }
Interprete FILM Anno
Robert De Niro Taxi Driver 1976
Richard Gere Pretty Woman 1990
Roberto Benigni La vita è bella 1997
Kristin Scott Thomas La chiave di Sara 2010
Vivien Leigh Via col vento 1939
Meryl Streep Kramer contro Kramer 1983
Interprete FILM Anno
Richard Gere Pretty Woman 1990
Roberto Benigni La vita è bella 1997
Kristin Scott Thomas La chiave di Sara 2010
InterpetriGF
σ𝑨𝒏𝒏𝒐>𝟏𝟗𝟖𝟓(InterpetriGF)
Studente Voto Lode Data Media
30501 26 no 15/01/2014 27.10
30541 30 si 20/01/2014 28.20
30489 28 no 03/02/2014 26.50
30511 30 si 05/02/2014 26.60
30497 18 no 03/02/2014 23.50
30503 27 no 20/01/2014 27.00
Studente Voto Lode Data Media
30541 30 si 20/01/2014 28.20
30489 28 no 03/02/2014 26.50
30511 30 si 05/02/2014 26.60
Esami2
σ𝑽𝒐𝒕𝒐>𝑴𝒆𝒅𝒊𝒂(Esami2)
• Con riferimento alla rappresentazione tabellare , l’operazione di selezione su una relazione R consiste in una
ESTRAZIONE DI RIGHE selezionate secondo la proprietà P
La tabella risultato, oltre alle righe estratte, avrà la stessa intestazione della tabella di R
Nome Cognome Età Produttività Stipendio Residenza
Mario Pinco 28 0.90 3000 Benevento
Giorgio Pallino 52 0.60 3000 Napoli
Genny Caio 53 0.50 3500 Calvi
Fulvio Tizio 44 0.60 3500 Airola
Maria Callas 42 0.60 4000 Avellino
Giuseppe Falegname 35 1.00 4000 Benevento
Dipendenti
Nome Cognome Età Produttività Stipendio Residenza
Genny Caio 53 0.50 3500 Calvi
Fulvio Tizio 44 0.60 3500 Airola
Maria Callas 42 0.60 4000 Avellino
σ 𝒑𝒓𝒐𝒅𝒖𝒕𝒕𝒊𝒗𝒊𝒕à<𝟎.𝟕𝟎 (𝑺𝒕𝒊𝒑𝒆𝒏𝒅𝒊𝒐>𝟑𝟎𝟎𝟎)(Dipendenti)
… Domanda …
• … e se vi sono valori NULL ?
Per ora ipotizziamo l’assenza di NULL, poi tratteremo a parte il caso
PROIEZIONE
• E’ un’operazione unaria
• E’ un’operazione sullo schema e sulle tuple
• Definito un sottoschema S(SC) dello schema dell’operando R e estratta per ogni tupla tu di R la sottotupla s(tu)composta dai soli valori degli attributi del sottoschema
…mi interessano solo i dati relativi ad alcuni attributi …
• La proiezione di R su S, che indicheremo con
𝝅𝒔 (R)
Restituisce un risultato RR avente come schema S
SC (RR) = S
e come insieme di tuple
Tu (RR) ≡ { s(tu), tuЄ Tu(R)}
… proiezione perché chiedo di vedere solo una faccia della relazione ,… quella costituita dagli attributi scelti …
Nome Cognome Età Produttività Stipendio Residenza
Mario Pinco 28 0.90 3000 Benevento
Giorgio Pallino 52 0.60 3000 Napoli
Genny Caio 53 0.50 3500 Calvi
Fulvio Tizio 44 0.60 3500 Airola
Maria Callas 42 0.60 4000 Avellino
Giuseppe Falegname 35 1.00 4000 Benevento
Dipendenti
Produttività
0.90
0.60
0.50
1,00
𝜋𝑃𝑟𝑜𝑑𝑢𝑡𝑡𝑖𝑣𝑖𝑡à(Dipendenti)
Stipendio
3000
3500
4000
𝜋𝑆𝑡𝑖𝑝𝑒𝑛𝑑𝑖𝑜(Dipendenti)
Nome Cognome
Mario Pinco
Giorgio Pallino
Genny Caio
Fulvio Tizio
Maria Callas
Giuseppe Falegname
𝜋𝑁𝑜𝑚𝑒,𝐶𝑜𝑔𝑛𝑜𝑚𝑒(Dipendenti)
• Con riferimento alla rappresentazione tabellare , l’operazione di selezione su una relazione R consiste in una
ESTRAZIONE DI COLONNE quelle corrispondenti agli attributi su cui «proiettarsi»
NB.Vale la pena di sottolineare che: Grado (RR) < Grado (R) Cardinalità (RR) ≤ Cardinalità (R)
Studente Voto Lode Data
30501 26 no 15/01/2014
30541 30 si 20/01/2014
30489 28 no 03/02/2014
30511 30 si 05/02/2014
30497 18 no 03/02/2014
30503 27 no 20/01/2014
Esami
Studente Data
30501 15/01/2014
30541 20/01/2014
30489 03/02/2014
30511 05/02/2014
30497 03/02/2014
30503 20/01/2014
Data
15/01/2014
20/01/2014
03/02/2014
05/02/2014
𝝅𝑺𝒕𝒖𝒅𝒆𝒏𝒕𝒆, 𝑫𝒂𝒕𝒂(Esami) 𝝅𝑫𝒂𝒕𝒂(Esami)
… esercizi … • È data la relazione AV, Agenda dei voli, che ha come attributi { CompAerea, CodVolo, AirportP, CittàP, AirportA, CittàA, OraP, OraA} • Vogliamo tutto sui voli che partono da aeroporti Milanesi per
Napoli • Vogliamo solo i collegamenti fra città ed i voli che li realizzano • Vogliamo solo le città collegate • Vogliamo solo le Compagnie aeree e i rispettivi voli • Vogliamo solo le Compagnie Aeree • Vogliamo tutto sui voli da Malpensa a New York • Tutto sugli aerei da Napoli a Linate che partono prima delle 10 • Tutto sugli aerei da Linate a Napoli che partono dopo le 16 • Voglio solo gli Aeroporti
𝝅𝑨𝑬𝑹𝑶𝑷 ρ𝑨𝑰𝑹𝑷𝑶𝑹𝑻𝑷 ←𝑨𝑬𝑹𝑶𝑷(AV)
∪ 𝝅𝑨𝑬𝑹𝑶𝑷 ρ𝑨𝑰𝑹𝑷𝑶𝑹𝑻𝑨 ←𝑨𝑬𝑹𝑶𝑷(AV)
… domanda …
• In quali casi la cardinalità di
𝜋𝑠 (R)
è sicuramente uguale a quella di R ?
… Prodotto Cartesiano vs Join …
• … ha senso il prodotto cartesiano fra due relazioni: RR= R1 X R2?
• … intanto appare «semplice» la definizione delle tuple della relazione RR
– Sia n il grado di R1 ed m quello di R2, tuЄ Tu(RR) se è composta da n+m elementi, di cui i primi n corrispondono ad una tupla di R1 ed i successivi m ad una tupla di R2.
– Se k è la cardinalità di R1 e j è la cardinalità di R2,
RR ha cardinalità x= k * j
A1 B1 C1
A2 B3 C2
A1 B2 C3
X1 Y2 Z1
X2 Y2 Z1
A1 B1 C1 X1 Y2 Z1
A1 B1 C1 X2 Y2 Z1
A2 B3 C2 X1 Y2 Z1
A2 B3 C2 X2 Y2 Z1
A1 B2 C3 X1 Y2 Z1
A1 B2 C3 X2 Y2 Z1
… le tuple …
Potremmo dire le tuple di RR si ottengono concatenando ogni tupla di R1 con ogni tupla di R2
• … richiede attenzione lo schema di RR
che dovrà evidentemente essere composto dagli n attributi di R1 e
gli m attributi di R2;
• … ma se in R1 ed R2 esistono attributi uguali?
• … in questo caso detti A,B,..Z gli attributi comuni a R1 ed R2, si può sostituire ad R2 :
– ρ𝑨 ←𝑹𝟐.𝑨,𝑩← 𝑹𝟐.𝑩,… ,𝑪 ←𝑹𝟐.𝑪 ( R2)
– … e, per comodità, ci riferiremo nel seguito a tale relazione col termine Ridenominata di R2
Considerando gli schemi come insiemi di attributi, lo schema del ProdottoCartesiano è l’unione degli schemi di R1 ed R2 se questi non hanno attributi in comune, e degli schemi di R1 e della ridenominata di R2 in caso contrario
Volo CittàP CittàA
AZ12 Milano Napoli
AA541 Roma NewYork
AF123 Parigi Berlino
AZ21 Napoli Milano
Nome Volo
Rossi AZ12
Bianchi AZ21
Voli
Prenot
Nome P.Volo
Rossi AZ12
Bianchi AZ21
ρ𝑽𝒐𝒍𝒐 ←𝑷.𝑽𝒐𝒍𝒐( Prenot)
Nome P.Volo Volo CittàP CittàA
Rossi AZ12 AZ12 Milano Napoli
Rossi AZ12 AA541 Roma NewYork
Rossi AZ12 AF123 Parigi Berlino
Rossi AZ12 AZ21 Napoli Milano
Bianchi AZ21 AZ12 Milano Napoli
Bianchi AZ21 AA541 Roma NewYork
Bianchi AZ21 AF123 Parigi Berlino
Bianchi AZ21 AZ21 Napoli Milano
(ρ𝑽𝒐𝒍𝒐 ←𝑷.𝑽𝒐𝒍𝒐
( Prenot) ) X Voli
…… hanno senso solo alcune delle tuple del prodotto cartesiano …..
Studente Voto Lode
30501 26 no
30541 30 si
Matricola Nome
30491 Rossi
30480 Bianchi
30501 Verdi
30541 Neri
EsamiDB
Studenti
Studenti X EsamiDB
Matricola Nome Studente Voto Lode
30491 Rossi 30501 26 no
30480 Bianchi 30501 26 no
30501 Verdi 30501 26 no
30541 Neri 30501 26 no
30491 Rossi 30541 30 si
30480 Bianchi 30541 30 si
30501 Verdi 30541 30 si
30541 Neri 30541 30 si
…… hanno senso solo alcune delle tuple del prodotto cartesiano …..
• … emerge come rilevante la restrizione del Prodotto Cartesiano RR alle sole tuple che sodisfano una definita proprietà P, ovvero σ𝑷 (RR)
• … ad esempio, nei due casi precedenti, sono di interesse
– σ𝑽𝒐𝒍𝒐=𝑷.𝑽𝒐𝒍𝒐((ρ𝑽𝒐𝒍𝒐 ←𝑷.𝑽𝒐𝒍𝒐
( Prenot) ) X Voli )
–σ𝑴𝒂𝒕𝒓𝒊𝒄𝒐𝒍𝒂=𝑺𝒕𝒖𝒅𝒆𝒏𝒕𝒆(Studenti X EsamiDB)
Matricola Nome Studente Voto Lode
30491 Rossi 30501 26 no
30480 Bianchi 30501 26 no
30501 Verdi 30501 26 no
30541 Neri 30501 26 no
30491 Rossi 30541 30 si
30480 Bianchi 30541 30 si
30501 Verdi 30541 30 si
30541 Neri 30541 30 si
Matricola Nome Studente Voto Lode
30501 Verdi 30501 26 no
30541 Neri 30541 30 si
Studente Voto Lode
30501 26 no
30541 30 si
Studenti X EsamiDB
EsamiDB
Matricola Nome
30491 Rossi
30480 Bianchi
30501 Verdi
30541 Neri
Studenti
σ𝑴𝒂𝒕𝒓𝒊𝒄𝒐𝒍𝒂=𝑺𝒕𝒖𝒅𝒆𝒏𝒕𝒆 (Studenti X EsamiDB)
Equi-Join
• E’ un’operazione binaria
• E’un’operazione sugli schemi e sulle tuple
• Detti R1 ed R2 le relazioni operando, siano A Є SC(R1) e B Є SC(R2) due attributi dello stesso tipo, sia f il predicato A=B
• L’equi-Join di R1 ed R2 secondo A e B, che indicheremo con
⋈𝒇, è definita da
R1 ⋈𝒇 R2 = σ𝒇 (R1 X R2)
NB. Resta ferma la convenzione che se R1 ed R2 hanno attributi uguali, il prodotto cartesiano è eseguito su R1 e la Ridenominata di R2
Codice Nomeprog
INGINF42 ISIDE
INGINF03 SINTESI
Ricercatore Progetto
Visaggio INGINF42
Mercaldo INGINF42
Visaggio INGINF03
Codice Nomeprog Ricercatore Progetto
INGINF42 ISIDE Visaggio INGINF42
INGINF42 ISIDE Mercaldo INGINF42
INGINF03 SINTESI Visaggio INGINF03
Progetti
Ricercatori
Progetti ⋈𝑪𝒐𝒅𝒊𝒄𝒆=𝑷𝒓𝒐𝒈𝒆𝒕𝒕𝒐Ricercatori
Theta - Join
• … possiamo definirla come estensione dell’operazione di Equi – Join
• Se il predicato f invece di essere A=B è definito da
A ϴB con ϴЄ{<, > , ≠,≤,≥}
Definiremo Theta –Join l’operazione
R1 ⋈A ϴ B R2 = σA ϴ B (R1 X R2)
Volo CittàP CittàA
AZ12 Milano Napoli
AA541 Roma NewYork
AF123 Parigi Berlino
AZ21 Napoli Milano
Nome Volo
Rossi AZ12
Bianchi AZ21
Voli
Prenot
Nome P.Volo
Rossi AZ12
Bianchi AZ21
ρ𝑽𝒐𝒍𝒐 ←𝑷.𝑽𝒐𝒍𝒐( Prenot)
Nome P.Volo Volo CittàP CittàA
Rossi AZ12 AZ12 Milano Napoli
Rossi AZ12 AA541 Roma NewYork
Rossi AZ12 AF123 Parigi Berlino
Rossi AZ12 AZ21 Napoli Milano
Bianchi AZ21 AZ12 Milano Napoli
Bianchi AZ21 AA541 Roma NewYork
Bianchi AZ21 AF123 Parigi Berlino
Bianchi AZ21 AZ21 Napoli Milano
(ρ𝑽𝒐𝒍𝒐 ←𝑷.𝑽𝒐𝒍𝒐
( Prenot) ) X Voli
Nome P.Volo Volo CittàP CittàA
Rossi AZ12 AZ12 Milano Napoli
Bianchi AZ21 AZ21 Napoli Milano
Ridenominata (Prenot) ⋈𝑷.𝑽𝒐𝒍𝒐=𝑽𝒐𝒍𝒐Voli
Nome P.Volo Volo CittàP CittàA
Rossi AZ12 AZ12 Milano Napoli
Bianchi AZ21 AZ21 Napoli Milano
RR= Ridenominata (Prenot) ⋈𝑷.𝑽𝒐𝒍𝒐=𝑽𝒐𝒍𝒐Voli
Nome Volo CittàP CittàA
Rossi AZ12 Milano Napoli
Bianchi AZ21 Napoli Milano
…mi piacerebbe avere …
Se con Y indichiamo l’inisieme degli attributi di SC(RR) diminuito di P.Volo Y = SC(RR) – {P.Volo} allora
𝜋𝑌 (RR)
… piacerebbe una primitiva che dati Voli e Prenot portasse direttamente a questo risultato …
JOIN NATURALE: introduzione
• Date le Relazioni R1 ed R2 i cui schemi hanno un unico attributo uguale A
• Posto X= SC(R2) - {A} ed Y = SC(r1)∪ X
• L’ operazione di Join Naturale fra R1 ed R2 che indicheremo con
R1⋈R2
• è definita da
R1⋈R2 = 𝝅𝒀(σ𝑨=𝑹𝟐.𝑨 (R1 X ρ𝑨 ←𝑹𝟐.𝑨 ( R2) ) )
Candidato Numero
Russo Mario 3
Esposito Ciro 1
Nero Wolf 4
Rossi Bianca 2
Numero Voto
1 30
2 28
3 21
4 18
… da sorteggio … da valutazione anonima
Candidati Compiti
Numero Voto Candidato
1 30 Esposito Ciro
2 28 Rossi Bianca
3 21 Russo Mario
4 18 Nero Wolf
Compiti⋈Candidato
… una definizione più generale e non «derivata» …
• Il Join Naturale
RR=R1⋈R2con SC(R1) ∩ SC(R2)≠ ∅
È definito da
SC (RR) = SC(R1) ∪ SC(R2)
e, indicata con tu la generica tupla di TU(RR), e con tu1 e tu2 le tuple formate rispettivamente con i soli valori di tu relativi agli attributi di SC(R1) ed SC(R2), da
TU(RR)=𝒕𝒖 ∶ ℈ ( 𝒕𝟏 ∈ 𝑻𝑼 𝑹𝟏 , 𝒕𝟐 ∈ 𝑻𝑼 𝑹𝟐 )
𝒄𝒐𝒏 𝒕𝟏 = 𝒕𝒖𝟏 ∧ 𝒕𝟐 = 𝒕𝒖𝟐
Padre Figlio
Adamo Caino
Adamo Abele
Abramo Isacco
Abramo Ismaele
Madre Figlio
Eva Caino
Eva Set
Sara Isacco
Agar Ismaele
Padri Madri
Padre Figlio Madre
Adamo Caino Eva
Abramo Isacco Sara
Abramo Ismaele Agar
Padri⋈Madri
• Questa definizione non derivata è più generale di quella introduttiva perché estende il Join Naturale al caso in cui gli schemi delle relazioni operando abbiano più attributi uguali
Nome Cognome Seduta
Ciro Bianchi 2
Alba Verde 1
Fosco Avaro 1
Nome Cognome Tasse
Aldo Rossi Si
Rosa Spinosa No
Ciro Bianchi Si
Alba Verde Si
Fosco Avaro No
Nome Cognome Seduta Tasse
Ciro Bianchi 2 Si
Alba Verde 1 Si
Fosco Avaro 1 No
Prenotati InRegola
Prenotati ⋈ 𝐈𝐧𝐑𝐞𝐠𝐨𝐥𝐚
JOIN NATURALE
• … e se nell’ultima definizione rimuovessimo il vincolo dell’esistenza di uno o più attributi uguali …….? Significa ammettere anche la possibilità : SC(R1) ∩ SC(R2)= ∅
• in base alla definizione non derivata abbiamo che
– Se: SC(R1) ∩SC(R2) = ∅
Allora: R1⋈R2 = R1 X R2
Se gli schemi degli operandi non hanno attributi uguali, Join Naturale
coincide col Prodotto cartesiano
NB. Pensando al join naturale come sequenza di Ridenominazione, Prodotto Cartesiano, Selezione e Proiezione, è evidente che se non vi sono attributi uguali … cadono tutte tranne il prodotto
• … consideriamo anche il caso estremo opposto, quello in cui gli schemi degli operandi sono uguali: SC(R1)=SC(R2)
• in base alla definizione, abbiamo che
– Se: SC(R1) ∩SC(R2)= SC(R1) = SC(R2)
– Allora: R1⋈R2 = R1 ∩R2
Se gli schemi delle relazioni operando sono uguali, il loro Join Naturale coincide con la loro intersezione
le tuple … dondolanti … ( dangling)
• Le tuple delle relazioni in Join che non contribuiscono al risultato sono dette «dangling»
Nome Cognome Seduta
Ciro Bianchi 2
Alba Verde 1
Rosa Aulente 2
Fosco Avaro 1
Nome Cognome Tasse
Aldo Rossi Si
Rosa Spinosa No
Ciro Bianchi Si
Alba Verde Si
Fosco Avaro No
Nome Cognome Seduta Tasse
Ciro Bianchi 2 Si
Alba Verde 1 Si
Fosco Avaro 1 No
Prenotati InRegola
Prenotati ⋈ 𝐈𝐧𝐑𝐞𝐠𝐨𝐥𝐚
• Diremo che il Join R1⋈R2 è completo se non lascia tuple dangling in R1 o R2
• Diremo che il Join R1⋈R2 è incompleto a sinistra se lascia tuple dangling in R1
• Diremo che il Join R1⋈R2 è incompleto a destra se lascia tuple dangling in R2
OUTER JOIN ( join esterno)
• Differisce da Join Naturale per la eliminazione di:
– Incompletezza a sinistra: R1 ⋈left R2
– Incompletezza a destra: R1 ⋈right R2
– Incompletezza a sinistra e a destra: R1 ⋈full R2
• R1 ⋈left R2 , Join Esterno Sinistro, è una estensione del Join naturale realizzata aggiungendo a TU(RR) una tupla tu per ogni t1 dangling di R1: tu avrà i valori di t1 negli attributi comuni ad R1 e valore NULL in tutti gli altri
• R1 ⋈right R2, Join Esterno Destro, è una estensione del Join naturale realizzata aggiungendo a TU(RR) una tupla tu per ogni t2 dangling di R2: tu avrà i valori di t2 negli attributi comuni ad R2 e valore NULL in tutti gli altri
• R1 ⋈full R2 , Join Esterno Completo, si ottiene realizzando le estensioni sia del Join Esterno Sinistro che di quello esterno Destro
Nome Cognome Seduta
Ciro Bianchi 2
Alba Verde 1
Rosa Aulente 2
Fosco Avaro 1
Nome Cognome Tasse
Aldo Rossi Si
Rosa Spinosa No
Ciro Bianchi Si
Alba Verde Si
Fosco Avaro No
Nome Cognome
Seduta Tasse
Ciro Bianchi 2 Si
Alba Verde 1 Si
Rosa Aulente 2 NULL
Fosco Avaro 1 No
Prenotati InRegola
Prenotati ⋈left 𝐈𝐧𝐑𝐞𝐠𝐨𝐥𝐚
Nome Cognome
Seduta Tasse
Ciro Bianchi 2 Si
Alba Verde 1 Si
Aldo Rossi NULL Si
Rosa Spinosa NULL No
Fosco Avaro 1 No
Prenotati ⋈right 𝐈𝐧𝐑𝐞𝐠𝐨𝐥𝐚
… ritorniamo al Join naturale
• Per Join naturale vale la proprietà commutativa
– R1⋈R2 = R2⋈R1
• Vale anche la proprietà associativa
– (R1⋈R2)⋈R3 = R1⋈(R2⋈R3)
– Per cui …. R1⋈R2⋈R3 ⋈ ….. Rn
– E possiamo anche ….. ⋈𝒊=𝟏 𝑹𝒊 n
Espressioni Equivalenti
• Anche l’algebra relazionale offre la possibilità di ottenere lo stesso risultato con espressioni diverse
• La padronanza della equivalenza fra le espressioni è importante perché consente di scegliere fra diverse soluzioni (realizzando Trasformazioni di Equivalenza) ottimizzando altri parametri (costi, tempi, …)
… le lasciamo al vostro approfondimento ….. limitandoci qui a segnalare alcune proprietà utili …
• La Selezione è distributiva sia rispetto all’Unione che alla Differenza – σ𝑷(e1 ∪ e2) ≡ σ𝑷 (e1) ∪ σ𝑷(e2)
– σ𝑷 (e1 −e2) ≡ σ𝑷 (e1) −σ𝑷 (e2)
• La proiezione è distributiva rispetto all’unione ma non rispetto alla differenza – 𝜋𝑠(e1 ∪ e2) ≡ 𝜋𝑠(e1) ∪ 𝜋𝑠(e2)
– 𝜋𝑠 (e1 −e2) ≠ 𝜋𝑠(e1) −𝜋𝑠(e2)
• Anche Join naturale è distributivo rispetto all’Unione – 𝒆 ⋈(e1 ∪ e2) ≡ (𝒆 ⋈e1) ∪ (e ⋈ e2)
• Anticipazione della Selezione rispetto a Join naturale ( PushingSelections Down):
– se e solo se la proprietà di selezione coinvolge i soli attributi di una delle due espressioni relazionali in Join; ad esempio se P è solo sugli attributi di e2
σ𝑷 (e1⋈e2) ≡ e1⋈ σ𝑷 (e2)
• Atomizzazione della Selezione
𝝈𝒑𝟏∧𝒑𝟐(e) ≡ σ𝒑𝟏(σ𝒑𝟐(e))
• Esercizio: – È sicuramente vera:
𝜋𝐴,𝐵(σ𝑨>𝟎(R)≡ σ𝑨>𝟎 (𝜋𝐴,𝐵(R))
Generalizzare: in quali casi la selezione è Anticipabile rispetto alla proiezione?
• è vero o falso che – 𝝈𝒑𝟏⋁𝒑𝟐(e) ≡ σ𝒑𝟏(e) ∪ σ𝑷𝟐 (e)
?
IL PROBLEMA DEI VALORI NULL
• Problemi non rilevanti nelle operazioni insiemistiche, nelle ridenominazioni e nelle proiezioni
• … invece per la Selezione e per Join …
Per tutte le operazioni che coinvolgono la valutazione di un predicato f con uno o più operandi non vincolati a NOT NULL
A=B A ϴB con ϴЄ{<, > , ≠,≤,≥}
• A=B A ϴB hanno o valore VERO o valore FALSO ( … tertium non datur …)
• Se il valore degli operandi ( A e B ) è NULL … – La semantica di NULL è : valore sconosciuto, come si può
dire che è VERO o FALSO il confronto fra due valori che non si conoscono?
• Se uno degli operandi ha valore NULL e l’altro no…
– …. Come si può dire che è VERO o FALSO il confronto fra un valore noto e ed un valore sconosciuto?
• Dipendenti ≡{ Codice, Nome, Mansione, Paga, Età}
• R1 = σ𝑬𝒕à<𝟑𝟎 (Dipendenti)
• R2 = σ𝑬𝒕à≥𝟑𝟎 (Dipendenti)
• Dipendenti = R1∪R2
– ???????????????????
Codice Nome Mansione Paga Età
301 Maria Impiegata 1260 NULL
415 Pasquale NULL 3000 27
312 Giorgio Operaio 1100 24
328 Gennaro Dirigente 2500 NULL
402 Michele Contabile 1400 38
398 Nicola Tecnico 1260 41
276 Noemi Dirigente 2500 30
σ𝑬𝒕à<𝟑𝟎 𝑷𝒂𝒔𝒒𝒖𝒂𝒍𝒆 , 𝑮𝒊𝒐𝒓𝒈𝒊𝒐
σ𝑬𝒕à≥𝟑𝟎 Michele, Nicola , Noemi
… e facendo l’Unione delle due selezioni …. abbiamo perso Maria e Gennaro
…è una logica a 3 Valori …
Dipendenti = σ𝑬𝒕à<𝟑𝟎 (Dipendenti) ∪ σ𝑬𝒕à≥𝟑𝟎 (Dipendenti) ∪
σ𝑬𝒕à 𝑰𝑺 𝑵𝑼𝑳𝑳 (Dipendenti)
A Not A
V F
N N
F V
and V F N
V V F N
F F F F
N N F N
or V F N
V V V V
F V F N
N V N N
Operazioni di Modifica dello STATO di un DB
• Sono operazioni che, in generale, non vengono presentate col modello relazionale dei dati
• Sono operazioni che modificano in modo permanente l’istanza (*) di una relazione del DB
• Sono operazioni derivabili dalle operazioni insiemistiche del set funzionalmente completo
(*) … nei linguaggi ( SQL) troveremo anche istruzioni per la modifica degli schemi ..
• Operazioni sulle tuple
– Inserimento
– Cancellazione
– Modifica
Poiché modificano l’istanza di una relazione, sono condizionate al
RISPETTO DEI VINCOLI
inserimento
• INSERT tu, R – tu = ≺ v1, v2, …, vn≻ definisce un valore per
ciascun attributo della relazione
– Definizione: R↤≺ v1, v2, …, vn≻∪ R
– L’operazione DEVE ESSERE RIFIUTATA se • Viola vincolo di dominio
• Viola vincolo di tupla
• Viola vincolo di chiave primaria
• Viola vincoli di integrità referenziale
Studente Voto Lode
30501 26 no
30541 30 si
Matricola Nome
30491 Rossi
30480 Bianchi
30501 Verdi
30541 Neri
EsamiDB
Studenti
INSERT ≺ 80908, 28, no≻ , 𝐸𝑠𝑎𝑚𝑖𝐷𝐵
INSERT ≺ 30480, 28, si≻ , 𝐸𝑠𝑎𝑚𝑖𝐷𝐵
INSERT ≺ NULL, 28, no≻ , 𝐸𝑠𝑎𝑚𝑖𝐷𝐵
Cancellazione
• DELETE tu, R
– Con tu ∈ 𝑇𝑈 𝑅
– Definizione: R↤ R – tu
– L’operazione può violare
Vincoli di Integrità referenziale
L’operazione va rifiutata o va propagata in cascata a tutte le tuple referenti della tabella referente ( es. cancellazione di tali tuple o valori NULL )
Studente Voto Lode
30501 26 no
30541 30 si
Matricola Nome
30491 Rossi
30480 Bianchi
30501 Verdi
30541 Neri
EsamiDB
Studenti
DELETE ≺ 30541, Neri≻ , 𝑆𝑡𝑢𝑑𝑒𝑛𝑡𝑖
Possibile solo se propago la cancellazione alla tupla Referente in EsamiDB
• StudenteDB ≡ *𝑀𝑎𝑡𝑟, 𝑁𝑜𝑚𝑒, 𝐶𝑜𝑔𝑛𝑜𝑚𝑒, 𝑒_𝑚𝑎𝑖𝑙}
• GruppiDB ≡ *𝑆𝑡𝑢𝑑𝑅𝑖𝑓, 𝑆𝑡𝑢𝑑𝑒𝑛𝑡𝑒2, 𝑆𝑡𝑢𝑑𝑒𝑛𝑡𝑒3}
• EsercitazioneDB ≡ *𝐶𝑜𝑑𝑖𝑐𝑒, 𝑇𝑖𝑡𝑜𝑙𝑜, 𝐷𝑜𝑐𝑒𝑛𝑡𝑒}
• LezioneDB≡ *𝐶𝑜𝑑𝑖𝑐𝑒, 𝐷𝑎𝑡𝑎, 𝑇𝑖𝑡𝑜𝑙𝑜, 𝐷𝑜𝑐𝑒𝑛𝑡𝑒}
• SlidesDB ≡ *𝐵𝑙𝑜𝑐𝑐𝑜, 𝑇𝑖𝑡𝑜𝑙𝑜, 𝑛. 𝑟𝑜 𝑠𝑙𝑖𝑑𝑒𝑠}
• EsamiDB≡ *𝑆𝑡𝑢𝑑𝑒𝑛𝑡𝑒, 𝑉𝑜𝑡𝑜, 𝐿𝑜𝑑𝑒, 𝐷𝑎𝑡𝑎}
• PrenotatiDB≡ *𝑆𝑡𝑢𝑑𝑒𝑛𝑡𝑒, 𝑆𝑒𝑑𝑢𝑡𝑎, 𝑆𝑒𝑑𝑒}
• ……………………………………………………………….
Una cancellazione in StudenteDB (… cancella uno studente di cui scompare anche la MATR) richiede
una CASCATA di cancellazioni in tutte relazioni ad essa referenti ( debbono scomparire tutte le tuple che fanno riferimento, attraverso
la sua matricola allo, studente cancellato)
Modifica
• UPDATE (tu, tx), R – tu ∈ 𝑇𝑈 𝑅 è la tupla da modificare e tx è la
tupla tu modificata
– Definizione: R↤ (R – tu) ∪tx
– È sostanzialmente la sequenza di una operazione di Delete e di una operazione di Insert, quindi per i vincoli ….. • particolare attenzione per i vincoli di integrità
referenzaile
VISTE
• Un RDB è un insieme di relazioni {𝑅1, 𝑅2, … 𝑅𝑛}
• … in generale in tale insieme non esistono relazioni derivate, cioè ottenibili ( o ottenute) come risultato di una espressione relazionale su una o più delle restanti relazioni del DB
• … solo «eccezionalmente» una relazione derivata si «materializza» permanentemente con una propria istanza nel DB – Onerosi problemi di allineamento ….. fra derivate e
non
• È invece possibile che Relazioni Derivate vengano mantenute nel DB come Relazioni Virtuali
• … e cioè relazioni definite ed usabili in interrogazioni e in espressioni relazionali
• … come se esistessero, ma la cui istanza viene invece ricalcolata ad ogni uso
Def. Diremo Viste del DB le relazioni derivate e virtuali in esso disponibili
• Le Viste possono essere molto vantaggiose in molti casi – Per definire il «tailoring» del DB sulle esigenze di un
utente ( Viste di Utente: le sole componenti di interesse …..)
– Per memorizzare e consentire il riuso di espressioni relazionali complesse senza doverle ridefinire
– Realizzare politiche di protezione e privacy attraverso autorizzazioni di accesso per viste
– Nelle ristrutturazioni di un DB ( ad esempio per mantenere la compatibilità con applicazioni sul vecchio schema).
… esercizio …
• DB-Senato ≡ [ Senatori, Collegi, Province, Regioni, Commissioni]
• Senatori ≡{ Codice, Cognome, Nome, Commissione, Provincia, NumCollegio}
• Collegi ≡{ Provincia, Numero, Nome }
• Province ≡{ Sigla, Nome, Regione }
• Regioni ≡{ Codice, Nome }
• Commissioni ≡{ Numero, Nome, Presidente }
• Trovare Nome e Cognome dei presidenti di commissioni cui partecipa un senatore eletto in una provincia campana
• Trovare Nome e Cognome dei senatori della Commissione bilancio
• Trovare Nome, Cognome e provincia di elezione dei senatori della commissione bilancio
• Trovare Nome, Cognome, provincia e regione di elezione dei senatori della commissione bilancio
• Trovare le regioni in cui vi sia un solo collegio, indicando il Nome e Cognome del senatore ivi eletto
• Trovare i collegi di una stessa regione in cui siano stati eletti senatori con lo stesso Nome
COMPA CODVOL AIRPORTP CITTAP AIRPORTA CITTAA ORAP ORAA
ALITALIA 1231 Malpensa Milano JFK NEWYORK 10.00 12.00
ALITALIA 120 Linate Milano Capodichino Napoli 18.30 19.45
ALITALIA 108 Capodichino Napoli Linate Milano 7.35 8.45
MERIDIANA 111 Linate Milano Capodichino Napoli 17.00 18.15
AirFrance 23 Fiumicino Roma C.DeGaulle Parigi 10.30 12.30
DELTA 1234 JFK NEWYORK Fiumicino Roma 11.00 23.50
A & A 2123 LaGuardia NEWYORK LosAngeles LosAngeles 16.30 19.30
AirFrance 32 C.DeGaulle Parigi Fiumicino Roma 18.00 20.00
BritishAW 4412 Fiumicino Roma Gatewick Londra 7.00 9.30
Lufthansa 4400 Malpensa Milano Shiphol Amsterdam 8.30 10.30
DELTA 1238 JFK NEWYORK Heathrow Londra 22.00 10.00
HawaiianA 100 LosAngeles LosAngeles Honolulu Honolulu 18.00 21.40
AirFrance 400 Orly Parigi Ciampino Roma 8.45 11.00
MERIDIANA 112 Linate Milano PuntaRaisi Palermo 17.30 19.30
MERIDIANA 109 Capodichino Napoli Linate Milano 8.35 9.45
CODVOL CITTAP CITTAA
1231 Milano NEWYORK
120 Milano Napoli
108 Napoli Milano
111 Milano Napoli
23 Roma Parigi
1234 NEWYORK Roma
2123 NEWYORK LosAngeles
32 Parigi Roma
4412 Roma Londra
4400 Milano Amsterdam
1238 NEWYORK Londra
100 LosAngeles Honolulu
400 Parigi Roma
112 Milano Palermo
109 Napoli Milano
CITTAP CITTAA
Milano NEWYORK
Milano Napoli
Napoli Milano
Roma Parigi
NEWYORK Roma
NEWYORK LosAngeles
Parigi Roma
Roma Londra
Milano Amsterdam
NEWYORK Londra
LosAngeles Honolulu
Milano Palermo
𝝅𝑪𝒐𝒅𝑽𝒐𝒍,𝑪𝒊𝒕𝒕à𝑷,𝑪𝒊𝒕𝒕à𝑨 (AV)
𝝅𝑪𝒊𝒕𝒕à𝑷,𝑪𝒊𝒕𝒕à𝑨 (AV)
COMPA CODVOL
ALITALIA 1231
ALITALIA 120
ALITALIA 108
MERIDIANA 111
AirFrance 23
DELTA 1234
A & A 2123
AirFrance 32
BritishAW 4412
Lufthansa 4400
DELTA 1238
HawaiianA 100
AirFrance 400
MERIDIANA 112
MERIDIANA 109
COMPA
ALITALIA
MERIDIANA
AirFrance
DELTA
A & A
BritishAW
Lufthansa
HawaiianA
𝝅𝑪𝒐𝒎𝒑𝑨,𝑪𝒐𝒅𝑽𝒐𝒍 (AV)
𝝅𝑪𝒐𝒎𝒑𝑨(AV)
COMPA CODVOL AIRPORTP CITTAP AIRPORTA CITTAA ORAP ORAA
ALITALIA 120 Linate Milano Capodichino Napoli 18.30 19.45
MERIDIANA 111 Linate Milano Capodichino Napoli 17.00 18.15
COMPA CODVOL AIRPORTP CITTAP AIRPORTA CITTAA ORAP ORAA
ALITALIA 1231 Malpensa Milano JFK NEWYORK 10.00 12.00
COMPA CODVOL AIRPORTP CITTAP AIRPORTA CITTAA ORAP ORAA
ALITALIA 108 Capodichino Napoli Linate Milano 7.35 8.45
COMPA CODVOL AIRPORTP CITTAP AIRPORTA CITTAA ORAP ORAA
ALITALIA 120 Linate Milano Capodichino Napoli 18.30 19.45
MERIDIANA 111 Linate Milano Capodichino Napoli 17.00 18.15
σ𝑪𝒊𝒕𝒕à𝑷=′𝑴𝑰𝑳𝑨𝑵𝑶′∧ 𝑪𝒊𝒕𝒕à𝑨=′𝑵𝑨𝑷𝑶𝑳𝑰’ (AV)
σ𝑨𝒊𝒓𝒑𝒐𝒓𝒕𝑷=′𝑴𝒂𝒍𝒑𝒆𝒏𝒔𝒂′∧ 𝑪𝒊𝒕𝒕à𝑨=′𝑵𝑬𝑾𝒀𝑶𝑹𝑲′ (AV)
σ𝑨𝒊𝒓𝒑𝒐𝒓𝒕𝑷=′𝑳𝑰𝑵𝑨𝑻𝑬′∧ 𝑪𝒊𝒕𝒕à𝑨=′𝑵𝑨𝑷𝑶𝑳𝑰′∧𝑶𝒓𝒂𝑷>𝟏𝟔 (AV)
σ𝑨𝒊𝒓𝒑𝒐𝒓𝒕𝑨=′𝑳𝑰𝑵𝑨𝑻𝑬′∧ 𝑪𝒊𝒕𝒕à𝑷=′𝑵𝑨𝑷𝑶𝑳𝑰′∧𝑶𝒓𝒂𝑷<𝟏𝟎 (AV)
A B C
a1 b1 c1
a2 b2 c2
a2 b1 c4
A B C
a1 b9 C11
a2 b2 c2
a2 b1 c4
𝝅𝑨 (e1 −e2)
a3 b1 c4
A
a1
a3
𝝅𝑨(e1) −𝝅𝑨(e2) A
a3
e1 e2
..vengono eliminate le tuple di e1 che differiscono da quelle di e2 per valori diversi solo in B e/o C