Il modello relazionale
-
Upload
mansour-jalil -
Category
Documents
-
view
48 -
download
0
description
Transcript of Il modello relazionale
11
Il modello relazionaleIl modello relazionale
22
IntroduzioneIntroduzione
Il modello relazionale, sebbene non sia stato il modello usato nei Il modello relazionale, sebbene non sia stato il modello usato nei
primi DBMS, e' divenuto lentamente il modello più importante al primi DBMS, e' divenuto lentamente il modello più importante al
punto che è oggi comunemente usato in tutti i DBMS disponibili a punto che è oggi comunemente usato in tutti i DBMS disponibili a
livello commerciale.livello commerciale.
La ragione principale della popolarità di questo modello è che La ragione principale della popolarità di questo modello è che
fornisce linguaggi semplici e fornisce linguaggi semplici e di tipo dichiarativodi tipo dichiarativo, ma potenti al , ma potenti al
tempo stesso, con cui esprimere le operazioni per l'accesso e la tempo stesso, con cui esprimere le operazioni per l'accesso e la
manipolazione dei dati.manipolazione dei dati.
Il modello relazionale è basato sul concetto matematico di Il modello relazionale è basato sul concetto matematico di
relazionerelazione; questo fornisce al modello una base teorica che ; questo fornisce al modello una base teorica che
permette di dimostrare formalmente proprietà di dati e di permette di dimostrare formalmente proprietà di dati e di
operazioni.operazioni.
33
Il prodotto cartesianoIl prodotto cartesiano
Il concetto matematico alla base del modello relazionale è la Il concetto matematico alla base del modello relazionale è la relazione.relazione.
Una relazione è formalmente definita come un sottoinsieme finito del Una relazione è formalmente definita come un sottoinsieme finito del
prodotto cartesianoprodotto cartesiano di una lista di di una lista di dominidomini. .
Un dominio è un insieme (anche infinito) di valori; ad esempio:Un dominio è un insieme (anche infinito) di valori; ad esempio:
– l'insieme dei numeri interi è un dominio;l'insieme dei numeri interi è un dominio;
– l'insieme delle stringhe di caratteri di lunghezza 20 è un dominio;l'insieme delle stringhe di caratteri di lunghezza 20 è un dominio;
– l'insieme {0,1} è un dominio.l'insieme {0,1} è un dominio.
Siano DSiano D11,D,D22,.....D,.....Dkk domini. Il prodotto cartesiano di tali domini, indicato con domini. Il prodotto cartesiano di tali domini, indicato con
DD11 x D x D22 x..... x D x..... x Dkk
è definito come l'insieme {(vè definito come l'insieme {(v11, v, v22, ....., v, ....., vkk) | v) | v11 DD11, v, v2 2 DD22, ..... v, ..... vk k DDkk}.}.
44
Il concetto di relazioneIl concetto di relazione
Ad esempio, dati k=2, DAd esempio, dati k=2, D11={0,1} e D={0,1} e D22={a,b,c}, il prodotto ={a,b,c}, il prodotto
cartesiano di Dcartesiano di D1 1 e De D22 è è
DD11 x D x D22 = {(0,a), (0,b), (0,c), (1,a), (1,b), (1,c)}. = {(0,a), (0,b), (0,c), (1,a), (1,b), (1,c)}.
Una Una relazionerelazione è un qualsiasi sottoinsieme del prodotto cartesiano è un qualsiasi sottoinsieme del prodotto cartesiano
di uno o più domini; per esempio.di uno o più domini; per esempio.
– {(0,a), (0,c),(1,b)} è una relazione;{(0,a), (0,c),(1,b)} è una relazione;
– {(1,b), (1,c)} è una relazione.{(1,b), (1,c)} è una relazione.
Gli elementi di una relazione sono detti Gli elementi di una relazione sono detti tupletuple. Nell'esempio . Nell'esempio
precedente (0,a), (0,c), (1,b), (1,c) sono tuple.precedente (0,a), (0,c), (1,b), (1,c) sono tuple.
Una relazione sottoinsieme del prodotto cartesiano di k domini ha Una relazione sottoinsieme del prodotto cartesiano di k domini ha
gradogrado k. Nell'esempio precedente le relazioni hanno grado 2. k. Nell'esempio precedente le relazioni hanno grado 2.
55
Il concetto di relazioneIl concetto di relazione
Ogni tupla di una relazione di grado k ha k componenti. Ogni tupla di una relazione di grado k ha k componenti.
Nell'esempio precedente le tuple hanno 2 componenti.Nell'esempio precedente le tuple hanno 2 componenti.
Sia r una relazione di grado k, sia t una tupla di r, sia i un Sia r una relazione di grado k, sia t una tupla di r, sia i un
intero appartenente all'insieme {1,...,k}; t[i] denota la i-intero appartenente all'insieme {1,...,k}; t[i] denota la i-
esima componente di t.esima componente di t.
– Esempio: sia r={(0,a), (0,c),(1,b)}, sia t=(0,a) una tupla di r; Esempio: sia r={(0,a), (0,c),(1,b)}, sia t=(0,a) una tupla di r;
allora t[2] = a e t[1] = 0. allora t[2] = a e t[1] = 0.
La La cardinalitàcardinalità di una relazione è il numero di tuple di una relazione è il numero di tuple
appartenenti alla relazione. Ad esempio, la relazione {(0,a), appartenenti alla relazione. Ad esempio, la relazione {(0,a),
(0,c), (1,b)} ha cardinalità 3. (0,c), (1,b)} ha cardinalità 3.
66
Una definizione più Una definizione più semplicesemplice
Una relazione può essere vista, alternativamente, come una Una relazione può essere vista, alternativamente, come una tabellatabella, in cui ogni riga è una , in cui ogni riga è una
tupla ed ogni colonna corrisponde a una componente.tupla ed ogni colonna corrisponde a una componente.
Alle colonne sono associati dei nomi, detti Alle colonne sono associati dei nomi, detti nomi di attributo nomi di attributo (o(o campi campi). La coppia (nome di ). La coppia (nome di
attributo, dominio) è detta attributo, dominio) è detta attributoattributo. .
L'insieme degli attributi di una relazione ne costituisce lo L'insieme degli attributi di una relazione ne costituisce lo schemaschema..
Se una relazione ha nome R ed attributi di nomi, rispettivamente, ASe una relazione ha nome R ed attributi di nomi, rispettivamente, A11, A, A22,.....,A,.....,Akk, lo schema è , lo schema è
spesso indicato conspesso indicato con
R(AR(A11, A, A22,.....,A,.....,Akk).).
Inoltre, UInoltre, URR = {A = {A11, A, A22,.....,A,.....,Akk} viene usato per denotare l'insieme di tutti i nomi di attributo della } viene usato per denotare l'insieme di tutti i nomi di attributo della
relazione R.relazione R.
Esempio: relazione di nome Info_Città.Esempio: relazione di nome Info_Città.
CittàCittà RegioneRegione PopolazionePopolazione
RomaRoma LazioLazio 30000003000000
MilanoMilano LombardiaLombardia 15000001500000
GenovaGenova LiguriaLiguria 800000800000
PisaPisa ToscanaToscana 150000150000
77
Una definizione più Una definizione più semplicesemplice
In questa definizione del modello relazionale, le componenti delle In questa definizione del modello relazionale, le componenti delle
tuple sono denotate tramite i nomi di attributi (tuple sono denotate tramite i nomi di attributi (notazione per notazione per
nomenome in contrasto con la in contrasto con la notazione per posizionenotazione per posizione). ).
Dato uno schema di relazione R(ADato uno schema di relazione R(A11, A, A22,.....,A,.....,Akk), una tupla t su tale ), una tupla t su tale
schema può essere rappresentata tramite la notazioneschema può essere rappresentata tramite la notazione
[A[A11:v:v11, A, A22:v:v22,.....,A,.....,Akk:v:vkk],],
dove vdove vii (i=1,....,k) è un valore appartenente al dominio di A (i=1,....,k) è un valore appartenente al dominio di A ii
(indicato con dom(A(indicato con dom(Aii)). Inoltre, t[A)). Inoltre, t[Aii] denota il valore dell'attributo ] denota il valore dell'attributo
di nome Adi nome Aii della tupla t. della tupla t.
– Esempio: t=[Citta': Roma, Regione: Lazio, Popolazione:3000000] è una Esempio: t=[Citta': Roma, Regione: Lazio, Popolazione:3000000] è una
tupla definita sullo schema Info_Città. In particolare, t[Città] = Roma. tupla definita sullo schema Info_Città. In particolare, t[Città] = Roma.
88
Valori nulliValori nulli
Non sempre sono disponibili informazioni sulle Non sempre sono disponibili informazioni sulle
entità del dominio applicativo rappresentato nella entità del dominio applicativo rappresentato nella
base di dati. Ciò implica che alcune tuple possono base di dati. Ciò implica che alcune tuple possono
non avere un valore per un qualche attributo. non avere un valore per un qualche attributo.
Si introduce un valore speciale (Si introduce un valore speciale (valore nullovalore nullo) )
che denota la mancanza di valore (spesso che denota la mancanza di valore (spesso
denotato con “?”).denotato con “?”).
99
Il concetto di chiaveIl concetto di chiave
Data una relazione, la Data una relazione, la chiavechiave della relazione è un insieme di attributi che della relazione è un insieme di attributi che
distingue tra loro le tuple della relazione.distingue tra loro le tuple della relazione.
Più precisamente, un insieme X di attributi di una relazione R è Più precisamente, un insieme X di attributi di una relazione R è chiave chiave di R di R
se verifica entrambe le seguenti proprietà:se verifica entrambe le seguenti proprietà:
– qualsiasi sia lo stato di R, non esistono due tuple distinte di R che abbiano lo qualsiasi sia lo stato di R, non esistono due tuple distinte di R che abbiano lo
stesso valore per tutti gli attributi in X;stesso valore per tutti gli attributi in X;
– nessun sottoinsieme nessun sottoinsieme proprioproprio di X verifica la proprietà precedente. di X verifica la proprietà precedente.
Nell’esempio di prima:Nell’esempio di prima:
chiave(Info_Città) = (Città) (se non esistono città con lo stesso chiave(Info_Città) = (Città) (se non esistono città con lo stesso
nome in regioni diverse);nome in regioni diverse);
chiave(Info_Città) = (Città,Regione) (se esistono città con lo chiave(Info_Città) = (Città,Regione) (se esistono città con lo
stesso nome in regioni diverse).stesso nome in regioni diverse).
1010
Il concetto di chiaveIl concetto di chiave
Una chiave non può avere valori nulli (questa proprietà può non essere Una chiave non può avere valori nulli (questa proprietà può non essere
verificata dagli attributi non chiave).verificata dagli attributi non chiave).
Una relazione può avere più di un insieme X che verifica le proprietà viste.Una relazione può avere più di un insieme X che verifica le proprietà viste.
In alcuni casi, può essere necessario scegliere una chiave se il sistema In alcuni casi, può essere necessario scegliere una chiave se il sistema
usato supporta più chiavi.usato supporta più chiavi.
In tal caso, il termine In tal caso, il termine chiavi candidatechiavi candidate viene usato per indicare le viene usato per indicare le
possibili chiavi.possibili chiavi.
Il termine Il termine chiave primariachiave primaria viene usato per indicare la chiave selezionata. viene usato per indicare la chiave selezionata.
Un criterio nella scelta della chiave primaria consiste nello scegliere tra le Un criterio nella scelta della chiave primaria consiste nello scegliere tra le
chiavi candidate quella più frequentemente usata nelle interrogazioni.chiavi candidate quella più frequentemente usata nelle interrogazioni.
Un altro criterio è scegliere la chiave che contiene il minor numero di Un altro criterio è scegliere la chiave che contiene il minor numero di
attributi.attributi.
1111
Il concetto di chiave esternaIl concetto di chiave esterna
Date due relazioni R e R’ tali cheDate due relazioni R e R’ tali che
– R abbia un insieme di attributi X;R abbia un insieme di attributi X;
– R’ abbia come chiave un insieme Y di attributi;R’ abbia come chiave un insieme Y di attributi;
Y è Y è chiave esterna chiave esterna di R su R’ se Y è un sottoinsieme di X.di R su R’ se Y è un sottoinsieme di X.
In altre parole, se una relazione R ha tra i suoi attributi un insieme di In altre parole, se una relazione R ha tra i suoi attributi un insieme di
attributi che costituisce la chiave di una relazione R’, allora tale insieme di attributi che costituisce la chiave di una relazione R’, allora tale insieme di
attributi è una chiave esterna di R su R’.attributi è una chiave esterna di R su R’.
R’ è detta R’ è detta relazione riferitarelazione riferita..
Le chiavi esterne permettono di collegare tra loro tuple di relazioni diverse Le chiavi esterne permettono di collegare tra loro tuple di relazioni diverse
e costituiscono un meccanismo, detto e costituiscono un meccanismo, detto per valoreper valore, per modellare le , per modellare le
associazioni tra entità.associazioni tra entità.
Una tupla che deve riferire un’altra tupla include tra i suoi attributi uno o Una tupla che deve riferire un’altra tupla include tra i suoi attributi uno o
più attributi il cui valore è il valore della chiave della seconda tupla.più attributi il cui valore è il valore della chiave della seconda tupla.
1212
Un esempioUn esempio
Definiamo due relazioni che contengono informazioni riguardanti i Definiamo due relazioni che contengono informazioni riguardanti i
dipendenti di un'azienda ed i dipartimenti in cui l'azienda è dipendenti di un'azienda ed i dipartimenti in cui l'azienda è
organizzata.organizzata.
Le relazioni sono definite come segue:Le relazioni sono definite come segue:
Impiegati (Imp#, Nome, Mansione, Data_A, Stipendio, Premio_P, Dip#)Impiegati (Imp#, Nome, Mansione, Data_A, Stipendio, Premio_P, Dip#)
chiave(Impiegati) = Imp#chiave(Impiegati) = Imp#
chiave_esterna(Impiegati) = Dip#chiave_esterna(Impiegati) = Dip#
(relazione riferita: Dipartimenti)(relazione riferita: Dipartimenti)
Dipartimenti(Dip#, Nome_Dip, Ufficio#, Divisione#, Dirigente)Dipartimenti(Dip#, Nome_Dip, Ufficio#, Divisione#, Dirigente)
chiave(Dipartimenti) = Dip#chiave(Dipartimenti) = Dip#
1313
Un esempioUn esempioImp#Imp# NomeNome MansioneMansione Data_AData_A StipendioStipendio Premio_PPremio_P Dip#Dip#
73697369 RossiRossi ingegnereingegnere 17-Dic-8017-Dic-80 1600,001600,00 500,00500,00 2020
74997499 AndreiAndrei tecnicotecnico 20-Feb-8120-Feb-81 800,00800,00 ?? 3030
75217521 BianchiBianchi tecnicotecnico 20-Feb-8120-Feb-81 800,00800,00 100,00100,00 3030
75667566 RosiRosi dirigentedirigente 02-Apr-8102-Apr-81 2975,002975,00 ?? 2020
76547654 MartiniMartini segretariasegretaria 28-Set-8128-Set-81 800,00800,00 ?? 3030
76987698 BlacchiBlacchi dirigentedirigente 01-Mag-8101-Mag-81 2850,002850,00 ?? 3030
77827782 NeriNeri ingegnereingegnere 01-Giu-8101-Giu-81 2450,002450,00 200,00200,00 1010
77887788 ScottiScotti segretariasegretaria 09-Nov-8109-Nov-81 800,00800,00 ?? 2020
78397839 DareDare ingegnereingegnere 17-Nov-8117-Nov-81 2600,002600,00 300,00300,00 1010
78447844 TurniTurni tecnicotecnico 08-Set-8108-Set-81 1500,001500,00 ?? 3030
78767876 AdamiAdami ingegnereingegnere 28-Set-8128-Set-81 1100,001100,00 500,00500,00 2020
79007900 GianniGianni ingegnereingegnere 03-Dic-8103-Dic-81 1950,001950,00 ?? 3030
79027902 FordiFordi segretariasegretaria 03-Dic-8103-Dic-81 1000,001000,00 ?? 2020
79347934 MilliMilli ingegnereingegnere 23-Gen-8223-Gen-82 1300,001300,00 150,00150,00 1010
79777977 VerdiVerdi dirigentedirigente 10-Dic-8010-Dic-80 3000,003000,00 ?? 1010
1414
Un esempioUn esempioDip# Nome_Dip Ufficio Divisione Dirigente
10 Edilizia Civile 1100 D1 7977
20 Ricerche 2200 D1 7566
30 Edilizia Stradale 5100 D2 7698
1515
Integrità referenzialeIntegrità referenziale
L’integrità referenziale rappresenta un importante vincolo di integrità semantica.L’integrità referenziale rappresenta un importante vincolo di integrità semantica.
Se una tupla t riferisce come valori di una chiave esterna i valori vSe una tupla t riferisce come valori di una chiave esterna i valori v11, … ,v, … ,vnn, allora , allora
deve esistere nella relazione riferita una tupla t’ con valori di chiave vdeve esistere nella relazione riferita una tupla t’ con valori di chiave v11, … ,v, … ,vnn..
Le relazioni Impiegati e Dipartimenti verificano l’integrità referenziale.Le relazioni Impiegati e Dipartimenti verificano l’integrità referenziale.
Si consideri la seguente tupla e si assuma che sia inserita nella relazione Si consideri la seguente tupla e si assuma che sia inserita nella relazione
Impiegati:Impiegati:
[Imp#: 7899, Nome: Smith, Mansione: tecnico,[Imp#: 7899, Nome: Smith, Mansione: tecnico, Data_A:03-Dic-81, Stipendio:2000,Data_A:03-Dic-81, Stipendio:2000, Premio_P: 100, Dip#: 50].Premio_P: 100, Dip#: 50].
Tale tupla viola l’integrità referenziale in quanto non esiste un dipartimento Tale tupla viola l’integrità referenziale in quanto non esiste un dipartimento
(nella relazione Dipartimenti) che abbia numero 50.(nella relazione Dipartimenti) che abbia numero 50.
I linguaggi per basi di dati (SQL) permettono all’utente di specificare per quali I linguaggi per basi di dati (SQL) permettono all’utente di specificare per quali
relazioni e quali attributi è necessario mantenere l’integrità referenziale (e le relazioni e quali attributi è necessario mantenere l’integrità referenziale (e le
azioni da eseguire in caso di violazione).azioni da eseguire in caso di violazione).
1616
Operazioni nel modello Operazioni nel modello relazionalerelazionale
Le operazioni sulle relazioni possono essere espresse in due Le operazioni sulle relazioni possono essere espresse in due
formalismi di base:formalismi di base:
– Algebra relazionale:Algebra relazionale: le interrogazioni (queries) sono le interrogazioni (queries) sono
espresse applicando operatori specializzati alle relazioni;espresse applicando operatori specializzati alle relazioni;
– CalcoloCalcolo relazionale:relazionale: le interrogazioni (queries) sono espresse le interrogazioni (queries) sono espresse
per mezzo di formule logiche che devono essere verificate per mezzo di formule logiche che devono essere verificate
dalle tuple ottenute come risposta all'interrogazione.dalle tuple ottenute come risposta all'interrogazione.
Un importante risultato teorico stabilisce tuttavia che, sotto Un importante risultato teorico stabilisce tuttavia che, sotto
determinate assunzioni, i due formalismi hanno lo stesso determinate assunzioni, i due formalismi hanno lo stesso
potere espressivo: ognuno può esprimere qualsiasi query potere espressivo: ognuno può esprimere qualsiasi query
che l'altro può esprimere, ma non di più. che l'altro può esprimere, ma non di più.
1717
Algebra relazionaleAlgebra relazionale
Esistono cinque operazioni di base:Esistono cinque operazioni di base:
– unione;unione;
– differenza;differenza;
– prodotto Cartesiano;prodotto Cartesiano;
– proiezione;proiezione;
– selezione.selezione.
Queste operazioni definiscono completamente l'algebra relazionale.Queste operazioni definiscono completamente l'algebra relazionale.
Ogni operazione restituisce come risultato una relazione; è pertanto possibile Ogni operazione restituisce come risultato una relazione; è pertanto possibile
applicare una operazione al risultato di un'altra operazione (applicare una operazione al risultato di un'altra operazione (proprieta' di chiusuraproprieta' di chiusura).).
Esistono operazioni addizionali, che possono essere espresse in termini delle cinque Esistono operazioni addizionali, che possono essere espresse in termini delle cinque
operazioni di base.operazioni di base.
Tali operazioni non aggiungono potere espressivo all'insieme delle operazioni di base, Tali operazioni non aggiungono potere espressivo all'insieme delle operazioni di base,
ma sono utili come abbreviazioni; di queste la più importante è l'operazione di ma sono utili come abbreviazioni; di queste la più importante è l'operazione di join.join.
Rispetto alla notazione per nome del modello relazionale, può essere utile introdurre Rispetto alla notazione per nome del modello relazionale, può essere utile introdurre
una ulteriore operazione di una ulteriore operazione di renaming renaming che permette di modificare i nomi degli che permette di modificare i nomi degli
attributi.attributi.
1818
Algebra relazionale - UnioneAlgebra relazionale - Unione
L’unione di due relazioni R ed S, indicata con RL’unione di due relazioni R ed S, indicata con RS, è l’insieme delle S, è l’insieme delle
tuple che sono in R o in S (dunque, in particolare anche in entrambe). tuple che sono in R o in S (dunque, in particolare anche in entrambe).
L’unione di due relazioni può essere eseguita solo se le relazioni L’unione di due relazioni può essere eseguita solo se le relazioni
hanno lo stesso grado; inoltre, il primo attributo di R deve essere hanno lo stesso grado; inoltre, il primo attributo di R deve essere
compatibile con il primo attributo di S, il secondo attributo di R deve compatibile con il primo attributo di S, il secondo attributo di R deve
essere compatibile con il secondo attributo di S, e così via.essere compatibile con il secondo attributo di S, e così via.
Se le relazioni hanno nomi di attributo diversi, nella relazione Se le relazioni hanno nomi di attributo diversi, nella relazione
risultato per convenzione si usano i nomi della prima relazione (in risultato per convenzione si usano i nomi della prima relazione (in
questo caso R), a meno di opportune ridenominazioni.questo caso R), a meno di opportune ridenominazioni.
Le tuple duplicate vengono eliminate.Le tuple duplicate vengono eliminate.
Il grado della relazione risultato è uguale al grado delle relazioni Il grado della relazione risultato è uguale al grado delle relazioni
operandi.operandi.
1919
Algebra relazionale - UnioneAlgebra relazionale - Unione
Un esempio:Un esempio:AA BB CC DD EE FFaa bb cc bb gg aadd aa ff dd aa ffcc bb dd
relazione Rrelazione R relazione Srelazione S
AA BB CCaa bb ccdd aa ffcc bb ddbb gg aa
R R S S
2020
Algebra relazionale - Algebra relazionale - DifferenzaDifferenza
La differenza di due relazioni R ed S, indicata con R-S, è La differenza di due relazioni R ed S, indicata con R-S, è
l’insieme delle tuple che sono in R ma non in S. l’insieme delle tuple che sono in R ma non in S.
La differenza (come l’unione) di due relazioni può essere La differenza (come l’unione) di due relazioni può essere
eseguita solo se le relazioni hanno lo stesso grado e gli eseguita solo se le relazioni hanno lo stesso grado e gli
attributi sono compatibili.attributi sono compatibili.
Se le relazioni hanno nomi di attributo diversi, nella Se le relazioni hanno nomi di attributo diversi, nella
relazione risultato per convenzione si usano i nomi della relazione risultato per convenzione si usano i nomi della
prima relazione (in questo caso R), a meno di opportune prima relazione (in questo caso R), a meno di opportune
ridenominazioni.ridenominazioni.
Il grado della relazione risultato è uguale al grado delle Il grado della relazione risultato è uguale al grado delle
relazioni operandi.relazioni operandi.
2121
Algebra relazionale - Algebra relazionale - DifferenzaDifferenza
Un esempio:Un esempio:AA BB CC DD EE FFaa bb cc bb gg aadd aa ff dd aa ffcc bb dd
relazione Rrelazione R relazione Srelazione S
AA BB CCaa bb cccc bb dd
R -R - S S
2222
Algebra relazionale – Prodotto Algebra relazionale – Prodotto cartesianocartesiano
Il prodotto cartesiano di due relazioni R ed S, di grado Il prodotto cartesiano di due relazioni R ed S, di grado
rispettivamente krispettivamente k1 1 e ke k22, indicato con R, indicato con RS, è una relazione di S, è una relazione di
grado kgrado k11+k+k22 le cui tuple sono tutte le possibili tuple che hanno le cui tuple sono tutte le possibili tuple che hanno
– come prime kcome prime k11 componenti tuple di R; componenti tuple di R;
– come seconde kcome seconde k22 componenti tuple di S. componenti tuple di S.
Nella relazione risultato, i nomi dei primi kNella relazione risultato, i nomi dei primi k1 1 attributi sono i attributi sono i
nomi degli attributi della relazione R e i nomi degli ultimi knomi degli attributi della relazione R e i nomi degli ultimi k22
attributi sono i nomi degli attributi della relazione S.attributi sono i nomi degli attributi della relazione S.
Se le due relazioni hanno attributi con lo stesso nome, è Se le due relazioni hanno attributi con lo stesso nome, è
necessario ridenominare gli attributi in una delle due relazioni.necessario ridenominare gli attributi in una delle due relazioni.
2323
Algebra relazionale – Prodotto Algebra relazionale – Prodotto cartesianocartesiano
Un esempio:Un esempio:AA BB CC DD EE FFaa bb cc bb gg aadd aa ff dd aa ffcc bb dd
relazione Rrelazione R relazione Srelazione S
AA BB CC DD EE FFaa bb cc bb gg aaaa bb cc dd aa ffdd aa ff bb gg aadd aa ff dd aa ffcc bb dd bb gg aacc bb dd dd aa ff
R x R x S S
2424
Algebra relazionale – Algebra relazionale – ProiezioneProiezione
La proiezione di una relazione R su un insieme A={ALa proiezione di una relazione R su un insieme A={A11,A,A22, … ,A, … ,Amm} di attributi, } di attributi,
indicata con indicata con
è una relazione di grado m le cui tuple hanno come attributi solo gli attributi è una relazione di grado m le cui tuple hanno come attributi solo gli attributi
specificati in A.specificati in A.
Pertanto, una proiezione genera un insieme T di m-tuple (cioè tuple con m Pertanto, una proiezione genera un insieme T di m-tuple (cioè tuple con m
attributi). Più precisamente, se t = [Aattributi). Più precisamente, se t = [A11:v:v11, A, A22:v:v22, ... ,A, ... ,Amm:v:vmm] è una m-tupla in T, ] è una m-tupla in T,
allora esiste una tupla t’ in R tale che, allora esiste una tupla t’ in R tale che, AAiiA, t[AA, t[Aii] = t'[A] = t'[Aii]. ].
L’operazione di proiezione ha dunque l’effetto di generare, da una data L’operazione di proiezione ha dunque l’effetto di generare, da una data
relazione, una relazione che contiene solo gli attributi specificati relazione, una relazione che contiene solo gli attributi specificati
nell’operazione.nell’operazione.
Nella relazione risultato gli attributi hanno l’ordine specificato in A.Nella relazione risultato gli attributi hanno l’ordine specificato in A.
)(,...,, 21R
mAAA
2525
Algebra relazionale – Algebra relazionale – ProiezioneProiezione
Un esempio:Un esempio:
AA BB CCaa bb ccdd aa ffcc bb dd
relazione Rrelazione R
AA CC BB AAaa cc bb aadd ff aa ddcc dd bb cc
A,CA,C(R)(R) B,AB,A(R) (R)
2626
Algebra relazionale – SelezioneAlgebra relazionale – Selezione
Un predicato F su una relazione ha una delle seguenti forme:Un predicato F su una relazione ha una delle seguenti forme:
– predicato semplice;predicato semplice;
– combinazione booleana di predicati semplici: le combinazioni booleane sono ottenute mediante gli operatori logicicombinazione booleana di predicati semplici: le combinazioni booleane sono ottenute mediante gli operatori logici
(AND), (AND), (OR), (OR), (NOT). (NOT).
Un predicato semplice ha una delle seguenti formeUn predicato semplice ha una delle seguenti forme
– A op A op costantecostante
– A op A’A op A’
dove A e A’ sono attributi di R, op è un dove A e A’ sono attributi di R, op è un operatore relazionale di confrontooperatore relazionale di confronto, quale <,>,≤,≥, , quale <,>,≤,≥, costantecostante
è un valore costante compatibile con il dominio di A.è un valore costante compatibile con il dominio di A.
Esempi:Esempi:
– B=3: predicato semplice della prima forma;B=3: predicato semplice della prima forma;
– A=C: predicato semplice della seconda forma;A=C: predicato semplice della seconda forma;
– B=3 B=3 A=C: combinazione booleana; A=C: combinazione booleana;
– B=3 B=3 A=C: combinazione booleana; A=C: combinazione booleana;
A=3: combinazione booleana.A=3: combinazione booleana.
2727
Algebra relazionale – SelezioneAlgebra relazionale – Selezione
La selezione su una relazione R, dato un predicato F, indicata con La selezione su una relazione R, dato un predicato F, indicata con FF(R), è (R), è
una relazione che contiene tutte le tuple che verificano il predicato F.una relazione che contiene tutte le tuple che verificano il predicato F.
Il grado della relazione risultato è uguale al grado della relazione operando: Il grado della relazione risultato è uguale al grado della relazione operando:
i nomi degli attributi della relazione risultato sono gli stessi della relazione i nomi degli attributi della relazione risultato sono gli stessi della relazione
operando.operando.
Se nessuna tupla di R verifica il predicato F, allora il risultato è la relazione Se nessuna tupla di R verifica il predicato F, allora il risultato è la relazione
vuota (indicata con 0).vuota (indicata con 0).
Pertanto, se k è il grado di R, la selezione genera un insieme T di k-tuple in Pertanto, se k è il grado di R, la selezione genera un insieme T di k-tuple in
modo tale che, se t = [Amodo tale che, se t = [A11:v:v11, A, A22:v:v22, ... ,A, ... ,Akk:v:vkk] è una k-tupla in T, il predicato ] è una k-tupla in T, il predicato
F(AF(A11/t[A/t[A11], A], A22/t[A/t[A22], ... ,A], ... ,Akk/t[A/t[Akk]) risulta vero (ove la notazione A]) risulta vero (ove la notazione Aii/t[A/t[Aii] indica la ] indica la
sostituzione del nome di attributo Asostituzione del nome di attributo Aii con il valore dell’attributo di nome A con il valore dell’attributo di nome Ai i in in
t).t).
2828
Algebra relazionale – SelezioneAlgebra relazionale – Selezione
Un esempio:Un esempio:
AA BB CCaa bb ccdd aa ffcc bb dd
relazione Rrelazione R
AA BB CC AA BB CCaa bb cc dd aa ffcc bb dd
B=bB=b(R)(R) B=bB=b(R)(R)
AA BB CCaa bb cccc bb dd
B=bB=bA=CA=C(R)(R) B=bB=bA=CA=C(R) =0(R) =0
2929
Algebra relazionaleAlgebra relazionale
Esempi dalla base di dati impiegati e dipartimenti.Esempi dalla base di dati impiegati e dipartimenti.
Q1: Q1: selezionare i nomi degli impiegati che hanno uno stipendio maggiore di 2000.selezionare i nomi degli impiegati che hanno uno stipendio maggiore di 2000.
NomeNome((Stipendio>2000Stipendio>2000(Impiegati))(Impiegati))
NomeNomeRosiRosiBlacchiBlacchiNeriNeriDareDareVerdi Verdi
Q2: Q2: selezionare i nomi ed i numeri di dipartimento degli impiegati che hanno uno stipendio selezionare i nomi ed i numeri di dipartimento degli impiegati che hanno uno stipendio
maggiore di 2000 e hanno mansione di ingegnere.maggiore di 2000 e hanno mansione di ingegnere.
Nome,Dip#Nome,Dip#((Stipendio>2000 Stipendio>2000 Mansione= 'ingegnere'Mansione= 'ingegnere' (Impiegati)) (Impiegati))
NomeNome Dip#Dip#NeriNeri 1010DareDare 1010
3030
Algebra relazionaleAlgebra relazionale
Q3: Q3: selezionare i numeri di impiegato degli impiegati che: selezionare i numeri di impiegato degli impiegati che:
(a) lavorano nel dipartimento 30 e (b) sono ingegneri o (a) lavorano nel dipartimento 30 e (b) sono ingegneri o
tecnici.tecnici.
Imp#Imp#((ssDip#=30Dip#=30 ( (Mansione= 'ingegnere' Mansione= 'ingegnere' Mansione= 'tecnico') Mansione= 'tecnico')(Impiegati)) (Impiegati))
Imp#Imp#74997499752175217844784479007900
3131
Algebra relazionale – Algebra relazionale – RidenominazioneRidenominazione
La ridenominazione di una relazione R rispetto ad una lista di coppie La ridenominazione di una relazione R rispetto ad una lista di coppie
di nomi di attributi (Adi nomi di attributi (A11,B,B11), (A), (A22,B,B22), … , (A), … , (Amm,B,Bmm) tale che A) tale che Aii è un nome è un nome
di attributo di R, denotata condi attributo di R, denotata con
ridenomina l’attributo di nome Aridenomina l’attributo di nome A ii con il nome B con il nome Bi i (i=1, … ,m).(i=1, … ,m).
La ridenominazione è corretta se il nuovo schema della relazione R La ridenominazione è corretta se il nuovo schema della relazione R
ha attributi con nomi tutti distinti. ha attributi con nomi tutti distinti.
Esempio: data una relazione di schema R(A,B,C), la ridenominazioneEsempio: data una relazione di schema R(A,B,C), la ridenominazione
ha l’effetto di ridenominare lo schema della relazione R in ha l’effetto di ridenominare lo schema della relazione R in
R(AA,BB,CC).R(AA,BB,CC).
)(,...,,,...,, 2121R
mm BBBAAA
)(,,,, RCCBBAACBA
3232
Algebra relazionale – Algebra relazionale – Operazioni di baseOperazioni di base
Sia R = (ASia R = (A11, ..., A, ..., Akk) uno schema di relazione, con A) uno schema di relazione, con Aii nome di nome di attributo con dominio Sattributo con dominio Sii, per i = 1, ... ,k., per i = 1, ... ,k.
Indichiamo con Indichiamo con (R) l'insieme di tutte le relazioni su tale (R) l'insieme di tutte le relazioni su tale schema.schema.– _ _ _ : _ : (R) (R) (R) (R) (R)(R)
rr11 rr22 = {t | t = {t | t r r11 t t rr22}}– _ \ _ : _ \ _ : (R) (R) (R) (R) (R)(R)
rr11 \ \ rr22 = {t | t = {t | t r r11,, t t rr22}}– _ _ _ : _ : (R(R11) ) (R(R22) ) (R(R11RR22))
rr11 rr22 = {t = {t11tt22 | t | t11 r r11,, tt22 rr22}} [nella versione "posizionale"][nella versione "posizionale"]
– _ _ _ : _ : (R(R11) ) (R(R22) ) (R(R11RR22)) [nella versione "con nome"][nella versione "con nome"]
R'R' _ : _ : (R) (R) (R'), con R (R'), con R R'R'
R'R'(r) = {t[R'] | t (r) = {t[R'] | t r} r} FF _ : _ : (R) (R) (R)(R)
FF(r) = {t | t (r) = {t | t r, F(t)} r, F(t)}
3333
Algebra relazionale – JoinAlgebra relazionale – Join
Il join di due relazioni R e S sugli attributi A di R e A’ di S, Il join di due relazioni R e S sugli attributi A di R e A’ di S,
indicato con R |indicato con R |||AAA’A’ S, è definito come S, è definito come AAA’A’(R (R S). S).
Il join è pertanto un prodotto cartesiano seguito da una Il join è pertanto un prodotto cartesiano seguito da una
selezione; il predicato Aselezione; il predicato AA’ è detto A’ è detto predicato di joinpredicato di join..
Il grado della relazione risultato è uguale alla somma dei Il grado della relazione risultato è uguale alla somma dei
gradi delle relazioni operandi.gradi delle relazioni operandi.
Spesso il join è anche indicato con le seguenti notazioni: Spesso il join è anche indicato con le seguenti notazioni:
R.A R.A S.A’ , R [ A S.A’ , R [ A A’ ] S. A’ ] S.
Il join prende il nome di equijoinIl join prende il nome di equijoin quando l’operatore quando l’operatore usato usato
nel predicato di join è l’operatore di uguaglianza (=).nel predicato di join è l’operatore di uguaglianza (=).
3434
Algebra relazionale – JoinAlgebra relazionale – Join
Un esempio:Un esempio:
AA BB CC DD EE11 22 33 33 1144 55 66 66 2277 88 99
relazione Rrelazione R relazione Srelazione S
AA BB CC DD EE AA BB CC DD EE11 22 33 33 11 11 22 33 33 11
11 22 33 66 2244 55 66 66 22
R |R |||A=EA=E S S R |R |||B <DB <D S S
3535
Algebra relazionale – Join Algebra relazionale – Join naturalenaturale
L’operazione di join naturale rappresenta una “semplificazione” del join.L’operazione di join naturale rappresenta una “semplificazione” del join.
Si consideri l’interrogazione: “Ritrovare tutti gli impiegati e l’ufficio in cui Si consideri l’interrogazione: “Ritrovare tutti gli impiegati e l’ufficio in cui
lavorano”.lavorano”.
Usando il join tale interrogazione è espressa come Usando il join tale interrogazione è espressa come Nome, Ufficio Nome, Ufficio (Impiegato |(Impiegato |||
Impiegato.Dip#=Dipartimento.Dip# Impiegato.Dip#=Dipartimento.Dip# Dipartimento).Dipartimento).
Notare che questo particolare join impone l’eguaglianza su quegli attributi Notare che questo particolare join impone l’eguaglianza su quegli attributi
che appaiono in entrambe le relazioni.che appaiono in entrambe le relazioni.
I join basati sull’eguaglianza degli attributi sono frequenti nella pratica.I join basati sull’eguaglianza degli attributi sono frequenti nella pratica.
L’operazione di L’operazione di join naturale join naturale indica un tipo di join basato sull’eguaglianza indica un tipo di join basato sull’eguaglianza
degli attributi in comune a due relazioni.degli attributi in comune a due relazioni.
E’ un’operazione che, a differenza delle altre, ha senso solo nella notazione E’ un’operazione che, a differenza delle altre, ha senso solo nella notazione
con nome.con nome.
3636
Algebra relazionale – Join Algebra relazionale – Join naturalenaturale
L’interrogazione precedente viene espressa come segue: L’interrogazione precedente viene espressa come segue:
Nome, Ufficio Nome, Ufficio (Impiegato |(Impiegato || Dipartimento).| Dipartimento). Definizione:Definizione: siano R ed S due relazioni, sia {A siano R ed S due relazioni, sia {A11,A,A22,....,A,....,Akk} = U} = URR
UUSS l’insieme degli attributi presenti sia nello schema di R l’insieme degli attributi presenti sia nello schema di R che nello schema di S e sia {Iche nello schema di S e sia {I11,I,I22, ... ,I, ... ,Imm} = U} = UR R UUSS l’unione l’unione degli attributi nello schema di R e nello schema di S. degli attributi nello schema di R e nello schema di S. L’espressione che definisce il join naturale è:L’espressione che definisce il join naturale è:
dove C è un predicato della forma Adove C è un predicato della forma A11 = S.A = S.A1 1 AND AAND A22 = S.A = S.A2 2
AND … AND AAND … AND Akk = S.A = S.Akk
Il join naturale esegue pertanto un join eguagliando gli Il join naturale esegue pertanto un join eguagliando gli
attributi con lo stesso nome delle due relazioni e poi elimina attributi con lo stesso nome delle due relazioni e poi elimina
gli attributi duplicati.gli attributi duplicati.
3737
Algebra relazionale – Join Algebra relazionale – Join naturalenaturale
Un esempio:Un esempio:
A B C B C D A B C DA B C B C D A B C D ---------------- -------------- ----------------------------------- -------------- ------------------- a b c b c d a b c da b c b c d a b c d d b c b c e a b c ed b c b c e a b c e b b f a d b d b c db b f a d b d b c d c a d d b c ec a d d b c e c a d bc a d b
R S R |X| SR S R |X| S