operatori(relazionali( -...
TRANSCRIPT
OPERATORI RELAZIONALI
prima RIPASSIAMO …COSA ABBIAMO IMPARATO
Proge0azione di DB La metodologia “classica” è basata su 3 fasi …
ANALISI REQUISITI
Tabella2 Tabella1 TabellaN
PROGETTAZIONE CONCETTUALE
PROGETTAZIONE LOGICA Schema logico relazionale
PROGETTAZIONE FISICA
FILE1 FILE2 FILEn
Cosa si rappresenta
Come lo si rappresenta
Sappiamo riconoscere -‐ En%ta’ e a*ribu% ( semplici-‐compos0-‐mul0pli) Chiave primaria interna PK -‐ Associazione -‐partecipazione (tot /parz) -‐molteplicità(univ/mult) -‐ Tipologie 1:1 1:N N:N
Sappiamo applicare le Regole di DERIVAZIONE Su En0ta’ e Associazioni Per costruire lo Schema logico relazionale
Eventuale FASE DI TESTING : scrivere ipotesi di tabelle
FK:CodiceMedico referenzia tblMEDICI
Sappiamo progeCare semplici DataBASE – scrivere schema conce*uale e schema logico ( come in questo esempio)
RIEPILOGO REGOLE DI DERIVAZIONE
1. Ogni ENTITA’ diventa una relazione (tabella). 2. Ogni ATTRIBUTO di un’enOta diventa un aQributo della relazione,( cioe il nome di una colonna della tabella) ed eredita le caraQerisOche dell’aQributo dell’enOta da cui deriva. 3.L’ IDENTIFICATORE UNIVOCO di un’enOta diventa chiave primaria della relazione. 4. L’ASSOCIAZIONE di Kpo 1:N viene rappresentata aggiungendo, agli aQribuO della relazione dell’enOta lato N una «chiave esterna» (foreign key) collegata alla chiave primaria dell’altra enOta. 5.L’ASSOCIAZIONE 1:1 a partecipazione reciprocamente totale diventa un’unica relazione ( tabella) che conOene tu[ gli aQribuO della prima e della seconda enOta. 6. L’ASSOCIAZIONE di Kpo 1:1 a partecipazione parziale-‐totale viene rappresentata aggiungendo, agli aQribuO della relazione dell’enOta a partecipazione totale, una chiave esterna (foreign key) collegata alla chiave primaria dell’altra enOta. 7. L’ASSOCIAZIONE N:N diventa una nuova relazione (in aggiunta alle relazioni derivate dalle due enOta) con i suoi eventuali aQribuO , a cui si aggiungono le "chiavi esterne” FK logicamente collegate alle "chiavi primarie” PK delle prime due relazioni. La chiave primaria è composta dalle due chiavi esterne. (NB: vale anche per associazione 1:1 con partecipazione reciprocamente parziale)
OPERATORI RELAZIONALI
definiK da Codd (1970) Agiscono su una o più relazioni
( tabelle) per o0enere una nuova relazione
servono a realizzare le interrogazioni sul database ( query )
IMMAGINIAMO ORA DI AVERE A DISPOSIZIONE ALCUNE TABELLE RELATIVE AD UN DATABASE E DI VOLER INTERRROGARE IL DATABASE PER ESTRARRE SOLO LE INFORMAZIONI CHE CI INTERESSANO.
DOBBIAMO UTILIZZARE GLI:
SCHEMA OPERATORI RELAZIONALI
operano su UNA TABELLA
NB: INTERSEZIONE, UNIONE, DIFFERENZA SI POSSONO FARE SOLO CON TABELLE COMPATIBILI CIOE’ AVENTI LO STESSO SCHEMA DI ATTRIBUTI ( stesse colonne )
SELEZ. RIGHE
SELEZ. COLONNE
operano su due TABELLE
TUPLE COMUNI E NON COMUNI
TUPLE DI R – TUPLE DI S
ASSOCIA AGNI TUPLA DI R TUTTE LE TUPLE DI S
TUPLE COMUNI ( se ci sono )
Congiunge tabelle R ed S con aQributo comune
OPERATORI RELAZIONALI PRINCIPALI
SELEZIONE (DI RIGHE)
PER Predicato DA relazione
σ ciQà=“Torino” (ClienO)
∏Campo1,Campo2 (Tabella)
PROIEZIONE (DI COLONNE)
SU ListaAQribuO DA relazione
GIUNZIONE NATURALE JOIN fra
TabellaR su Cod e TabellaS su Cod R ⋈ S
Cod=Cod
Nel Predicato si uOlizzano anche AND e OR
DUE TABELLE si possono congiungere
Da UNA TABELLA posso ricavare :
Date le TABELLE per interrogare il Database si usano gli OPERATORI RELAZIONALI
operano su UNA TABELLA
NB: INTERSEZIONE, UNIONE, DIFFERENZA SI POSSONO FARE SOLO CON TABELLE COMPATIBILI CIOE’ AVENTI LO STESSO SCHEMA DI ATTRIBUTI ( stesse colonne )
SELEZ. RIGHE
SELEZ. COLONNE
operano su due TABELLE
TUPLE COMUNI E NON COMUNI
TUPLE DI R – TUPLE DI S
ASSOCIA AGNI TUPLA DI R TUTTE LE TUPLE DI S
TUPLE COMUNI ( se ci sono )
Congiunge tabelle R ed S con aQributo comune
UNIONE R ∪ S DIFFERENZA R-‐S INTERSEZIONE R∩S =R-‐(R-‐S) PRODOTTO CARTESIANO R x S
a b c
pq Insieme di coppie ordinate (r;s) oQenute abbinando
ogni elemento di R con tu[ gli elemenO di S. Non è commutaOva In questo esempio RXS={ ( a;p) (a;q) (b;p) (b;q) (c;p) (c;q)}
OPERATORI INSIEMISTICI fra R ed S sono operazioni insiemis0che fra tabelle…ricordiamo LA LORO DEFINIZIONE ALGEBRICA:
ElemenO comuni e non comuni. E’ commutaOva cioè R U S = S U R
ElemenO di R – elemenO di S . Non è commutaOva cioè R –S ≠ S -‐ R
ElemenO comuni fra R ed S. E’ commutaOva R∩S=S∩R
R S
UNIONE R∪S
LA RELAZIONE RISULTANTE HA : GRADO UGUALE ( stesso schema e quindi stesso n. colonne!) CARDINALITA’ =CARD(R)+CARD(S) –CARD(R∩S)
E’ una nuova relazione ( tabella ) che ha: Per schema: gli stessi a0ribuK Per istanza: le tuple comuni e non comuni (scri0e una sola volta)
SOMMA DELLE CARDINALITA’ DELLE TABELLE – NUMERO RIGHE COMUNI
Grado=4 (n colonne)
Card=5 ( n. righe)
Possibile solo fra tabelle COMPATIBILI !
}
E’ una nuova relazione ( tabella ) che ha: Per schema: gli stessi a0ribuK Per istanza: le tuple di R meno quelle comuni ad S
DIFFERENZA R-‐S
LA RELAZIONE RISULTANTE HA : GRADO UGUALE ( stesso schema e quindi stesso n. colonne!) CARDINALITA’ = CARD(R) – CARD(R∩S), RIGHE COMUNI)
Possibile solo fra tabelle COMPATIBILI !
Grado=4 Card(R-‐S)= 1 (3-‐2righe comuni)
}
INTERSEZIONE R∩S
LA RELAZIONE INTERSEZIONE HA : GRADO UGUALE CARDINALITA’ = CARD(R∩S) = NUMERO RIGHE COMUNI
E’ una nuova relazione ( tabella ) che ha: Per schema: lo stesso schema Per istanza: le tuple comuni ( scri0e una sola volta )
Possibile solo fra tabelle COMPATIBILI !
} Grado=4 Card(R∩S)= 2
PRODOTTO CARTESIANO RXS è una nuova tabella con • schema: gli a0ribuK di R e di S Grado (n.colonne) = g1+g2 • istanza: tu0e le possibili coppie di tuple di R e S Card=c1 X c2
IL GRADO è LA SOMMA DEI GRADI LA CARDINALITA’ E’ IL PRODOTTO DELLE CARDINALITA’
Possibile con Grado (n.colonne) e Cardinalità(n.righe) diverse.
Ogni tupla d
i R
viene conca
tenata
a tuCe le tu
ple di S
PROIEZIONE DI COLONNE ∏ (proj)
PROIEZIONE SU Lista aQribuO DA relazione
OPERATORI UNARI SU UNA RELAZIONE ( tabella )
PROIEZIONE ( di colonne)
Grado(S)≤ Grado(R)
S = ∏ Cognome, Nome (ClienO)
Data la tabella IMP ( impiegaO), si esprima, nell’algebra relazionale, ciascuna delle seguenO interrogazioni: A – elenco Cognome e Nome degli ImpiegaO B -‐ elenco Reparto e Superiore degli ImpiegaO
PROVA TU…
Soluzioni
SELEZIONE DI RIGHE σ ( SEL) SELEZIONA PER Predicato
DA relazione
OPERATORI UNARI SU UNA RELAZIONE
SELEZIONE O RESTRIZIONE di righe
S = σ CiQà = “Torino” (ClienO) S = σ CiQà= “Torino” (ClienO)
Il Predicato di una selezione può essere semplice oppure composto con operatori: AND e OR
S1 = σ Filiare=“Roma” (ImpiegaO)
ImpiegaO
S2 = σ SOpendio<60 (ImpiegaO)
S3 = σ Filiare=“Roma” AND SOpendio<60 (ImpiegaO)
S4 = σ Filiare=“Roma” OR SOpendio<60 (ImpiegaO)
Verdi 60
TABRisultato =righe 1-‐ 5
TABRisultato =righe 1-‐ 3
TABRisultato =riga 1
1 2 3 4 5
TABRisultato =righe 1-‐3-‐5
Esempi di condizioni riferite alla tabella ImpiegaO la tab risultato è formata dalle righe indicate
Scrivi le istruzioni per selezionare gli ImpiegaO: A -‐ con età <30 B -‐ con reddito superiore a 4.000.000 C -‐ con età minore di 30 e reddito superiore a 4ml
PROVA TU…
σ Età<30 (ImpiegaO)
σ sOpendio>4.000.000 (ImpiegaO)
Soluzione B
Soluzione C
Soluzione A
AND
Soluzioni
COMBINAZIONE di SELEZIONE e PROIEZIONE
S = σ Indirizzo=“Torino” (Studente)
2) PROIEZIONE su Cognome, Nome da tabella Selezionata
R=Studente
Voglio selezionare Cognome e Nome
degli studenO di Torino
1) SELEZIONE per Indirizzo=“Torino” ( Studente)
P = ∏ Cognome, Nome (σ Indirizzo=“Torino” (Studente) NB: è necessario operare prima la selezione e poi la proiezione e non viceversa! PERCHE?...( Immagina cosa accadrebbe…) Prima oCerrei le colonne Cognome – Nome dell’intera tabella STUDENTE E come potrei su quelle sole colonne selezionare indirizzo=“Torino”?
Con riferimento al seguente schema: PERSONE ( Codicefiscale , Cognome ,Nome , età , Reddito ,Ci0à )
si esprima, nell’algebra relazionale, ciascuna delle seguenO interrogazioni: A – Reddito delle Persone abitanO a Milano B -‐ Nome e Reddito delle persone con meno di 30 anni
Prova tu ….
Con riferimento al seguente schema: PERSONE ( Codicefiscale , Cognome ,Nome , età , Reddito ,Ci0à )
si esprima, nell’algebra relazionale, ciascuna delle seguenO interrogazioni: A – Reddito delle Persone abitanO a Milano B -‐ Nome e Reddito delle persone con meno di 30 anni
Prova tu ….soluzione
P = ∏ Reddito (σ ciQà=“Milano” (PERSONE))
P = ∏ Nome,Reddito (σ età<30 (PERSONE))
GIUNZIONE NATURALE JOIN R⋈S
Osservazione Il join NATURALE è definito operatore derivato poiché si può oQenere componendo due operazioni fondamentali: prodoQo cartesiano accompagnata dalla selezione sugli aQribuO in comune fra le due relazioni
SERVE PER CORRELARE INFORMAZIONI DA TABELLE DIVERSE
AVENTI ALMENO UN ATTRIBUTO IN COMUNE
GIUNZIONE naturale R⋈S JOIN Per TABELLE R e S con un ATTRIBUTO COMUNE
Date le tabelle CLIENTE e AGENTE con aQributo comune “CodAg” vogliamo oQenere in una unica tabella ,per ogni cliente, anche le informazioni relaOve agli agenO: Giunzione di Cliente su CodAg e di Agente su CodAg
GRADO = Grad(R)+Grad(S)-‐1 la colonna comune si conta una sola volta CARD: dipende dai valori della colonna in comune: Se non ci sono valori nulli= = card maggiore fra R ed S. Se ci sono valori nulli alcune t-‐uple non si possono congiungere!
ESEMPIO DI JOIN R⋈S
Studente ⋈ Facolta
JOIN COMPLETO R⋈S
R⋈S
alcune tuple non sono combinabili ( tuple dangling ) e vengono "tagliate fuori”.
R⋈S
E’ una relazione valida MA vuota : tuQe le tuple sono “tagliate fuori , appese ,“ dangling tuples”.
estende, con valori nulli, le t-‐uple tagliate fuori da un join (interno)
JOIN ESTERNO
SINISTRO -‐ LEFT: manOene tuQe le T-‐UPLE del 1 operando, estendendole con valori NULL
DESTRO -‐RIGHT manOene tuQe le T-‐UPLE del 2 operando, estendendole con valori NULL
COMPLETO-‐ FULL manOene tuQe le T-‐UPLE estendendole con valori NULL
approfondimento