G. Mecca – – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Dettagli e Approfondimenti versione.

Slides:



Advertisements
Presentazioni simili
Le funzioni dell’ “Operatore”.
Advertisements

Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Informatica II – Basi di Dati (08/09) – Parte 1
Corso di Laurea in Biotecnologie Informatica (Basi di Dati)
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Caduta non guidata di un corpo rettangolare in un serbatoio Velocità e rotazione.
1 MeDeC - Centro Demoscopico Metropolitano Provincia di Bologna - per Valutazione su alcuni servizi erogati nel.
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
G. Mecca – – Università della Basilicata Basi di Dati Progettazione di Basi di Dati: Introduzione versione 2.0 Questo lavoro è concesso.
Sistemi per Basi di Dati: Introduzione
DBMS Relazionali a Oggetti: Introduzione
G. Mecca – – Università della Basilicata Basi di Dati Progettazione Logica versione 2.0 Questo lavoro è concesso in uso secondo i termini.
G. Mecca – – Università della Basilicata Basi di Dati Sistemi per Basi di Dati Relazionali: Modello Logico Concetti Fondamentali versione.
G. Mecca – – Università della Basilicata Basi di Dati Sistemi per BD Relazionali: Modello Fisico Concetti Fondamentali versione 2.0 Questo.
Modello Concettuale dei Dati: Concetti Fondamentali
SQL-92 Concetti Fondamentali
Tecnologie di Sviluppo per il Web
Modello Concettuale Dettagli e Approfondimenti
G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Concetti Avanzati versione 2.0 Questo lavoro è concesso in uso secondo i termini.
G. Mecca – – Università della Basilicata Tecnologie di Sviluppo per il Web XML: Dettagli e Approfondimenti versione 2.0 Questo lavoro è
Progettazione e Forme Normali
G. Mecca – – Università della Basilicata Basi di Dati Sistemi per BD Relazionali: Modello Fisico Dettagli e Approfondimenti versione 2.0.
G. Mecca – – Università della Basilicata Basi di Dati Tecnologia di un DBMS: Concorrenza e Affidabilità Concetti Avanzati versione 2.0.
G. Mecca – – Università della Basilicata Basi di Dati SQL-92 Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo.
Algebra Relazionale Dettagli e Approfondimenti
G. Mecca – – Università della Basilicata Basi di Dati Progettazione Fisica e Tuning: Concetti Avanzati versione 2.0 Questo lavoro è concesso.
Frontespizio Economia Monetaria Anno Accademico
Il modello relazionale: strutture e vincoli
Programmazione Procedurale in Linguaggio C++
EIE 0607 III / 1 A B P a = 30 P b = 35 t = 2, tc = 1 Questo può essere un equilibrio? No! Politiche di un paese importatore: una tariffa allimportazione.
1 IT FOR BUSINESS AND FINANCE ACCESS INTRODUCTION.
Programmazione 1 9CFU – TANTE ore
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Corso di Informatica (Basi di Dati)
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) Modello Relazionale Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi, Torlone - Basi.
SQL per la modifica di basi di dati. 29/01/2014SQL per la modifica di basi di dati2 Data Manipulation Language Introduciamo ora il Data Manipulation Language.
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Basi di dati Università Degli Studi Parthenope di Napoli
SQL: Lezione 7 Nataliya Rassadko
Algoritmi e Strutture Dati
1 © Alberto Montresor Algoritmi e Strutture Dati Capitolo 7 - Tabelle hash Alberto Montresor Università di Trento This work is licensed under the Creative.
Algoritmi e Strutture Dati
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
La partita è molto combattuta perché le due squadre tentano di vincere fino all'ultimo minuto. Era l'ultima giornata del campionato e il risultato era.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
ISOIVA (LOCALE) TO ISOIVA (WEB) RIPARTIZIONE INFORMATICA UFFICIO APPLICATIVI AMMINISTRATIVI 13/04/2011 UNIVERSITÀ DEGLI STUDI DI FERRARA 1.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
Progettare un database
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
sql: esempi di linguaggio sql nell'implementazione mysql
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
Riconfigurare il diritto dautore. Lipertesto, una necessità di riconfigurazione. Secondo G. P. Landow, lavvento dellipertesto implica la necessità di.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
NO WASTE Progetto continuità scuola primaria scuola secondaria Salorno a.s. 2013_
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
SQL (IV) Data Definition Language/ Data Manipulation Language.
Programmazione Procedurale in Linguaggio C++
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Il modello relazionale. Modello logico dei dati basato su concetti relazione e tabella Relazione: da teoria degli insiemi Tabella: rappresentazione grafica.
Basi di dati e Relazioni Uno schema di relazione R(X) è costituito da un simbolo (nome della relazione) R e da una serie di attributi X={A 1, A 2, …, A.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Transcript della presentazione:

G. Mecca – – 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)

