g. mecca – [email protected] – università della basilicata basi di dati sistemi per basi di dati...

59
G. Mecca – [email protected] – Università della G. Mecca – [email protected] – Università della Basilicata Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Upload: fabrizia-ferrari

Post on 01-May-2015

218 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

G. Mecca – [email protected] – Università della BasilicataG. Mecca – [email protected] – Università della Basilicata

Basi di Dati

Sistemi per Basi di Dati Relazionali: Modello Logico

Dettagli e Approfondimenti

versione 2.0

Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Page 2: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

2G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Dettagli e Approfondimenti

Confronto con il Modello Relazionale Notazione Dettagli sui vincoli

Classificazione e SintassiChiavi PrimarieGestione dei vincoli di riferimento

Dettagli sullo schemaVisteCatalogo

DBMS Relazionali – Modello Logico >> Sommario

Page 3: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

3G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Modello Logico dei DBMS Relazionali Base di Dati

insieme di tabelle Tabella

collezione di ennuple Ennupla

insieme di coppie (attributo, valore) Valore Nullo

assenza di informazione

DBMS Relazionali – Modello Logico >> Dettagli

Page 4: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

4G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Modello Logico dei DBMS Relazionali Schema di Base di Dati

insieme di schemi di tabella con nomi diversi Schema di Tabella

nome della tabellacollezione di attributi, uno o più, con nomi diversi e

per ciascuno un dominioinsieme di vincoli di integrità

Dominiotipo atomico (numeri, stringhe, date, ecc.)

DBMS Relazionali – Modello Logico >> Dettagli

Page 5: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

5G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Confronto con il Modello Relazionale Nel modello originale di Codd

base di dati: insieme di relazionirelazione: insieme di ennupleschema di relazione: insieme di attributi

L’ordinamento è irrilevantenessun ordinamento tra le ennuplenessun ordinamento tra gli attributi

Non sono ammesse ennuple duplicate

DBMS Relazionali – Modello Logico >> Dettagli >> Modello Relazionale

Page 6: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

6G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Ordinamento

DBMS Relazionali – Modello Logico >> Dettagli >> Modello Relazionale

Nei sistemi reali spesso non è così (>>)

codice titolo docente

PR1 Programmazione I F. Totti

ASD Algoritmi e Str. Dati C. Vieri

INFT Informatica Teorica A. Del Piero

titolo docente codice

Programmazione I F. Totti PR1

Algoritmi e Str. Dati C. Vieri ASD

Informatica Teorica A. Del Piero INFT

=

codice titolo docente

PR1 Programmazione I F. Totti

ASD Algoritmi e Str. Dati C. Vieri

INFT Informatica Teorica A. Del Piero

codice titolo docente

INFT Informatica Teorica A. Del Piero

PR1 Programmazione I F. Totti

ASD Algoritmi e Str. Dati C. Vieri

=

Page 7: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

7G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Duplicati

DBMS Relazionali – Modello Logico >> Dettagli >> Modello Relazionale

Nei sistemi relazionaliin alcuni, l’inserimento di duplicati non

è consentito (es: Access)in altri è consentito (MySQL, PgSQL)

matricola cognome nome dataNascita

333 John Smith 15/06/1980

444 Pinco Palla 01/10/1984

77777 Bruno Pasquale 05/07/1983

333 John Smith 15/06/1980

Studenti

Page 8: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

8G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Ordinamento e Duplicati

La spiegazione di Don ChamberlinL’ordinamento spesso è utileL’eliminazione dei duplicati è un’operazione

costosa “Fidarsi degli utenti”

Consentire di scegliereIl linguaggio SQL consente di scegliere

come trattare ordinamento e duplicati

DBMS Relazionali – Modello Logico >> Dettagli >> Modello Relazionale

Page 9: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

9G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Notazione

Attributo A della tabella RR.A es: Studenti.matricola, Esami.matricolaA se non c’è rischio di ambiguità es: voto

