37
1 Il modello relazionale Il modello relazionale

Il modello relazionale

Embed Size (px)

DESCRIPTION

Il modello relazionale. Introduzione. Il modello relazionale, sebbene non sia stato il modello usato nei primi DBMS, e' divenuto lentamente il modello più importante al punto che è oggi comunemente usato in tutti i DBMS disponibili a livello commerciale. - PowerPoint PPT Presentation

Citation preview

Page 1: Il modello relazionale

11

Il modello relazionaleIl modello relazionale

Page 2: Il 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.

Page 3: Il modello relazionale

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}.}.

Page 4: Il modello relazionale

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.

Page 5: Il modello relazionale

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.

Page 6: Il modello relazionale

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

Page 7: Il modello relazionale

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.

Page 8: Il modello relazionale

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 “?”).

Page 9: Il modello relazionale

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).

Page 10: Il modello relazionale

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.

Page 11: Il modello relazionale

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.

Page 12: Il modello relazionale

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#

Page 13: Il modello relazionale

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

Page 14: Il modello relazionale

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

Page 15: Il modello relazionale

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).

Page 16: Il modello relazionale

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ù.

Page 17: Il modello relazionale

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.

Page 18: Il modello relazionale

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.

Page 19: Il modello relazionale

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

Page 20: Il modello relazionale

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.

Page 21: Il modello relazionale

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

Page 22: Il modello relazionale

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.

Page 23: Il modello relazionale

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

Page 24: Il modello relazionale

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

Page 25: Il modello relazionale

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)

Page 26: Il modello relazionale

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.

Page 27: Il modello relazionale

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).

Page 28: Il modello relazionale

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

Page 29: Il modello relazionale

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

Page 30: Il modello relazionale

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

Page 31: Il modello relazionale

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

Page 32: Il modello relazionale

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)}

Page 33: Il modello relazionale

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 (=).

Page 34: Il modello relazionale

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

Page 35: Il modello relazionale

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.

Page 36: Il modello relazionale

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.

Page 37: Il modello relazionale

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