2 G. Mecca - - Basi di Dati Dettagli e Approfondimenti m Confronto con il Modello Relazionale m Notazione m Dettagli sui vincoli Classificazione e Sintassi Chiavi Primarie Gestione dei vincoli di riferimento m Dettagli sullo schema Viste Catalogo DBMS Relazionali – Modello Logico >> Sommario

3 G. Mecca - - Basi di Dati Modello Logico dei DBMS Relazionali m Base di Dati insieme di tabelle m Tabella collezione di ennuple m Ennupla insieme di coppie (attributo, valore) m Valore Nullo assenza di informazione DBMS Relazionali – Modello Logico >> Dettagli

4 G. Mecca - - Basi di Dati Modello Logico dei DBMS Relazionali m Schema di Base di Dati insieme di schemi di tabella con nomi diversi m Schema di Tabella nome della tabella collezione di attributi, uno o più, con nomi diversi e per ciascuno un dominio insieme di vincoli di integrità m Dominio tipo atomico (numeri, stringhe, date, ecc.) DBMS Relazionali – Modello Logico >> Dettagli

5 G. Mecca - - Basi di Dati Confronto con il Modello Relazionale m Nel modello originale di Codd base di dati: insieme di relazioni relazione: insieme di ennuple schema di relazione: insieme di attributi m Lordinamento è irrilevante nessun ordinamento tra le ennuple nessun ordinamento tra gli attributi m Non sono ammesse ennuple duplicate DBMS Relazionali – Modello Logico >> Dettagli >> Modello Relazionale

6 G. Mecca - - Basi di Dati Ordinamento DBMS Relazionali – Modello Logico >> Dettagli >> Modello Relazionale Nei sistemi reali spesso non è così (>>) codicetitolodocente PR1Programmazione IF. Totti ASDAlgoritmi e Str. DatiC. Vieri INFTInformatica TeoricaA. Del Piero titolodocentecodice Programmazione IF. TottiPR1 Algoritmi e Str. DatiC. VieriASD Informatica TeoricaA. Del PieroINFT = codicetitolodocente PR1Programmazione IF. Totti ASDAlgoritmi e Str. DatiC. Vieri INFTInformatica TeoricaA. Del Piero codicetitolodocente INFTInformatica TeoricaA. Del Piero PR1Programmazione IF. Totti ASDAlgoritmi e Str. DatiC. Vieri =

7 G. Mecca - - Basi di Dati Duplicati DBMS Relazionali – Modello Logico >> Dettagli >> Modello Relazionale m Nei sistemi relazionali in alcuni, linserimento di duplicati non è consentito (es: Access) in altri è consentito (MySQL, PgSQL) matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ JohnSmith15/06/1980 Studenti

8 G. Mecca - - Basi di Dati Ordinamento e Duplicati m La spiegazione di Don Chamberlin Lordinamento spesso è utile Leliminazione dei duplicati è unoperazione costosa m Fidarsi degli utenti Consentire di scegliere Il linguaggio SQL consente di scegliere come trattare ordinamento e duplicati DBMS Relazionali – Modello Logico >> Dettagli >> Modello Relazionale

9 G. Mecca - - Basi di Dati Notazione m Attributo A della tabella R R.A es: Studenti.matricola, Esami.matricola A se non cè rischio di ambiguità es: voto m Notazione posizionale: attributi ordinati es: [3456, Rossi, Maria, 02/01/1978] DBMS Relazionali – Modello Logico >> Dettagli >> Notazione

10 G. Mecca - - Basi di Dati Notazione m Restrizione di una ennupla t.X : valore di t sullinsieme di attributi X es: se X= t=[3456, Rossi, Maria, 02/01/1978] t.X=[3456, Rossi] m Cardinalità di una tabella R |R| = numero di ennuple di R m Dominio di un attributo tipo(A); es: A=matricola, tipo(A)=integer DBMS Relazionali – Modello Logico >> Dettagli >> Notazione