Notazione posizionale: attributi ordinaties:<matricola,cognome,nome,dataNas>[3456, Rossi, Maria, 02/01/1978]

DBMS Relazionali – Modello Logico >> Dettagli >> Notazione

Page 10: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

10G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Notazione

Restrizione di una ennuplat.X : valore di t sull’insieme di attributi X

es: se X=<matricola, cognome> t=[3456, Rossi, Maria, 02/01/1978] t.X=[3456, Rossi]

Cardinalità di una tabella R|R| = numero di ennuple di R

Dominio di un attributotipo(A); es: A=matricola, tipo(A)=integer

DBMS Relazionali – Modello Logico >> Dettagli >> Notazione

Page 11: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

11G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Vincoli di Integrità

Vincolo di Integrità: regola sui datidiscendono dalle regole della realtà

rappresentata nella base di dati Vincolo di chiave

unicità del valore di un attributo o di un insieme di attributi in una tabella

es: non esistono due studenti con la stessa matricola

es: non esistono due corsi con lo stesso codice

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli

Page 12: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

12G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Vincoli di Integrità

Vincolo di Ennuplacondizione sui valori delle ennuple di una

tabellaes: il voto deve essere compreso tra 18 e 30

Vincolo di Riferimentocorrettezza dei riferimenti ad altre tabellees: la matricola dello studente che ha

sostenuto l’esame deve essere corretta

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli

Page 13: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

13G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli

Schemacon

vincoli di integrità

TABLE corsi (codice char(3), titolo char(50), docente char(20), UNIQUE(codice));

TABLE studenti(matricola integer, cognome char(20), nome char(20), dataNas date, UNIQUE(matricola));

TABLE esami (matricola integer, corso char(3), voto integer, lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), FOREIGN KEY(matricola) REFERENCES studenti(matricola), FOREIGN KEY(corso) REFERENCES corsi(codice), UNIQUE (matricola, corso));

Page 14: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

14G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Vincoli di Integrità

Nel seguitoalcuni dettagli sulla sintassi per specificare i

vincoliapprofondimenti sui vincoli di chiave e

concetto di chiave primariaapprofondimenti sui vincoli di riferimento e

concetto di aggiornamento in cascata

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli

Page 15: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

15G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Sintassi

Nomi dei vincolitutti i vincoli di integrità hanno un nome

(come gli attributi)normalmente il DBMS assegna ai vincoli un

nome di sistemaè possibile specificare esplicitamente il nomesintassi:

CONSTRAINT <nome> <definizione>

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Sintassi

Page 16: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

16G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli

TABLE corsi (codice char(3), titolo char(50), docente char(20), CONSTRAINT chiaveCorso UNIQUE(codice));

TABLE studenti(matricola integer, cognome char(20), nome char(20), dataNas date, CONTRAINT chiaveSt UNIQUE(matricola));

TABLE esami (matricola integer, corso char(3), voto integer, lode bool, CONSTRAINT valoreVoto CHECK (voto>=18 and voto<=30), CONSTRAINT valoreLode CHECK (not lode or voto=30), CONSTRAINT rifStudente FOREIGN KEY(matricola) REFERENCES studenti(matricola), CONSTRAINT rifCorso FOREIGN KEY(corso) REFERENCES corsi(codice), CONSTRAINT chiaveEs UNIQUE (matricola, corso));

Page 17: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

17G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Sintassi

Due categorie di vincoli“vincoli di colonna”: riguardano i valori di un

solo attributo“vincoli di tabella”: riguardano i valori di più di

un attributo Vincoli di colonna

sintassi alternativasi possono specificare in corrispondenza

della definizione dell’attributo

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Sintassi

Page 18: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

18G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli

TABLE corsi (codice char(3) UNIQUE, titolo char(50), docente char(20));

TABLE studenti(matricola integer UNIQUE, cognome char(20), nome char(20), dataNas date);

