modello_relazionale
DESCRIPTION
modello relazionaleTRANSCRIPT
-
Modello Relazionale
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.1/70
-
Il Modello Relazionale (1)
Il modello relazionale, sebbene non sia stato il modello usato neiprimi DBMS, divenuto lentamente il modello pi importante alpunto che oggi comunemente usato in tutti i DBMS disponibilia livello commerciale.
La ragione principale della popolarit di questo modello chefornisce linguaggi semplici e di tipo dichiarativo, ma potenti altempo stesso, con cui esprimere le operazioni per laccesso e lamanipolazione dei dati.
Il modello relazionale basato sul concetto matematico direlazione; questo fornisce al modello una base teorica chepermette di dimostrare formalmente propriet di dati e dioperazioni.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.2/70
-
Il Modello Relazionale (2)
Il concetto matematico alla base del modello relazionale larelazione.
Una relazione formalmente definita come un sottoinsieme finitodel prodotto Cartesiano di una lista di domini
Un dominio un insieme (anche infinito) di valori. Ad esempio: linsieme dei numeri interi un dominio; linsieme delle parole di al massimo 20 caratteri un
dominio; linsieme {0, 1} un dominio
Siano D1, Dk domini. Il prodotto Cartesiano di tali domini,indicato con D1 Dk definito come linsieme{(v1, , vk) | v1 D1, vk Dk}
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.3/70
-
Esempio prodotto Cartesiano
Dati D1 = {0, 1} e D2 = {a, b, c}
D1 D2 = {(0, a), (0, b), (0, c), (1, a), (1, b), (1, c)}
Dati D1 = {marco, anna, giulia, angelo}, D2 = {m, f} eD3 = {42, 21}
D1 D2 D3 = { (marco,m, 42), (marco,m, 21), (marco, f, 42),
(marco, f, 21), (anna,m, 42), (anna,m, 21),
(anna, f, 42), (anna, f, 21), (giulia,m, 42),
(giulia,m, 21), (giulia, f, 42), (giulia, f, 21),
(angelo,m, 42), (angelo,m, 21),
(angelo, f, 42), (angelo, f, 21)
}
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.4/70
-
Definizione di Relazione
Una relazione un qualsiasi sottoinsieme del prodotto Cartesiano diuno o pi domini; per esempio:
{(0, a), (0, c), (1, b)} una relazione sottoinsieme di{0, 1} {a, b, c}
{(1, b), (1, c)} una relazione sottoinsieme di {0, 1} {a, b, c} {(marco,m, 21), (anna, f, 21), (giulia, f, 42), (angelo,m, 21)}
una relazione sottoinsieme di{marco, anna, giulia, angelo} {m, f} {42, 21}
{(italia, germania, 4, 1), (inghilterra, argentina, 1, 2),(italia, cuba, 3, 2), (olanda, italia, 3, 2)} una relazionesottoinsieme di stringhe stringhe N N
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.5/70
-
Definizione di Tupla e Grado
Gli elementi di una relazione sono detti tuple. Negli esempiprecedenti (0, a), (0, c), (1, b), (1, c), (angelo,m, 21),(marco,m, 21), (anna, f, 21), (giulia, f, 42) sono tuple
Una relazione sottoinsieme del prodotto Cartesiano di k dominiha grado k. Negli esempi precedenti le prime due relazionihanno grado 2, la terza ha grado 3 e la quarta ha grado 4.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.6/70
-
Il Modello Relazionale
Ogni tupla di una relazione di grado k ha k componenti.Nellesempio precedente alcune tuple hanno 2 componenti, altre3.
Sia R una relazione di grado k, sia t una tupla di R e sia i unintero appartenente allinsieme {1, ..., k}:
t[i] denota la i-sima componente di tesempio:sia R = {(0, a), (0, c), (1, b)} e sia t = (0, a) una tupla di R. Allorat[2] = a e t[1] = 0
La cardinalit di una relazione il numero di tuple appartenentialla relazione. La relazione {(0, a), (0, c), (1, b)} ha cardinalit 3.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.7/70
-
Una definizione piu` semplice Una relazione pu essere vista, alternativamente, come una
tabella, in cui ogni riga una tupla ed ogni colonna corrispondeda una componente.
Alle colonne sono associati dei nomi, detti nomi di attributo lacoppia (nome di attributo, dominio) detta attributo.
Linsieme degli attributi di una relazione ne costituisce loschema.
Se una relazione ha nome R ed attributi di nomi rispettivamenteA1, , Ak, lo schema spesso indicato con R(A1, A2, . . . , Ak).
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.8/70
-
Una definizione piu` semplice (2)
Esempio: relazione di nome InfoCittInfoCitt Citt Regione Popolazione
Roma Lazio 3000000Milano Lombardia 1500000Genova Liguria 800000Pisa Toscana 150000
schema: InfoCitt(Citt,Regione,Popolazione).
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.9/70
-
Una definizione piu` semplice (3)
Esempio: relazione di nome CorsiCorsi Insegnamento Docente Aula
Analisi Peano V1Fisica Fermi V2Geometria Euclide V3Informatica Turing V3
schema: Corsi(Insegnamento,Docente,Aula).
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.10/70
-
Collegamento tra Dati
Il modello relazionale basato sul valore, cio i riferimenti tra dati inrelazioni differenti sono rappresentati per mezzo di valori dei domini.Esempio:
StudentiMatricola Cognome Nome101010 Rossi Mario254532 Verdi Giovanni356622 Blu Francesca312457 Gialli Marina
EsamiStudente Voto Corso101010 22 A22254532 27 C12101010 30 C12312457 28 K09
CorsiId Nome DocenteA22 Analisi PeanoC12 Fisica FermiD55 Informatica TuringK09 Chimica Curie
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.11/70
-
Schema di Relazione e Istanza di Relazione
Nel modello relazionale si distinguono: lo schema di relazione, che descrive la struttura della relazione.
Nei nostri esempi i nomi degli attributi e quindi,equivalentemente, i nomi delle colonne delle tabelle;
listanza di relazione, che rappresenta i dati contenuti nellarelazione. Nei nostri esempi le istanze di relazione sono i daticontenuti nelle tabelle.
Insegnamento Docente AulaAnalisi Peano V1Fisica Fermi V2Geometria Euclide V3Informatica Turing V3
Insegnamento Docente AulaAnalisi Peano V1Chimica Curie V4Algebra Galois V1
sono due istanze della relazione Corsi.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.12/70
-
Valori nulli
Non sempre sono disponibili informazioni sulle entit dei dominiapplicativi rappresentati sulla base di dati.
Alcune tuple possono non avere un valore per quanche attributo. Si introduce, quindi, un valore speciale: valore nullo (spesso
denotato con "?" o NULL), che denota la mancanza di un valore. Ci sono tre tipi di valori nulli:
1. valore sconosciuto: il valore per il dominio esiste, ma non noto;
2. valore inesistente: lattributo non significativo per la tupla inquestione;
3. nessuna informazione sul valore: non si sa se esista o menoun valore di attributo per la tupla in questione.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.13/70
-
Il concetto di chiave
Studenti Matricola Cognome Nome101010 Rossi Mario254532 Verdi Giovanni356622 Blu Francesca312457 Gialli Marina
Il numero di matricola identifica gli studenti cionon esistono due tuple con lo stesso numero di matricola.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.14/70
-
Il concetto di chiave Data una relazione, la chiave della relazione un insieme di
attributi che univocamente identifica le tuple della relazione. Pi precisamente, un insieme X di attributi di una relazione R,
chiave di R se verifica entrambe le seguenti propriet:1. Qualsiasi sia listanza di R, non esistono due tuple distinte di
R che abbiano lo stesso valore per tutti gli attributi in X ;2. Nessun sottoinsieme proprio di X verifica la propriet (1).
Matricola chiave di
Studenti Matricola Cognome Nome101010 Rossi Mario254532 Verdi Giovanni356622 Blu Francesca312457 Gialli Marina
Cognome e Nome formano una chiave? No, perch in unauniversit ci possono essere due studenti diversi con lo stessonome e cognome. Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.15/70
-
Il concetto di chiave Una chiave non pu avere valori nulli. 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 usato non supporta pi chiavi. In tal caso, il termine chiavi candidate viene usato per indicare
le possibili chiavi. Il termine chiave primaria viene usato per indicare la chiave
selezionata. Un criterio nella scelta della chiave primaria consiste nello
scegliere tra le chiavi candidate quella pi frequentemente usatanelle interrogazioni
Un altro criterio scegliere la chiave che contiene il minornumero di attributi.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.16/70
-
Chiavi EsterneEsami
Studente Voto Corso101010 22 A22254532 27 C12101010 30 C12312457 28 K09
CorsiId Nome DocenteA22 Analisi PeanoC12 Fisica FermiD55 Informatica TuringK09 Chimica Curie
Nel terzo attributo della relazione Esami ogni valore si riferiscead un corso, ad esempio A22 si riferisce al corso di Analisitenuto dal prof. Peano.
I valori che occorrono nel terzo attributo della relazione esamidevono essere tutti presenti nella relazione Corsi, altrimentiavremmo che uno studente ha sostenuto lesame di un corsoche non esiste.
I vincoli di integrita` referenziale sono imposti in modo che i valoriche occorrono in uno o pi attributi di una relazione (nel nostroesempio lattributo Corso della relazione Esami) si riferiscano avalori di uno o pi attributi della relazione referenziata (nel nostroesempio la attributo Id della relazione Corsi).Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.17/70
-
Chiavi Esterne
Un vincolo di integrita` referenziale impone ai valori su un insieme X diattributi di una relazione R di apparire come valori per la chiaveprimaria di unaltra relazione R.
DVDId Titolo Prezzo10 Matrix 3025 Speed 26101 Kill Bill 21312 Mediterraneo 15
PrestitiIdDVD Cognome Data Nascita Data Rest.101 Rossi 19-02-75 09-01-2004101 Rossi 10-10-55 19-12-2003101 Gialli 06-01-76 15-12-2004312 Gialli 06-01-76 15-02-2004
ClientiNome Cognome Data Nascita Scad. Abbon.Marco Rossi 19-02-1975 10-10-2005Gianni Blu 31-08-1961 19-01-2004Mario Rossi 10-10-55 22-04-2005Olga Gialli 06-01-76 10-10-2005
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.18/70
-
Chiavi Esterne
Nellesempio abbiamo vincoli di integrit tra lattributo IdDVD della relazione Prestiti e lattributo Id della
relazione DVD; gli attributi Cognome e Data Nascita di Prestiti e gli attributi
Cognome e Data Nascita di Clienti.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.19/70
-
Operazioni nel Modello Relazionale
Le operazioni sulle relazioni possono essere espresse in dueformalismi di base:1. Algebra relazionale: le interrogazioni (queries) sono
espresse applicando operatori specializzati alle relazioni.2. Calcolo relazionale: le interrogazioni (queries) sono
espresse per mezzo di formule logiche che devono essereverificate dalle tuple ottenute come rispostaallinterrogazione
Un importante risultato teorico stabilisce tuttavia che, sottodeterminate assunzioni, i due formalismi hanno lo stesso potereespressivo: ognuno pu esprimere qualsiasi query che laltropu esprimere, ma non di pi.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.20/70
-
Algebra Relazionale Esistono cinque operazioni di base: Unione, Differenza,
Prodotto Cartesiano, Proiezione, Selezione. Una ulteriore operazione, detta Renaming permette di
modificare i nomi degli attributi. Queste operazioni definiscono completamente lalgebra
relazionale. Ogni operazione restituisce come risultato una relazione;
pertanto possibile applicare una operazione al risultato diunaltra operazione (propriet di chiusura).
Esistono operazioni addizionali, che possono essere espresse intermini delle cinque operazioni di base.
Tali operazioni non aggiungono potere espressivo allinsiemedelle operazioni di base, ma sono utili come abbreviazioni; diqueste la pi importante loperazione di join.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.21/70
-
Unione e Differenza
Le relazioni sono insiemi, cos sono applicabili gli usualioperatori insiemistici;
siccome dallapplicazione degli opetatori insiemistici vogliamoottenere insiemi che siano relazioni (insiemi di tuple)applicheremo le operazioni di Unione e Differenza solo a coppiedi relazioni aventi lo stesso schema di relazione.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.22/70
-
Unione
Lunione di due relazioni R e S, indicata conR S
linsieme delle tuple che sono in R, o in S, o in entrambe Le tuple duplicate vengono eliminate Il grado della relazione risultato uguale al grado delle relazioni
operandi
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.23/70
-
Unione: esempio
Relazione R Relazione S
A B Ca b cd a fc b d
A B Cb g ad a f
Relazione R S
A B Ca b cd a fc b db g a
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.24/70
-
Differenza
La differenza di due relazioni R e S, indicata conR \ S
linsieme delle tuple che sono in R, ma non in S. Il grado della relazione risultato uguale al grado delle relazioni
operandi
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.25/70
-
Differenza: esempio
Relazione R Relazione S
A B Ca b cd a fc b d
A B Cb g ad a f
Relazione R\ S
A B Ca b cc b d
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.26/70
-
Uso di Renaming
Consideriamo le relazioniDiplomati Nome Eta
Rossi 22Bianchi 32Blu 50
Laureati Cognome EtaVerdi 44Neri 32
LaureatiDiplomati non definito perch Nome e Cognome sono
nomi di attributo diversi, anche se i due attributi intendono identificare
delle persone e lunione significativa. Per fare lunione utilizziamo
loperatore renaming.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.27/70
-
Renaming
Renaming un operatore unario che cambia i nomi di attributo diuna relazione senza cambiare i valori;
se gli attributi A1, . . . Am di una relazione R devono essererinominati rispettivamente B1, . . . , Bm, denotiamo taleoperazione con
A1, ,AmB1, ,Bm(R)
La ridenominazione corretta se il nuovo schema della relazioneR ha attributi con nomi tutti distinti
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.28/70
-
Renaming
Laureati Cognome EtaVerdi 44Neri 32
Cognome Nome(Laureati) Nome EtaVerdi 44Neri 32
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.29/70
-
Renaming ed Unione
Diplomati Nome EtaRossi 22Bianchi 32Blu 50
Laureati Cognome EtaVerdi 44Neri 32
DiplomatiCognomeNome(Laureati) Nome EtaVerdi 44Neri 32Rossi 22Bianchi 32Blu 50
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.30/70
-
Prodotto Cartesiano
Siano R e S due relazioni, di grado rispettivamente k1 e k2, privedi attributi con lo stesso nome;
il prodotto Cartesiano di R e S, indicato con
R S
una relazione di grado k1 + k2 le cui tuple sono tutte le possibilituple che hanno: come prime k1 componenti, tuple di R, e come seconde k2 componenti, tuple di S.
Nella relazione risultato i nomi dei primi k1 attributi sono i nomidegli attributi della relazione R e i nomi degli ultimi k2 attributisono i nomi degli attributi della relazione S.
Se le due relazioni hanno attributi con lo stesso nome, necessario ridenominare gli attributi in una delle due relazioni.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.31/70
-
Prodotto Cartesiano: esempio (1)Relazione R Relazione S
A B Ca b cd a fc b d
D E Fb g ad a f
Grado di R=3 Grado di S=3Relazione RS
A B C D E Fa b c b g aa b c d a fd a f b g ad a f d a fc b d b g ac b d d a f
Grado di R S=6Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.32/70
-
Prodotto Cartesiano: esempio (2)Relazione Squadra Relazione AllenatoriNome IdAllJuventus A10Inter A03Milan T21Roma M2Manchester F2
Id All AnnoB12 Del Neri 1993A03 Zaccheroni 1991
Relazione Squadra AllenatoriNome idAll Id All AnnoJuventus A10 B12 Del Neri 1993Inter A03 B12 Del Neri 1993Milan T21 B12 Del Neri 1993Roma M2 B12 Del Neri 1993Manchester F2 B12 Del Neri 1993Juventus A10 A03 Zaccheroni 1991Inter A03 A03 Zaccheroni 1991Milan T21 A03 Zaccheroni 1991Roma M2 A03 Zaccheroni 1991Manchester F2 A03 Zaccheroni 1991
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.33/70
-
Proiezione
La proiezione di una relazione R su un insiemeA = {A1, , Am} di attributi, indicata con
piA1, ,Am(R)
una relazione di grado m le cui tuple hanno come attributi sologli attributi specificati in A.
Pertanto la proiezione genera una relazione T di m-tuple (unam-tupla una tupla con m attributi).
Nella relazione risultato gli attributi hanno lordine specificato inA.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.34/70
-
Proiezione: esempio
Relazione R
A B Ca b cd a fc b d
piA,C (R) piB,A(R)
A Ca c
d fc d
B Ab aa db c
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.35/70
-
Proiezione: esempio(2)
Relazione SquadraNome IdAllJuventus A10Inter A03Milan T21Roma M2Manchester F2
piNome(Squadra)NomeJuventusInterMilanRomaManchester
piIdAll,Nome(Squadra)IdAll NomeA10 JuventusA03 InterT21 MilanM2 RomaF2 Manchester
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.36/70
-
Selezione: predicati(1)
Un predicato F su una relazione R(A1, . . . , An) definito come segue:1. A = k, A k, A k, A < k, A > k, sono predicati atomici
dove A {A1, . . . , An} (cio A un attributo di R) e k unvalore costante appartenente al dominio di A;
2. A = B, A B, A B, A < B, A > B sono predicati atomici,dove A,B A1, . . . , An, cio A e B sono attributi di R
3. Dati i predicati F1 e F2 allora (F1 F2), (F1 F2), (F1) sonoanchessi predicati, dove (AND), (OR) e (NOT) hannorispettivamente il significato di e, o, non della lingua italiana.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.37/70
-
Selezione: predicati(2)Data la relazione Clienti(Nome,Cognome,Data Nascita,Scad. Abbon.),i seguenti sono esempi di predicati su Clienti:
Cognome=Rossi; Data Nascita>19-03-1968; Scad. Abbon.=01-01-2004; Data Nascita=Scad. Abbon.; (Scad. Abbon.01-01-2004 Scad. Abbon.01-05-2004); (Nome=Mario); ((Cognome=ArancioData Nascita>13-08-1979)).
I primi 4 sono predicati atomici. Per abbreviare la scrittura, neipredicati non atomici le 2 parentesi pi esterne non vengono scritte,quindi gli ultimi 3 esempi diventano:Scad. Abbon.01-01-2004 Scad. Abbon.01-05-2004,
Nome=Mario, (Cognome=ArancioData Nascita>13-08-1979).
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.38/70
-
Selezione: predicati(3)Data la relazione DVD(Id,Titolo,Prezzo) i seguenti sono esempi dipredicati su DVD:
Titolo=Matrix; (Titolo=Matrix); Titolo=Matrix Prezzo>20; Prezzo>20 Prezzo20 Prezzo
-
Selezione
La selezione su una relazione R, dato un predicato F , indicatacon
F (R)
una relazione che contiene tutte le tuple che verificano ilpredicato F .
Il grado della relazione risultato uguale al grado della relazioneoperando; i nomi degli attributi della relazione risultato sono glistessi della relazione operando.
Se nessuna tupla di R verifica il predicato F , allora il risultato una relazione vuota (indicata con ).
Pertanto, se k il grado di R, la selezione genera un relazione Tdi k-tuple (una k-tupla una tupla con k attributi).
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.40/70
-
Selezione: esempio(1)
Relazione R
A B Ca b cd a fc b d
B=b(R) (B=b)(R) B=bA=C(R) B=bA=C(R)
A B Ca b cc b d
A B Cd a f
A B Ca b cc b d
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.41/70
-
Selezione: esempio(2)DVD Id Titolo Prezzo
10 Matrix 3025 Speed 26101 Kill Bill 21312 Mediterraneo 15
T itolo=Matrix(DVD)Id Titolo Prezzo10 Matrix 30
T itolo=Matrix(DVD)Id Titolo Prezzo25 Speed 26101 Kill Bill 21312 Mediterraneo 15
P rezzo>20P rezzo
-
Queries
Uno schema di database D un insieme {R1(X1), . . . , Rn(Xn)} dischemi di relazione, dove Xi, per i = 1, . . . , n, denota linsiemedi attributi di Ri;
Una istanza di database su schema di dabase D un insieme diistanze di relazione appartenenti a D;
una query una funzione da istanze di database a istanze direlazione;
Le query sono formulate in algebra relazionale medianteespressioni che coinvolgono le relazioni.
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.43/70
-
Un esempioImpiegati:
ImpId Nome Mansione DataAss Stipendio PremioProd DipNum7369 Rossi ingegnere 17-Dic-80 1600,00 500,00 207499 Andrei tecnico 20-Feb-81 800,00 ? 307521 Bianchi tecnico 20-Feb-81 800,00 100,00 307566 Rosi dirigente 02-Apr-81 2975,00 ? 207654 Martini segretaria 28-Set-81 800,00 ? 307698 Blacchi dirigente 01-Mag-81 2850,00 ? 307782 Neri ingegnere 01-Giu-81 2450,00 200,00 107788 Scotti segretaria 09-Nov-81 800,00 ? 207839 Dare ingegnere 17-Nov-81 2600,00 300,00 107844 Turni tecnico 08-Set-81 1500,00 ? 307876 Adami ingegnere 28-Set-81 1100,00 500,00 207900 Gianni ingegnere 03-Dic-81 1950,00 ? 307902 Fordi segretaria 03-Dic-81 1000,00 ? 207934 Milli ingegnere 23-Gen-82 1300,00 150,00 107977 Verdi dirigente 10-Dic-80 3000,00 ? 10
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.44/70
-
Un esempio
Dipartimenti:
DipId NomeDip Ufficio Divisione Dirigente10 Edilizia Civile 1100 D1 797720 Ricerche 2200 D1 756630 Edilizia Stradale 5100 D2 7698
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.45/70
-
esempi
Selezionare i nomi degli impiegati.
piNome(Impiegati)
NomeRossiAndreiBianchiRosiMartiniBlacchiNeriScottiDareTurniAdamiGianniFordiMilliVerdiInformatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.46/70
-
esempi
Selezionare gli impiegati che hanno uno stipendio maggiore di 2000.Stipendio>2000(Impiegati)
ImpId Nome Mansione DataAss Stipendio PremioProd DipNum7566 Rosi dirigente 02.04.1981 2975 207698 Blacchi dirigente 01.05.1981 2850 307782 Neri ingegnere 01.06.1981 2450 200 107839 Dare ingegnere 17.11.1981 2600 300 107977 Verdi dirigente 10.12.1980 3000 10
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.47/70
-
esempi
Selezionare gli impiegati con uno stipendio compreso tra 1000 e2000.
Stipendio >= 1000 Stipendio
-
esempi
Selezionare i nomi degli impiegati che hanno uno stipendio maggioredi 2000.
piNome(Stipendio>2000(Impiegati))
NomeRosiBlacchiNeriDareVerdi
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.49/70
-
esempi
Selezionare i nomi ed i numeri di dipartimento degli impiegati chehanno uno stipendio maggiore di 2000 e hanno mansione di ingegnere.
piNome,DipNum(Stipendio>2000Mansione=ingegnere(Impiegati))
Nome DipNumNeri 10Dare 10
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.50/70
-
esempi
Selezionare i numeri di impiegato di quegli impiegati che: (a) lavoranonel dipartimento 30 e (b) sono ingegneri o tecnici.piImpId(DipNum=30(Mansione=ingegnereMansione=tecnico)(Impiegati))
ImpId7499752178447900
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.51/70
-
esempi
Selezionare i nomi di impiegato che sono dirigenti di un dipartimentoed il numero di dipartimento che dirigono.
piNome,DipNum(Mansione=dirigente(Impiegati))
Nome DipNumRosi 20Blacchi 30Verdi 10
Selezionare numero e nome di ogni dipartimento.piDipId,NomeDip(Dipartimenti)
DipId NomeDip10 Edilizia Civile20 Ricerche30 Edilizia Stradale
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.52/70
-
esempiCostruire il prodotto cartesiano delle due relazionipiNome,DipNum(Mansione=dirigente(Impiegati)) epiDipId,NomeDip(Dipartimenti) costruite nel lucido precedente.piNome,DipNum(Mansione=dirigente(Impiegati))
piDipId,NomeDip(Dipartimenti)
Nome DipNum DipId NomeDipRosi 20 10 Edilizia CivileRosi 20 20 RicercheRosi 20 30 Edilizia StradaleBlacchi 30 10 Edilizia CivileBlacchi 30 20 RicercheBlacchi 30 30 Edilizia StradaleVerdi 10 10 Edilizia CivileVerdi 10 20 RicercheVerdi 10 30 Edilizia Stradale
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.53/70
-
esempi
Per ogni dirigente determinare il nome del dipartimento che dirige.Per risolvere il problema selezioniamo dalla relazione precedente le tuple in cui i valoridegli attributi DipNum e DipId sono uguali.DipNum=DipId(piNome,DipNum(Mansione=dirigente(Impiegati))
piDipId,NomeDip(Dipartimenti))
Nome DipNum DipId NomeDipRosi 20 20 RicercheBlacchi 30 30 Edilizia StradaleVerdi 10 10 Edilizia Civile
Per terminare applichiamo alla relazione risultato la proiezione su Nome e NomeDip:piNome,NomeDip(
DipNum=DipId(piNome,DipNum(Mansione=dirigente(Impiegati))
piDipId,NomeDip(Dipartimenti)))
Nome NomeDipRosi RicercheBlacchi Edilizia StradaleVerdi Edilizia Civile
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.54/70
-
esempiDeterminare per ogni impiegato il nome del proprio dipartimento.piNome,NomeDip(DipId=DipNum(Dipartimenti Impiegati))
Nome NomeDipRossi RicercheAndrei Edilizia StradaleBianchi Edilizia StradaleRosi RicercheMartini Edilizia StradaleBlacchi Edilizia StradaleNeri Edilizia CivileScotti RicercheDare Edilizia CivileTurni Edilizia StradaleAdami RicercheGianni Edilizia StradaleFordi RicercheMilli Edilizia CivileVerdi Edilizia Civile Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.55/70
-
Esempi
selezionare i nomi degli impiegati che non lavorano nel dipartimentoRicerche.piNome(DipNum=DipId(NomeDip=Ricerche)(Impiegati
Dipartimenti))
NomeNeriDareMilliVerdiAndreiBianchiMartiniBlacchiTurniGianni
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.56/70
-
esempi
Di ogni impiegato che guadagna pi di 2000 selezionare il suo numerodi matricola e quello del suo dirigente.
piImpId,Dirigente(Stipendio>2000DipId=DipNum(Dipartimenti
Impiegati))
ImpId Dirigente7566 75667698 76987782 79777839 79777977 7977
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.57/70
-
esempi
Di ogni impiegato non dirigente che guadagna pi di 2000 selezionareil suo numero di matricola e quello del suo dirigente.
(ImpId=Dirigente)(piImpId,Dirigente(Stipendio>2000DipId=DipNum(Dipartimenti
Impiegati)))
o equivalentemente
(piImpId,Dirigente((ImpId=Dirigente)Stipendio>2000DipId=DipNum(Dipartimenti
Impiegati)))
Impiegati : ImpId Dirigente7782 79777839 7977
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.58/70
-
esempiCambiamo database. La relazione Studenti contiene informazionianagrafiche riguardanti gli studenti di una universit, Corsi contieneinformazioni riguardo ai corsi tenuti in universit infine Esami contiene idati circa gli esami sostenuti.
Studenti Matricola Cognome Nome101010 Rossi Mario254532 Verdi Giovanni356622 Blu Francesca312457 Gialli Marina201015 Rossi Giovanni
Esami Studente Voto Corso101010 22 A22254532 27 C12101010 30 C12312457 28 K09101010 28 K09
Corsi Id Nome DocenteA22 Analisi I PeanoC12 Fisica FermiD55 Informatica TuringK09 Chimica CurieA23 Analisi II Peano
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.59/70
-
Esempi
Determinare i voti dello studente Rossi Mario.piV oto(Matricola=StudenteNome=MarioCognome=Rossi(Studenti
Esami))
Voto223028
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.60/70
-
Esempi
Selezionare i voti ottenuti negli esami di Analisi I.piV oto(Corso=IdNome=AnalisiI(CorsiEsami))
Voto22
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.61/70
-
Esempi
Determinare i numeri di matricola degli studenti che hanno fattolesame con il prof. Fermi.
piStudente(Corso=IdDocente=Fermi(CorsiEsami))
Studente101010254532
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.62/70
-
Esempi
Determinare i numeri di matricola degli studenti che NON hanno fattolesame K09.
Per risolvere lesercizio dobbiamo prima determinare i numeri dimatricola di tutti gli studenti, poi determinare le matricole deglistudenti che hanno fatto lesame K09 e infine fare la differenzadei due insiemi.
piMatricola(Studenti) \ piStudente(Corso=K09(Esami))
Matricola201015254532356622
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.63/70
-
Esempi
Determinare Cognome e Nome degli studenti che NON hanno fattolesame K09.
Per risolvere lesercizio facciamo il cartesiano della relazioneottenuta nel lucido precedente con Studenti, quindi unaselezione rispetto al numero di matricola quindi la proiezionedegli attributi Nome e Cognome.
piNome,Cognome(Id=Matricola(
(piMatricola(Studenti) \ piStudente(Corso=K09(Esami)))
MatricolaId(Studenti))
) Nome CognomeGiovanni RossiGiovanni VerdiFrancesca Blu
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.64/70
-
Esempi
Determinare i cognomi e i nomi degli studenti che hanno fatto lesamecon il prof. Fermi.piNome,Cognome(Corso=IdDocente=FermiMatricola=Studente(
StudentiEsami NomeMateria(Corsi))
)Cognome NomeRossi MarioVerdi Giovanni
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.65/70
-
EsempiDeterminare la matricola degli studenti che hanno il medesimocognome.
Per risolvere lesercizio occorre fare il cartesiano della relazioneStudenti con la relazione ottenuta da Studenti rinominando tuttigli attributi, selezionare le tuple che coincidono sugli attributi cherappresentano il cognome e infine proiettare le due colonne cherappresentano il numero di matricola.
piMatricola,Id(Cognome=Cogn(Studente
(Matricola, Cognome,Nome Id, Cogn,Nom(Studente))))
Matricola Id356622 356622312457 312457101010 101010101010 201015201015 101010201015 201015254532 254532
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.66/70
-
Esempi
La soluzione non perfetta perch nellelenco tutti gli studenti risultanoavere lo stesso cognome di se stessi. Per eliminare le tupleindesiderate dobbiamo modificare il predicato di selezione in modo daescludere le tuple per cui lattributo Matricola uguale a Id:
piMatricola,Id(Cognome=CognMatricola=Id(Studente
(Matricola, Cognome,Nome Id, Cogn,Nom(Studente))))
Matricola Id101010 201015201015 101010
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.67/70
-
Esempi
Per ogni esame sostenuto selezionare Cognome e Nome dellostudente e il docente con cui stato sostenuto.piNome,Cognome,Docente(Matricola=StudenteANDCorso=Id(Studenti
Esami NomeMateria(Corsi)))
Nome Cognome DocenteMario Rossi PeanoMario Rossi FermiMario Rossi CurieGiovanni Verdi FermiMarina Gialli Curie
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.68/70
-
Esempi Di ogni impiegato determinare il nome del suo dirigente.
Prima di tutto costruiamo la relazione che per ogni impiegato cidica chi il suo dirigente. Poi costruiamo la relazione che proiezione delle colonne ImpId e Nome della relazione Impiegati.
La prima relazione costruita con la querypiImpId,Dirigente(DipId=DipNum(Dipartimenti Impiegati))
La seconda relazione costruita con la querypiImpId,Nome(Impiegati)
Ora costruiamo il cartesiano delle due relazioni. Dato che le duerelazioni hanno un nome di attributo in comune, rinominiamo conMatrDip lattributo ImpId della seconda relazione:
piImpId,Dirigente(DipId=DipNum(Dipartimenti Impiegati))
ImpIdMatrDip(piImpId,Nome(Impiegati))
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.69/70
-
Esempi Di questa relazione selezioniamo le tuple per cui
Dirigente=MatrDip:
MatrDip=Dirigente(
piImpId,Dirigente(DipId=DipNum(Dipartimenti Impiegati))
ImpIdMatrDip(piImpId,Nome(Impiegati))
)
Infine di questa relazione proiettiamo ImpId e Nome:
piImpId,Nome(
MatrDip=Dirigente(
piImpId,Dirigente(DipId=DipNum(Dipartimenti Impiegati))
ImpIdMatrDip(piImpId,Nome(Impiegati))
))
Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 p.70/70
Il Modello Relazionale (1)Il Modello Relazionale (2)Esempio prodotto CartesianoDefinizione di RelazioneDefinizione di Tupla e GradoIl Modello RelazionaleUna definizione pi sempliceUna definizione pi semplice (2)Una definizione pi semplice (3)Collegamento tra DatiSchema di Relazione e Istanza di RelazioneValori nulliIl concetto di chiaveIl concetto di chiaveIl concetto di chiaveChiavi EsterneChiavi EsterneChiavi EsterneOperazioni nel Modello RelazionaleAlgebra RelazionaleUnione e DifferenzaUnioneUnione: esempioDifferenzaDifferenza: esempioUso di RenamingRenamingRenamingRenaming ed UnioneProdotto CartesianoProdotto Cartesiano: esempio (1)Prodotto Cartesiano: esempio (2)ProiezioneProiezione: esempioProiezione: esempio(2)Selezione: predicati(1)Selezione: predicati(2)Selezione: predicati(3)SelezioneSelezione: esempio(1)Selezione: esempio(2)QueriesUn esempioUn esempioesempiesempiesempi esempi esempiesempi esempiesempi esempi esempiEsempiesempi esempiesempiEsempiEsempiEsempiEsempiEsempiEsempiEsempiEsempiEsempiEsempiEsempi