11 G. Mecca - - Basi di Dati Vincoli di Integrità m Vincolo di Integrità: regola sui dati discendono dalle regole della realtà rappresentata nella base di dati m 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

12 G. Mecca - - Basi di Dati Vincoli di Integrità m Vincolo di Ennupla condizione sui valori delle ennuple di una tabella es: il voto deve essere compreso tra 18 e 30 m Vincolo di Riferimento correttezza dei riferimenti ad altre tabelle es: la matricola dello studente che ha sostenuto lesame deve essere corretta DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli

13 G. Mecca - - Basi di Dati DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli Schema con 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));

14 G. Mecca - - Basi di Dati Vincoli di Integrità m Nel seguito alcuni dettagli sulla sintassi per specificare i vincoli approfondimenti sui vincoli di chiave e concetto di chiave primaria approfondimenti sui vincoli di riferimento e concetto di aggiornamento in cascata DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli

15 G. Mecca - - Basi di Dati Sintassi m Nomi dei vincoli tutti i vincoli di integrità hanno un nome (come gli attributi) normalmente il DBMS assegna ai vincoli un nome di sistema è possibile specificare esplicitamente il nome sintassi: CONSTRAINT DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Sintassi

16 G. Mecca - - 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));

17 G. Mecca - - Basi di Dati Sintassi m 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 m Vincoli di colonna sintassi alternativa si possono specificare in corrispondenza della definizione dellattributo DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Sintassi

18 G. Mecca - - 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));

19 G. Mecca - - Basi di Dati Sintassi m In sintesi tre varianti della sintassi per i vincoli m Tutti i vincoli in fondo senza nome m Tutti i vincoli in fondo con un nome CONSTRAINT m I vincoli di colonna in corrispondenza delle colonne DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Sintassi

20 G. Mecca - - Basi di Dati Chiavi m Vincoli di chiave attributi che consentono di identificare univocamente le ennuple di una tabella se cè una chiave non possono esserci ennuple duplicate nella tabella m Nota una tabella può avere più chiavi una chiave può essere fatta di uno o più attributi DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

21 G. Mecca - - Basi di Dati Chiavi m Esempio: studente supponiamo che la tabella studente contenga chiave fatta dallunico attributo chiave fatta da DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

22 G. Mecca - - Basi di Dati Chiavi m 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));

23 G. Mecca - - Basi di Dati Chiave Primaria m E opportuno scegliere una tra le chiavi modalità primaria per fare riferimento alle ennuple della tabella m Chiave Primaria una delle chiavi, scelta come identificatore primario (PRIMARY KEY) è importante che sia compatta convenzione grafica: chiave primaria sottolineata DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

24 G. Mecca - - Basi di Dati Chiave Primaria m 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));

25 G. Mecca - - Basi di Dati Chiave Primaria m Chiavi e Valori Nulli DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi matricolacognomenomedataNascita NULL Pietro01/10/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietroNULL PincoPietro01/10/1984 Studenti Ennuple non identificabili correttamente

26 G. Mecca - - Basi di Dati Chiave Primaria m Per comodità, si richiede che la chiave primaria non contenga valori nulli m Ulteriore vincolo: assenza di valori nulli sintassi 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));

27 G. Mecca - - Basi di Dati Vincoli di Riferimento m Riferimenti ad ennuple di altre tabelle m Regola del modello è possibile fare riferimento solo ad attributi che rappresentano una chiave chiavi esterne (FOREIGN KEY) m Nota: è necessario fare riferimento alla chiave nel suo complesso non basta una parte degli attributi DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

28 G. Mecca - - Basi di Dati Vincoli di Riferimento m Esempio: Studenti supponiamo che la chiave primaria di sia 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));

29 G. Mecca - - Basi di Dati Vincoli di Riferimento m Esempio: Esami nella tabella esami Esami, devo avere 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));

30 G. Mecca - - Basi di Dati Vincoli di Riferimento m Nota gli attributi corrispondenti devono avere lo stesso tipo per ogni ennupla t 2 di Esami, deve esistere una ennupla t 1 di Studenti tale che: t 1.cognome = t 2.cognS, t 1.nome = t 2.nomeS, t 1.dataNas = t 2.dataNS, t 1.luogoNas = t 2.luogoNS DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