TABLE esami (matricola integer REFERENCES studenti(matricola), corso char(3) REFERENCES corsi(codice), voto integer CHECK (voto>=18 and voto<=30), lode bool, CHECK (not lode or voto=30), UNIQUE (matricola, corso));

Page 19: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

19G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Sintassi

In sintesitre varianti della sintassi per i vincoli

Tutti i vincoli in fondo senza nome Tutti i vincoli in fondo con un nome

CONSTRAINT I vincoli di colonna in corrispondenza

delle colonne

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Sintassi

Page 20: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

20G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Chiavi

Vincoli di chiaveattributi che consentono di identificare

univocamente le ennuple di una tabellase c’è una chiave non possono esserci

ennuple duplicate nella tabella Nota

una tabella può avere più chiaviuna chiave può essere fatta di uno o più

attributi

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

Page 21: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

21G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Chiavi

Esempio: studentesupponiamo che la tabella studente

contenga <matricola, cognome, nome, dataNas, luogoNas, codiceFiscale>

chiave fatta dall’unico attributo <matricola>chiave fatta dall’unico attributo

<codiceFiscale>chiave fatta da <cognome, nome, dataNas,

luogoNas>

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

Page 22: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

22G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Chiavi

Esempio: studente

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

TABLE Studenti(matricola integer UNIQUE, cognome char(20), nome char(20), dataNas date, luogoNas char(50), codiceFiscale char(16) UNIQUE, UNIQUE (cognome, nome, dataNas, luogoNas));

Page 23: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

23G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Chiave Primaria

E’ opportuno scegliere una tra le chiavimodalità primaria per fare riferimento alle

ennuple della tabella Chiave Primaria

una delle chiavi, scelta come identificatore primario (PRIMARY KEY)

è importante che sia compattaconvenzione grafica: chiave primaria

sottolineata

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

Page 24: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

24G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Chiave Primaria

Esempio: studente

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

TABLE Studenti(matricola integer PRIMARY KEY, cognome char(20), nome char(20), dataNas date, luogoNas char(50), codiceFiscale char(16) UNIQUE, UNIQUE (cognome, nome, dataNas, luogoNas));

Page 25: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

25G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Chiave Primaria

Chiavi e Valori Nulli

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

matricola cognome nome dataNascita

NULL NULL Pietro 01/10/1984

444 Pinco Palla 01/10/1984

77777 Bruno Pasquale 05/07/1983

88888 Pinco Pietro NULL

NULL Pinco Pietro 01/10/1984

Studenti

Ennuple non identificabili correttamente

Page 26: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

26G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Chiave Primaria

Per comodità, si richiede che la chiave primaria non contenga valori nulli

Ulteriore vincolo: assenza di valori nullisintassi NOT NULL

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

TABLE Studenti(matricola integer NOT NULL PRIMARY KEY, cognome char(20) NOT NULL, nome char(20) NOT NULL, dataNas date, luogoNas char(50), codiceFiscale char(16) UNIQUE, UNIQUE (cognome, nome, dataNas, luogoNas));

Page 27: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

27G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Vincoli di Riferimento

Riferimenti ad ennuple di altre tabelle Regola del modello

è possibile fare riferimento solo ad attributi che rappresentano una chiave

chiavi esterne (“FOREIGN KEY”) Nota: è necessario fare riferimento alla

chiave nel suo complessonon basta una parte degli attributi

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

Page 28: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

28G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Vincoli di Riferimento

Esempio: Studentisupponiamo che la chiave primaria di sia

<cognome, nome, dataNas, luogoNas>

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

TABLE Studenti(matricola integer UNIQUE, cognome char(20) NOT NULL, nome char(20) NOT NULL, dataNas date NOT NULL, luogoNas char(50) NOT NULL, codiceFiscale char(16) UNIQUE, PRIMARY KEY (cognome, nome, dataNas, luogoNas));

