modello_relazionale

70
Modello Relazionale Informatica Generale - Modello Relazionale Versione 1.0, aa 2005-2006 – p.1/70

Upload: bossmilan

Post on 12-Nov-2015

212 views

Category:

Documents


0 download

DESCRIPTION

modello relazionale

TRANSCRIPT

  • 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