31 G. Mecca - - Basi di Dati Vincoli di Riferimento m In concreto è opportuno che le chiavi primarie siano compatte per vari motivi riferimenti compatti nelle altre tabelle minore possibilità di commettere errori ma devono essere anche naturali es: in unapplicazione universitaria, la matricola è preferibile al codice fiscale DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

32 G. Mecca - - Basi di Dati Aggiornamenti e Vincoli m Aggiornamenti inserimenti; es: inserisci un nuovo esame cancellazioni; es: cancella uno studente modifiche; es: cambia una matricola m Che succede rispetto ai vincoli ? m Inserimenti scorretti non consentiti es: esame di uno studente inesistente DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

33 G. Mecca - - Basi di Dati Aggiornamenti e Vincoli m Cancellazioni es: eliminazione di uno studente opzione 1: rifiutare la cancellazione opzione 2: effettuare eliminazioni in cascata DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietro01/10/1984 Studenti

34 G. Mecca - - Basi di Dati Eliminazioni in Cascata DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietro01/10/1984 Studenti matricolacorsovotolode 333PR127false 77777PR121false 77777ASD20false 88888PR130false 88888INFT30true Esami

35 G. Mecca - - Basi di Dati Aggiornamenti e Vincoli m Modifiche es: cambiamento di matricola di uno studente opzione 1: rifiutare la modifica opzione 2: effettuare le modifiche in cascata DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietro01/10/1984 Studenti 1212

36 G. Mecca - - Basi di Dati Modifiche in Cascata DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Aggiornamenti matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietro01/10/1984 Studenti 1212 matricolacorsovotolode 333PR127false 77777PR121false 77777ASD20false 88888PR130false 88888INFT30true Esami 1212

37 G. Mecca - - Basi di Dati Aggiornamenti e Vincoli m E possibile specificare il comportamento in caso di aggiornamenti comportamento 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

38 G. Mecca - - 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

39 G. Mecca - - Basi di Dati Aggiornamenti e Vincoli m Aggiornamenti in cascata alternativa a CASCADE: SET NULL m In questo caso nella 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

40 G. Mecca - - 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

41 G. Mecca - - Basi di Dati Schema della Base di Dati m Schema di Base di Dati Tabelle Attributi Domini Vincoli m Altro elemento importante: Viste Strutture di Accesso DBMS Relazionali – Modello Logico >> Dettagli >> Schema

42 G. Mecca - - Basi di Dati Viste m Viste=tabelle virtuali m Le viste fanno parte dello schema m Compongono gli schemi esterni (>>) m Es: esamiSV, una vista sulla tabella Esami DBMS Relazionali – Modello Logico >> Dettagli >> Schema VIEW EsamiSV (matricola integer, corso char(3)); matricolacorso 333PR PR ASD 88888PR INFT EsamiSV

43 G. Mecca - - Basi di Dati Strutture di Accesso m Indici strutture ausiliarie per laccesso al disco componente fondamentale per le prestazioni m Attenzione non fanno parte del modello logico ma del modello fisico sono fondamentali per le prestazioni (>>) quindi è importante che siano noti sono documentati nello schema DBMS Relazionali – Modello Logico >> Dettagli >> Schema

44 G. Mecca - - Basi di Dati Catalogo di Sistema m Tabelle di sistema m Descrivono tutti i dati gestiti dal sistema le basi di dati lo 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

45 G. Mecca - - Basi di Dati Autorizzazioni m Autenticazione del DBMS nomeUtente, password m DBA: DataBase Administrator amministratore del DBMS m Autorizzazioni sulle risorse basi di dati, tabelle e viste: CREATE tabelle: INSERT, DELETE, UPDATE, SELECT DBMS Relazionali – Modello Logico >> Dettagli >> Schema

46 G. Mecca - - Basi di Dati Catalogo di Sistema m Metadati tabelle che descrivono altre tabelle dizionario dei dati m Possono essere acceduti dalle applicazioni come tabelle ordinarie descrizione della base di dati m Il formato non è standard DBMS Relazionali – Modello Logico >> Dettagli >> Schema