Page 29: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

29G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Vincoli di Riferimento

Esempio: Esaminella tabella esami Esami, devo avere

<cognS, nomeS, dataNS, luogoNS>

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

TABLE esami (cognS char(20), nomeS char(20), dataNS date, luogoN char(50), corso char(3) REFERENCES corsi(codice), voto integer CHECK (voto>=18 and voto<=30), lode bool, CHECK (not lode or voto=30), FOREIGN KEY (cognS, nomeS, dataNS, luogoNS) REFERENCES Studenti(cognome,nome,dataNas,luogoNas));

Page 30: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

30G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Vincoli di Riferimento

Notagli attributi corrispondenti devono avere lo

stesso tipoper ogni ennupla t2 di Esami, deve esistere

una ennupla t1 di Studenti tale che: t1.cognome = t2.cognS, t1.nome = t2.nomeS,t1.dataNas = t2.dataNS, t1.luogoNas = t2.luogoNS

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

Page 31: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

31G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Vincoli di Riferimento

In concretoè opportuno che le chiavi primarie siano

compatte per vari motiviriferimenti compatti nelle altre tabelleminore possibilità di commettere errorima devono essere anche “naturali”es: in un’applicazione universitaria, la

matricola è preferibile al codice fiscale

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

Page 32: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

32G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Aggiornamenti e Vincoli

Aggiornamentiinserimenti; es: inserisci un nuovo esamecancellazioni; es: cancella uno studentemodifiche; es: cambia una matricola

Che succede rispetto ai vincoli ? Inserimenti scorretti non consentiti

es: esame di uno studente inesistente

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

Page 33: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

33G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Aggiornamenti e Vincoli

Cancellazionies: eliminazione di uno studenteopzione 1: rifiutare la cancellazioneopzione 2: effettuare eliminazioni in cascata

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti

matricola cognome nome dataNascita

333 John Smith 15/06/1980

444 Pinco Palla 01/10/1984

77777 Bruno Pasquale 05/07/1983

88888 Pinco Pietro 01/10/1984

Studenti

Page 34: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

34G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Eliminazioni in Cascata

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti

matricola cognome nome dataNascita

333 John Smith 15/06/1980

444 Pinco Palla 01/10/1984

77777 Bruno Pasquale 05/07/1983

88888 Pinco Pietro 01/10/1984

Studenti

matricola corso voto lode

333 PR1 27 false

77777 PR1 21 false

77777 ASD 20 false

88888 PR1 30 false

88888 INFT 30 true

Esami

Page 35: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

35G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Aggiornamenti e Vincoli

Modifichees: cambiamento di matricola di uno studenteopzione 1: rifiutare la modificaopzione 2: effettuare le modifiche in cascata

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti

matricola cognome nome dataNascita

333 John Smith 15/06/1980

444 Pinco Palla 01/10/1984

77777 Bruno Pasquale 05/07/1983

88888 Pinco Pietro 01/10/1984

Studenti

1212

Page 36: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

36G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Modifiche in Cascata

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti

matricola cognome nome dataNascita

333 John Smith 15/06/1980

444 Pinco Palla 01/10/1984

77777 Bruno Pasquale 05/07/1983

88888 Pinco Pietro 01/10/1984

Studenti

1212

matricola corso voto lode

333 PR1 27 false

77777 PR1 21 false

77777 ASD 20 false

88888 PR1 30 false

88888 INFT 30 true

Esami

12121212

Page 37: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

37G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Aggiornamenti e Vincoli

E’ possibile specificare il comportamento in caso di aggiornamenticomportamento standard: opzione 1

(il DBMS impedisce gli aggiornamenti)aggiornamenti in cascata: opzione 2

CASCADE (in questo caso il DBMS effettua gli aggiornamenti su entrambe le tabelle)

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti

Page 38: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

38G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Aggiornamenti a Cascata

