Upload
fabrizia-ferrari
View
218
Download
1
Embed Size (px)
Citation preview
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)
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
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
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
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
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
=
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
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
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
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
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
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
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));
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
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
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));
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
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));
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
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
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
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));
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
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));
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
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));
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
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));
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));
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.