47 G. Mecca - - Basi di Dati Catalogo di Sistema m In alcuni casi è completamente visibile (agli utenti autorizzati) es: PgSQL, DB2 m In altri casi è del tutto invisibile es: Access m o visibile solo parzialmente es: MySQL DBMS Relazionali – Modello Logico >> Dettagli >> Schema

48 G. Mecca - - Basi di Dati Il Catalogo di PostgreSQL m Alcune tabelle (in totale più di 10) m pg_database tabella che descrive le basi di dati esistenti m pg_shadow tabella che descrive gli utenti m pg_tables tabella che descrive per ogni bd le tabelle della base di dati (incluse le tabelle di sistema) m pg_attribute tabella che descrive gli attributi di tutte le tabelle DBMS Relazionali – Modello Logico >> Dettagli >> Schema

49 G. Mecca - - 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

50 G. Mecca - - 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

51 G. Mecca - - Basi di Dati Il Catalogo di PostgreSQL pg_attribute attrelid | attname | typname | | tableoid | matricola | codice | nome | docente | | studente | corso... (720 rows) DBMS Relazionali – Modello Logico >> Dettagli >> Schema

52 G. Mecca - - Basi di Dati Linguaggi per BD Relazionali m SQL m Creare utenti e autorizzazioni m Creare lo schema della base di dati Inizializzare la bd (tabelle di sistema) Creare lo schema delle tabelle m Creare listanza della base di dati Inserire, cancellare, modificare le ennuple DBMS Relazionali – Modello Logico >> Dettagli >> Schema

53 G. Mecca - - Basi di Dati Linguaggi per BD Relazionali m Estrarre dati dalle tabelle: Interrogazioni m Esempi: tutti gli studenti (ev. in ordine di nascita) nome dello studente la cui matricola è 1234 nomi degli studenti che hanno sostenuto lesame di analisi nomi degli studenti che hanno avuto 30 dal prof. Pinco DBMS Relazionali – Modello Logico >> Dettagli >> Schema

54 G. Mecca - - Basi di Dati Dettagli e Approfondimenti m Confronto con il Modello Relazionale m Notazione m Dettagli sui vincoli Classificazione e Sintassi Chiavi primarie Gestione dei vincoli di riferimento m Dettagli sullo schema Viste Catalogo DBMS Relazionali – Modello Logico >> Sommario

55 G. Mecca - - Basi di Dati Superchiavi e Chiavi Primarie m Superchiave per R insieme di attributi X tale che non possono esistere in R due ennuple diverse t 1 e t 2 tali che t 1.X=t 2.X es: matricola e nome per Studente, matricola, nome e dataNascita m Chiave per R superchiave minimale di R DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Chiavi

56 G. Mecca - - Basi di Dati Vincoli di Riferimento m Formalizzando tabella R 1, X 1 = PRIMARY KEY tabella R 2, FOREIGN KEY X 2 = REFERENCES R 1 (X 1 ) per ogni valore di i da 1 a k, A i e B i sono dello stesso tipo: tipo(A i ) = tipo(B i ) per ogni ennupla t 2 di R 2, esiste una ennupla t 1 di R 1 tale che t 1.X 1 = t 2.X 2 (per ogni valore i da 1 a k : t 1.A i = t 2.B i ) DBMS Relazionali – Modello Logico >> Dettagli >> Vincoli >> Riferimenti

57 G. Mecca - - Basi di Dati Aggiornamenti a Cascata m E un esempio di regola attiva m 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

58 G. Mecca - - Basi di Dati DBMS Relazionali – Modello Logico >> Dettagli matricolacognomenomedataNascita 333JohnSmith15/06/ PincoPalla01/10/ BrunoPasquale05/07/ PincoPietro01/10/1984 Studenti codicetitolodocente PR1Programmazione IF. Totti ASDAlgoritmi e Str. DatiC. Vieri INFTInformatica TeoricaA. Del Piero Corsi matricolacorsovotolode 333PR127false 77777PR121false 77777ASD20false 88888PR130false 88888INFT30true Esami Base di Dati

59 G. Mecca - - Basi di Dati Termini della Licenza m This work is licensed under the Creative Commons Attribution- ShareAlike License. To view a copy of this license, visit or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. m Questo lavoro viene concesso in uso secondo i termini della licenza Attribution-ShareAlike di Creative Commons. Per ottenere una copia della licenza, è possibile visitare oppure inviare una lettera allindirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.