TABLE Esami (matricola integer REFERENCES Studenti(matricola) ON DELETE CASCADE ON UPDATE CASCADE, voto integer, corso char(3) REFERENCES Corsi(codice), lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), PRIMARY KEY (matricola, corso));

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti

Page 39: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

39G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Aggiornamenti e Vincoli

Aggiornamenti in cascataalternativa a CASCADE: SET NULL

In questo casonella tabella in cui viene specificato il vincolo

vengono fatti comunque aggiornamenti in cascata

introducendo valori nulli per evitare di violare il vincolo

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti

Page 40: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

40G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Aggiornamenti a Cascata

TABLE Esami (matricola integer REFERENCES Studenti(matricola) ON DELETE CASCADE ON UPDATE CASCADE, voto integer, corso char(3) REFERENCES Corsi(codice), ON DELETE SET NULL ON UPDATE SET NULL, lode bool, CHECK (voto>=18 and voto<=30), CHECK (not lode or voto=30), PRIMARY KEY (matricola, corso));

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti

Page 41: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

41G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Schema della Base di Dati

Schema di Base di DatiTabelleAttributiDominiVincoli

Altro elemento importante:VisteStrutture di Accesso

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 42: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

42G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Viste

Viste=tabelle “virtuali” Le viste fanno parte dello schema Compongono gli schemi esterni (>>) Es: esamiSV, una vista sulla tabella Esami

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

VIEW EsamiSV (matricola integer, corso char(3));

matricola corso

333 PR1

77777 PR1

77777 ASD

88888 PR1

88888 INFT

EsamiSV

Page 43: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

43G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Strutture di Accesso

Indicistrutture ausiliarie per l’accesso al discocomponente fondamentale per le prestazioni

Attenzionenon fanno parte del modello logico ma del

modello fisicosono fondamentali per le prestazioni (>>)quindi è importante che siano notisono documentati nello schema

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 44: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

44G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Catalogo di Sistema

Tabelle di sistema Descrivono tutti i dati gestiti dal sistema

le basi di datilo schema di ciascuna base di dati (tabelle,

attributi, domini, vincoli, viste, indici …)altri oggetti di sistema (in particolare utenti e

autorizzazioni)

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 45: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

45G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Autorizzazioni

Autenticazione del DBMSnomeUtente, password

DBA: DataBase Administratoramministratore del DBMS

Autorizzazioni sulle risorsebasi di dati, tabelle e viste: CREATEtabelle: INSERT, DELETE, UPDATE,

SELECT

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 46: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

46G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Catalogo di Sistema

“Metadati”tabelle che descrivono altre tabelle“dizionario dei dati”

Possono essere acceduti dalle applicazioni come tabelle ordinariedescrizione della base di dati

Il formato non è standard

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 47: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

47G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Catalogo di Sistema

In alcuni casi è completamente visibile (agli utenti autorizzati)es: PgSQL, DB2

In altri casi è del tutto invisibile es: Access

o visibile solo parzialmentees: MySQL

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 48: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

48G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Il Catalogo di PostgreSQL

Alcune tabelle (in totale più di 10) pg_database

tabella che descrive le basi di dati esistenti pg_shadow

tabella che descrive gli utenti pg_tables

tabella che descrive per ogni bd le tabelle della base di dati (incluse le tabelle di sistema)

pg_attributetabella che descrive gli attributi di tutte le tabelle

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 49: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

49G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Il Catalogo di PostgreSQL

pg_shadow

usename | usesysid | usecreatedb | passwd | valuntil----------+----------+-------------+--------+---------- postgres | 26 | t | | mecca | 27 | t | | pguser | 28 | t | xxxxxx |(3 rows)

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 50: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

50G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Il Catalogo di PostgreSQL

pg_tables

tablename | tableowner | hasindexes | hasrules | hastrig----------------+------------+------------+----------+--------- pg_type | postgres | t | f | f pg_attribute | postgres | t | f | f pg_class | postgres | t | f | f pg_group | postgres | t | f | f pg_database | postgres | f | f | f ... pg_shadow | postgres | f | f | t ... studenti | mecca | t | f | t esami | mecca | t | f | t corsi | mecca | t | f | t(37 rows)

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 51: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

51G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Il Catalogo di PostgreSQL

pg_attribute

attrelid | attname ...----------+----------------- 1247 | typname ... ... | ... ... 18889 | tableoid ... 18902 | matricola ... 18905 | codice ... 18905 | nome ... 18905 | docente ... ... | ... ... 19011 | studente ... 19011 | corso ...(720 rows)

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 52: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

52G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Linguaggi per BD Relazionali

SQL Creare utenti e autorizzazioni Creare lo schema della base di dati

“Inizializzare” la bd (tabelle di sistema)Creare lo schema delle tabelle

Creare l’istanza della base di datiInserire, cancellare, modificare le ennuple

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 53: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

53G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Linguaggi per BD Relazionali

Estrarre dati dalle tabelle: “Interrogazioni” Esempi:

“tutti gli studenti (ev. in ordine di nascita)”“nome dello studente la cui matricola è 1234”“nomi degli studenti che hanno sostenuto

l’esame di analisi”“nomi degli studenti che hanno avuto 30 dal

prof. Pinco”

DBMS Relazionali – Modello Logico >> Dettagli >> Schema

Page 54: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

54G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Dettagli e Approfondimenti

Confronto con il Modello Relazionale Notazione Dettagli sui vincoli

Classificazione e SintassiChiavi primarieGestione dei vincoli di riferimento

Dettagli sullo schemaVisteCatalogo

DBMS Relazionali – Modello Logico >> Sommario

Page 55: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

55G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Superchiavi e Chiavi Primarie

Superchiave per Rinsieme di attributi X tale che non possono

esistere in R due ennuple diverse t1 e t2 tali che t1.X=t2.X

es: matricola e nome per Studente, matricola, nome e dataNascita

Chiave per Rsuperchiave minimale di R

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

Page 56: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

56G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Vincoli di Riferimento

Formalizzandotabella R1, X1=<A1,A2, …,Ak> PRIMARY KEY

tabella R2, FOREIGN KEY X2=<B1,B2, …,Bk> REFERENCES R1(X1)

per ogni valore di i da 1 a k, Ai e Bi sono dello stesso tipo: tipo(Ai) = tipo(Bi)

per ogni ennupla t2 di R2, esiste una ennupla t1 di R1 tale che t1.X1 = t2.X2

(per ogni valore i da 1 a k : t1.Ai = t2.Bi )

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

Page 57: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

57G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Aggiornamenti a Cascata

E’ un esempio di regola attiva Regola attiva (o “trigger”)

evento iniziale (es: aggiornamento di una matricola di stud.)

condizione(es: lo studente ha sostenuto degli esami)

azioni successive (es: cascata di aggiornamenti delle ennuple degli esami)

DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti

Page 58: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

58G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

DBMS Relazionali – Modello Logico >> Dettagli

matricola cognome nome dataNascita

333 John Smith 15/06/1980

444 Pinco Palla 01/10/1984

77777 Bruno Pasquale 05/07/1983

88888 Pinco Pietro 01/10/1984

Studenti

codice titolo docente

PR1 Programmazione I F. Totti

ASD Algoritmi e Str. Dati C. Vieri

INFT Informatica Teorica A. Del Piero

Corsi

matricola corso voto lode

333 PR1 27 false

77777 PR1 21 false

77777 ASD 20 false

88888 PR1 30 false

88888 INFT 30 true

Esami Base diDati

Page 59: G. Mecca – mecca@unibas.it – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione

59G. Mecca - [email protected] - Basi di DatiG. Mecca - [email protected] - Basi di Dati

Termini della Licenza

Termini della Licenza

This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.