+ All Categories
Home > Documents > Basi di Dati - statistica.unimib.itdellavedova/didattica/BasiDati/lucidi_DB... · BasidiDati...

Basi di Dati - statistica.unimib.itdellavedova/didattica/BasiDati/lucidi_DB... · BasidiDati...

Date post: 14-Feb-2019
Category:
Upload: doankhue
View: 218 times
Download: 0 times
Share this document with a friend
420
Basi di Dati Gianluca Della Vedova 28 febbraio 2012 Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 1/1
Transcript

Basi di Dati

Gianluca Della Vedova

28 febbraio 2012

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 1 / 1

Gianluca Della Vedova

Basi di Dati

Ufficio U7-244http://[email protected] 6ac2fc1del 28 febbraio 2012

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 2 / 1

Gianluca Della Vedova

Basi di DatiUfficio U7-244

http://[email protected] 6ac2fc1del 28 febbraio 2012

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 2 / 1

Gianluca Della Vedova

Basi di DatiUfficio U7-244http://gianluca.dellavedova.org

[email protected] 6ac2fc1del 28 febbraio 2012

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 2 / 1

Gianluca Della Vedova

Basi di DatiUfficio U7-244http://[email protected]

Revisione 6ac2fc1del 28 febbraio 2012

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 2 / 1

Gianluca Della Vedova

Basi di DatiUfficio U7-244http://[email protected] 6ac2fc1del 28 febbraio 2012

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 2 / 1

Obiettivi

Concetti fondamentali di basi di dati

Basi di dati relazionaliProgettazione concettualeProgettazione logicaSQL

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 3 / 1

Obiettivi

Concetti fondamentali di basi di datiBasi di dati relazionali

Progettazione concettualeProgettazione logicaSQL

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 3 / 1

Obiettivi

Concetti fondamentali di basi di datiBasi di dati relazionaliProgettazione concettuale

Progettazione logicaSQL

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 3 / 1

Obiettivi

Concetti fondamentali di basi di datiBasi di dati relazionaliProgettazione concettualeProgettazione logica

SQL

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 3 / 1

Obiettivi

Concetti fondamentali di basi di datiBasi di dati relazionaliProgettazione concettualeProgettazione logicaSQL

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 3 / 1

Dati - Informazioni

Dati: elementi di informazione che devono essereelaborati

Dati strutturati: elementi aggregati in manieraordinataInformazione: elemento che consente di avereconoscenza di fatti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 4 / 1

Dati - Informazioni

Dati: elementi di informazione che devono essereelaboratiDati strutturati: elementi aggregati in manieraordinata

Informazione: elemento che consente di avereconoscenza di fatti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 4 / 1

Dati - Informazioni

Dati: elementi di informazione che devono essereelaboratiDati strutturati: elementi aggregati in manieraordinataInformazione: elemento che consente di avereconoscenza di fatti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 4 / 1

Dati

Memorizzare dati in file: problemidimensione

condivisionepersistenza, affidabilitàprivatezza,efficienza, efficacia

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 5 / 1

Dati

Memorizzare dati in file: problemidimensionecondivisione

persistenza, affidabilitàprivatezza,efficienza, efficacia

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 5 / 1

Dati

Memorizzare dati in file: problemidimensionecondivisionepersistenza, affidabilità

privatezza,efficienza, efficacia

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 5 / 1

Dati

Memorizzare dati in file: problemidimensionecondivisionepersistenza, affidabilitàprivatezza,

efficienza, efficacia

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 5 / 1

Dati

Memorizzare dati in file: problemidimensionecondivisionepersistenza, affidabilitàprivatezza,efficienza, efficacia

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 5 / 1

Basi di dati

Basi di dati (database): dati organizzati secondo unmodello predeterminato

DBMS (Data Base Management System), strumentiche gestiscono le basi di dati.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 6 / 1

Basi di dati

Basi di dati (database): dati organizzati secondo unmodello predeterminatoDBMS (Data Base Management System), strumentiche gestiscono le basi di dati.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 6 / 1

Schemi - Istanze

Istanze: dati memorizzati nel database

Schemi: caratteristiche dell’istanza che usualmentenon cambiano nel tempo.

Matricola Cognome ⇐= Schema123456 Rossi123457 Verdi ⇐= Istanza

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 7 / 1

Schemi - Istanze

Istanze: dati memorizzati nel databaseSchemi: caratteristiche dell’istanza che usualmentenon cambiano nel tempo.

Matricola Cognome ⇐= Schema123456 Rossi123457 Verdi ⇐= Istanza

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 7 / 1

Schemi - Istanze

Istanze: dati memorizzati nel databaseSchemi: caratteristiche dell’istanza che usualmentenon cambiano nel tempo.

Matricola Cognome ⇐= Schema123456 Rossi123457 Verdi ⇐= Istanza

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 7 / 1

Schemi

schema logico: si utilizza il modello logico perdescrivere l’intero DB.

schema interno: si specificano le strutture datischema esterno: riguarda la specifica di porzioni delDB.Indipendenza fisica

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 8 / 1

Schemi

schema logico: si utilizza il modello logico perdescrivere l’intero DB.schema interno: si specificano le strutture dati

schema esterno: riguarda la specifica di porzioni delDB.Indipendenza fisica

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 8 / 1

Schemi

schema logico: si utilizza il modello logico perdescrivere l’intero DB.schema interno: si specificano le strutture datischema esterno: riguarda la specifica di porzioni delDB.

Indipendenza fisica

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 8 / 1

Schemi

schema logico: si utilizza il modello logico perdescrivere l’intero DB.schema interno: si specificano le strutture datischema esterno: riguarda la specifica di porzioni delDB.Indipendenza fisica

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 8 / 1

Progettazione concettuale

Obiettivi: costruzione di uno schema di DB

Partenza: specifiche informali, elenco delle richieste.Problemi: ottenere un giusto livello di astrazione edessere aderente alle specifiche di partenza.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 9 / 1

Progettazione concettuale

Obiettivi: costruzione di uno schema di DBPartenza: specifiche informali, elenco delle richieste.

Problemi: ottenere un giusto livello di astrazione edessere aderente alle specifiche di partenza.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 9 / 1

Progettazione concettuale

Obiettivi: costruzione di uno schema di DBPartenza: specifiche informali, elenco delle richieste.Problemi: ottenere un giusto livello di astrazione edessere aderente alle specifiche di partenza.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 9 / 1

Raccolta informazioni

Indagine conoscitiva

Passaggio da descrizione informale a descrizioneprecisa e non ambiguaEsplicitazione degli utilizzi massimi e medi previsti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 10 / 1

Raccolta informazioni

Indagine conoscitivaPassaggio da descrizione informale a descrizioneprecisa e non ambigua

Esplicitazione degli utilizzi massimi e medi previsti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 10 / 1

Raccolta informazioni

Indagine conoscitivaPassaggio da descrizione informale a descrizioneprecisa e non ambiguaEsplicitazione degli utilizzi massimi e medi previsti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 10 / 1

Schema concettuale

Desiderata:Correttezza

CompletezzaChiarezzaMinimalità

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 11 / 1

Schema concettuale

Desiderata:CorrettezzaCompletezza

ChiarezzaMinimalità

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 11 / 1

Schema concettuale

Desiderata:CorrettezzaCompletezzaChiarezza

Minimalità

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 11 / 1

Schema concettuale

Desiderata:CorrettezzaCompletezzaChiarezzaMinimalità

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 11 / 1

Esempio 1: DB Universitario

Obiettivo: disegnare un DB che permetta di gestire tuttele informazioni rilevanti per un’università. In particolareanagrafica studenti, docenti e personale non docente,gestione esami e crediti, gestione stipendi.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 12 / 1

Esempio 2: e-commerce

Obiettivo: disegnare un DB che permetta di gestire tuttele informazioni rilevanti per un’azienda che riceve leordinazioni esclusivamente via Internet. Ad esempiowww.amazon.com, www.bn.com.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 13 / 1

Esempio 3: trasporti locali

Obiettivo: disegnare un DB che permetta di gestire tuttele informazioni rilevanti per un’azienda che gestisce unsistema di trasporti terrestri da/per aereoporti.Ad esempio dovranno essere memorizzati i mezzi adisposizione, gli autisti e tutti i viaggi effettuati.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 14 / 1

Richieste

Necessità degli utenti

Cercare di adattarsi alla situazione preesistentePrincipio della minima sorpresa

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 15 / 1

Richieste

Necessità degli utentiCercare di adattarsi alla situazione preesistente

Principio della minima sorpresa

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 15 / 1

Richieste

Necessità degli utentiCercare di adattarsi alla situazione preesistentePrincipio della minima sorpresa

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 15 / 1

Primi passi

Scegliere il livello di astrazione

Scegliere uno standardSemplificare il più possibilema non troppoPorre le basi per una documentazione chiara eduratura.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 16 / 1

Primi passi

Scegliere il livello di astrazioneScegliere uno standard

Semplificare il più possibilema non troppoPorre le basi per una documentazione chiara eduratura.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 16 / 1

Primi passi

Scegliere il livello di astrazioneScegliere uno standardSemplificare il più possibile

ma non troppoPorre le basi per una documentazione chiara eduratura.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 16 / 1

Primi passi

Scegliere il livello di astrazioneScegliere uno standardSemplificare il più possibilema non troppo

Porre le basi per una documentazione chiara eduratura.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 16 / 1

Primi passi

Scegliere il livello di astrazioneScegliere uno standardSemplificare il più possibilema non troppoPorre le basi per una documentazione chiara eduratura.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 16 / 1

Principi della progettazione

Semplicità: il disegno deve essere semplice, sial’implementazione che l’interfaccia.

Correttezza: il disegno deve esser corretto in tutti isuoi aspetti. Non sono ammessi errori.Completezza: il disegno deve coprire tutti i casiragionevolmente attesi. La semplicità non puòinfluenzare troppo la completezza.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 17 / 1

Principi della progettazione

Semplicità: il disegno deve essere semplice, sial’implementazione che l’interfaccia.Correttezza: il disegno deve esser corretto in tutti isuoi aspetti. Non sono ammessi errori.

Completezza: il disegno deve coprire tutti i casiragionevolmente attesi. La semplicità non puòinfluenzare troppo la completezza.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 17 / 1

Principi della progettazione

Semplicità: il disegno deve essere semplice, sial’implementazione che l’interfaccia.Correttezza: il disegno deve esser corretto in tutti isuoi aspetti. Non sono ammessi errori.Completezza: il disegno deve coprire tutti i casiragionevolmente attesi. La semplicità non puòinfluenzare troppo la completezza.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 17 / 1

Principi della progettazione

Consistenza: il disegno deve essere consistente. Ildisegno può essere leggermente più complesso omeno completo al fine di evitare incosistenze. Laconsistenza è importante come la correttezza.

[Richard Gabriel]

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 18 / 1

Principi della progettazione

Se un concetto ha proprietà significative o descriveoggetti con esistenza autonoma, allora deve esserechiaramente distinto

Se possibile descrivere un concetto semplice comeattributo di un altro concettoSe un concetto lega due concetti distinti, si crea unaassociazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 19 / 1

Principi della progettazione

Se un concetto ha proprietà significative o descriveoggetti con esistenza autonoma, allora deve esserechiaramente distintoSe possibile descrivere un concetto semplice comeattributo di un altro concetto

Se un concetto lega due concetti distinti, si crea unaassociazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 19 / 1

Principi della progettazione

Se un concetto ha proprietà significative o descriveoggetti con esistenza autonoma, allora deve esserechiaramente distintoSe possibile descrivere un concetto semplice comeattributo di un altro concettoSe un concetto lega due concetti distinti, si crea unaassociazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 19 / 1

Tecniche di progettazione

Top-down = dal generale al particolare

Bottom-up = dal particolare al generale

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 20 / 1

Tecniche di progettazione

Top-down = dal generale al particolareBottom-up = dal particolare al generale

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 20 / 1

Top-down

Notare che un concetto (complesso) è formato dapiù concetti (più semplici) legati fra loro.

Notare che un concetto (complesso) è formato dapiù concetti (più semplici) distinti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 21 / 1

Top-down

Notare che un concetto (complesso) è formato dapiù concetti (più semplici) legati fra loro.Notare che un concetto (complesso) è formato dapiù concetti (più semplici) distinti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 21 / 1

Top-down

Notare che un’associazione è formata da piùassociazioni.

Notare che un’associazione è meglio descritta da unconcetto autonomo.Individuare nuove caratteristiche dei concetti o delleassociazioni.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 22 / 1

Top-down

Notare che un’associazione è formata da piùassociazioni.Notare che un’associazione è meglio descritta da unconcetto autonomo.

Individuare nuove caratteristiche dei concetti o delleassociazioni.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 22 / 1

Top-down

Notare che un’associazione è formata da piùassociazioni.Notare che un’associazione è meglio descritta da unconcetto autonomo.Individuare nuove caratteristiche dei concetti o delleassociazioni.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 22 / 1

Bottom-up

Notare che alcuni oggetti condividono un concetto.

Notare che esiste un’associazione fra alcune classi dioggetti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 23 / 1

Bottom-up

Notare che alcuni oggetti condividono un concetto.Notare che esiste un’associazione fra alcune classi dioggetti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 23 / 1

Bottom-up

Notare che alcune classi di oggetti distinticondividono delle caratteristiche comuni, macontinuano ad averne altre non condivise.

Notare che alcune caratteristiche possono essereraggruppate in un concetto oppure inun’associazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 24 / 1

Bottom-up

Notare che alcune classi di oggetti distinticondividono delle caratteristiche comuni, macontinuano ad averne altre non condivise.Notare che alcune caratteristiche possono essereraggruppate in un concetto oppure inun’associazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 24 / 1

Confronto

Top-down: si può iniziare anche se non si conosconotutti i dettagli, ma è necessaria una visioned’insieme.

Bottom-up: può essere fatto anche da più persone.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 25 / 1

Confronto

Top-down: si può iniziare anche se non si conosconotutti i dettagli, ma è necessaria una visioned’insieme.Bottom-up: può essere fatto anche da più persone.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 25 / 1

Metodologia

Analisi dei requisiti

Individuare i concetti più importanti.Decomporre i concetti sulla base delle specificheraccolte.Aggiungere nuovi concetti.Assicurarsi che le modifiche siano consistenti con loschema.Verificare la qualità del disegno ottenuto.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 26 / 1

Metodologia

Analisi dei requisitiIndividuare i concetti più importanti.

Decomporre i concetti sulla base delle specificheraccolte.Aggiungere nuovi concetti.Assicurarsi che le modifiche siano consistenti con loschema.Verificare la qualità del disegno ottenuto.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 26 / 1

Metodologia

Analisi dei requisitiIndividuare i concetti più importanti.Decomporre i concetti sulla base delle specificheraccolte.

Aggiungere nuovi concetti.Assicurarsi che le modifiche siano consistenti con loschema.Verificare la qualità del disegno ottenuto.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 26 / 1

Metodologia

Analisi dei requisitiIndividuare i concetti più importanti.Decomporre i concetti sulla base delle specificheraccolte.Aggiungere nuovi concetti.

Assicurarsi che le modifiche siano consistenti con loschema.Verificare la qualità del disegno ottenuto.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 26 / 1

Metodologia

Analisi dei requisitiIndividuare i concetti più importanti.Decomporre i concetti sulla base delle specificheraccolte.Aggiungere nuovi concetti.Assicurarsi che le modifiche siano consistenti con loschema.

Verificare la qualità del disegno ottenuto.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 26 / 1

Metodologia

Analisi dei requisitiIndividuare i concetti più importanti.Decomporre i concetti sulla base delle specificheraccolte.Aggiungere nuovi concetti.Assicurarsi che le modifiche siano consistenti con loschema.Verificare la qualità del disegno ottenuto.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 26 / 1

Modello logico

Gerarchico: esiste una gerarchia fra i vari concettida rappresentare.

RelazionaleOrientato agli oggetti: ogni singolo fatto darappresentare è un oggetto, che gode di proprietàspecifiche e sui cui possono agire alcune azioni.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 27 / 1

Modello logico

Gerarchico: esiste una gerarchia fra i vari concettida rappresentare.Relazionale

Orientato agli oggetti: ogni singolo fatto darappresentare è un oggetto, che gode di proprietàspecifiche e sui cui possono agire alcune azioni.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 27 / 1

Modello logico

Gerarchico: esiste una gerarchia fra i vari concettida rappresentare.RelazionaleOrientato agli oggetti: ogni singolo fatto darappresentare è un oggetto, che gode di proprietàspecifiche e sui cui possono agire alcune azioni.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 27 / 1

Progettazione

Progettazione concettuale: modello formale delproblema, indipendente dalla soluzionecomputazionale

Progettazione logica: soluzione computazionaleindipendente dal modello fisico dei dati.Progettazione fisica: schema fisico dei dati.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 28 / 1

Progettazione

Progettazione concettuale: modello formale delproblema, indipendente dalla soluzionecomputazionaleProgettazione logica: soluzione computazionaleindipendente dal modello fisico dei dati.

Progettazione fisica: schema fisico dei dati.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 28 / 1

Progettazione

Progettazione concettuale: modello formale delproblema, indipendente dalla soluzionecomputazionaleProgettazione logica: soluzione computazionaleindipendente dal modello fisico dei dati.Progettazione fisica: schema fisico dei dati.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 28 / 1

Entità-Relazione

È modello concettuale dei dati

Permette il progetto logicoEntità = oggettiRelazioni = associazioni fra oggetti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 29 / 1

Entità-Relazione

È modello concettuale dei datiPermette il progetto logico

Entità = oggettiRelazioni = associazioni fra oggetti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 29 / 1

Entità-Relazione

È modello concettuale dei datiPermette il progetto logicoEntità = oggetti

Relazioni = associazioni fra oggetti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 29 / 1

Entità-Relazione

È modello concettuale dei datiPermette il progetto logicoEntità = oggettiRelazioni = associazioni fra oggetti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 29 / 1

Entità

Classi di oggetti

Occorrenza di una entità = singolo oggettoEntità

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 30 / 1

Entità

Classi di oggettiOccorrenza di una entità = singolo oggetto

Entità

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 30 / 1

Entità

Classi di oggettiOccorrenza di una entità = singolo oggettoEntità

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 30 / 1

Relazioni

Associazioni concettuali fra classi di oggetti

Occorrenza di una relazione = tupla contenente unoggetto per ogni entità coinvolta

!!!!!!!!aaaaaaaa!!!!!!!!aaaaaaaa Relazione

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 31 / 1

Relazioni

Associazioni concettuali fra classi di oggettiOccorrenza di una relazione = tupla contenente unoggetto per ogni entità coinvolta

!!!!!!!!aaaaaaaa!!!!!!!!aaaaaaaa Relazione

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 31 / 1

Relazioni

Associazioni concettuali fra classi di oggettiOccorrenza di una relazione = tupla contenente unoggetto per ogni entità coinvolta

!!!!!!!!aaaaaaaa!!!!!!!!aaaaaaaa Relazione

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 31 / 1

Relazioni

CorsoStudente Esame

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 32 / 1

Attributi

Componenti elementari di un’entità.

Corso

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 33 / 1

Attributi

Componenti elementari di un’entità.

Corso

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 33 / 1

Attibuti composti

Componenti non elementari di un’entità.

CorsoAttributo Composto

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 34 / 1

Attibuti composti

Componenti non elementari di un’entità.

CorsoAttributo Composto

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 34 / 1

Generalizzazioni

totale se ogni occorrenza dell’entità generale èoccorrenza di una delle entità particolari.

esclusiva se ogni occorrenza dell’entità generale èoccorrenza di al più una delle entità particolari.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 35 / 1

Generalizzazioni

totale se ogni occorrenza dell’entità generale èoccorrenza di una delle entità particolari.esclusiva se ogni occorrenza dell’entità generale èoccorrenza di al più una delle entità particolari.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 35 / 1

Generalizzazioni

Particolare 1

Particolare 1

Generale

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 36 / 1

Esercizio 1: versione 1

Studente

Docente

Corso

sostiene

tiene

Bisogna distinguere il concetto di corso da quello di esame. Si notache docente e studente sono generalizzate da persone.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 37 / 1

Esercizio 1: versione 2

Studente

Docente Esame

Corso

Persona

Sostiene

registra

tiene

Iniziamo a mettere gli attributi. Ogni corso viene ripetuto negli anni,ma con delle modifiche.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 38 / 1

Esercizio 1: versione 3

Studente

Docente Esame

Corso

Corso di studio

Occerrenza del corsoAnno

Aula

Ufficio

Orario ricevimento

Codice

Cognome

Nome

Matricola

Orario

Nome

Durata

Data

Voto

Persona

Data di nascita

Nome

Crediti

Iscritto

Sostiene

frequenta

tiene

registra

si riferisce a

Introduciamo il concetto di Dipartimento e Facoltà, oltre a quello diprova finale per l’ottenimento del titolo.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 39 / 1

Esercizio 1: versione 3

Studente

Docente Esame

Corso

Corso di studio

Occerrenza del corsoAnno

Aula

Ufficio

Orario ricevimento

Codice

Cognome

Nome

Matricola

Orario

Nome

Durata

Data

Voto

Persona

Data di nascita

Nome

Crediti

Iscritto

Sostiene

frequenta

tiene

registra

si riferisce a

Introduciamo il concetto di Dipartimento e Facoltà, oltre a quello diprova finale per l’ottenimento del titolo.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 39 / 1

Esercizio 1: versione 4

Studente

Docente Esame

Corso

Tesi

Stage

Corso di studio

Titolo

Occerrenza del corsoAnno

Aula

VotoResponsabile

Titolo

Ufficio

Orario ricevimento

Codice

Cognome

Nome

Matricola

TitoloDipartimento Facolta’

Nome Nome

Orario

Nome

Durata

Data

Data

Voto

Persona

Data di nascita

Nome

Crediti

afferisce

locata in

organizzaha portato a

ha portato a

afferisce

si riferisce a

si riferisce arelatore

Relatore

correlato

re

Iscritto

Sostiene

frequenta

tiene

registra

po

rta

a

si riferisce a

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 40 / 1

Chiave

Corso

Non chiave

Chiave

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 41 / 1

Chiave con più attibuti

CorsoChiave 1

Chiave 2

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 42 / 1

Chiave esterna

Chiave che coinvolge un’altra entità, collegata tramiteuna relazione.

Anno

crediti

Nome

Orario

AulaOcc. corso

Corso

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 43 / 1

Cardinalità delle relazioni

Una relazione può coinvolgere un numeroprestabilito di occorrenze di una entità.

Un docente afferisce ad un dipartimento e insegnaalmeno un corso. Un dipartimento è formato daalmeno 15 docenti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 44 / 1

Cardinalità delle relazioni

Una relazione può coinvolgere un numeroprestabilito di occorrenze di una entità.Un docente afferisce ad un dipartimento e insegnaalmeno un corso. Un dipartimento è formato daalmeno 15 docenti.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 44 / 1

Cardinalità delle relazioni

Afferisce DipartimentoDocente(1,1) (15,N)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 45 / 1

Cardinalità delle relazioni

Relazione uno ad uno (1, 1) (1, 1)

Relazione uno a molti (1, 1) (1,N)

Relazione molti a molti (0,N) (0,N)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 46 / 1

Cardinalità delle relazioni

Relazione uno ad uno (1, 1) (1, 1)Relazione uno a molti (1, 1) (1,N)

Relazione molti a molti (0,N) (0,N)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 46 / 1

Cardinalità delle relazioni

Relazione uno ad uno (1, 1) (1, 1)Relazione uno a molti (1, 1) (1,N)

Relazione molti a molti (0,N) (0,N)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 46 / 1

Esercizio 2: versione 1

vendita

Fattura Vendita

LibroCliente

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 47 / 1

Commenti

Potrebbe essere interessante effettuare delleinterrogazioni che riguardino l’autore (o gli autori)dei libri.

Devono essere tenuti in considerazione anche gliacquisti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 48 / 1

Commenti

Potrebbe essere interessante effettuare delleinterrogazioni che riguardino l’autore (o gli autori)dei libri.Devono essere tenuti in considerazione anche gliacquisti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 48 / 1

Esercizio 2: versione 2

acquisto

vendita

Fornitore

Cliente Autore

Persone

Libro

Fattura Acquisto

Fattura Vendita

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 49 / 1

Commenti

Determinare gli attributi.

Scegliere i nomi delle relazioni.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 50 / 1

Commenti

Determinare gli attributi.Scegliere i nomi delle relazioni.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 50 / 1

Esercizio 2: versione 3

Casa editrice

Codice

Nome

Cognome

Coidce

Dati

ISBNha scritto

Data

Num. Fattura

acquistato da (1,1)

Q.ta’

Costo unit.

Q.ta’

Costo unit.

acquisto

vendita

Num. Fattura

Data

Consegna

venduto a (1,1)

Fornitore

Cliente Autore

Persone

Libro

Fattura Acquisto

Fattura Vendita

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 51 / 1

Esercizio 3: versione 1

Automezzi Viaggiatori

percorre viaggiaPercorsi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 52 / 1

Commenti

Un viaggio inizia o termina in un aereoporto, ed èformato da una sequenza di luoghi di raccolta (orilascio).

Autisti diversi hanno abilitazioni diverse

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 53 / 1

Commenti

Un viaggio inizia o termina in un aereoporto, ed èformato da una sequenza di luoghi di raccolta (orilascio).Autisti diversi hanno abilitazioni diverse

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 53 / 1

Esercizio 3: versione 2

Viaggiatori

percorre viaggiaTappe

Automezzi

Modello Autista

autorizzato

adiacente

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 54 / 1

Commenti

Mancano gli attributi.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 55 / 1

Relazione

Associazione fra oggetti

Relazione matematicaSiano A, B due insiemi, una relazione binaria èR ⊆ A× B.A, B: domini della relazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 56 / 1

Relazione

Associazione fra oggettiRelazione matematica

Siano A, B due insiemi, una relazione binaria èR ⊆ A× B.A, B: domini della relazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 56 / 1

Relazione

Associazione fra oggettiRelazione matematicaSiano A, B due insiemi, una relazione binaria èR ⊆ A× B.

A, B: domini della relazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 56 / 1

Relazione

Associazione fra oggettiRelazione matematicaSiano A, B due insiemi, una relazione binaria èR ⊆ A× B.A, B: domini della relazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 56 / 1

Esempio di relazione

A={Bianchi, Verdi, Rossi}

B={8 Settembre, 9 Settembre, 10 Settembre}R={(Bianchi, 8 Settembre), (Bianchi, 9Settembre), (Bianchi, 10 Settembre), (Verdi, 9Settembre), (Rossi, 8 Settembre)}

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 57 / 1

Esempio di relazione

A={Bianchi, Verdi, Rossi}B={8 Settembre, 9 Settembre, 10 Settembre}

R={(Bianchi, 8 Settembre), (Bianchi, 9Settembre), (Bianchi, 10 Settembre), (Verdi, 9Settembre), (Rossi, 8 Settembre)}

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 57 / 1

Esempio di relazione

A={Bianchi, Verdi, Rossi}B={8 Settembre, 9 Settembre, 10 Settembre}R={(Bianchi, 8 Settembre), (Bianchi, 9Settembre), (Bianchi, 10 Settembre), (Verdi, 9Settembre), (Rossi, 8 Settembre)}

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 57 / 1

Tabelle

Tabelle: dati organizzati su righe e colonne.

Bianchi 8 SettembreBianchi 9 SettembreBianchi 10 SettembreVerdi 9 SettembreRossi 8 Settembre

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 58 / 1

Tabelle

Tabelle: dati organizzati su righe e colonne.Bianchi 8 SettembreBianchi 9 SettembreBianchi 10 SettembreVerdi 9 SettembreRossi 8 Settembre

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 58 / 1

Tabella

Una tabella è una relazione se non ci sono righeripetute.

Una riga viene detta tuplaUna colonna viene detta attributo.I nomi degli attributi individuano lo schema dellarelazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 59 / 1

Tabella

Una tabella è una relazione se non ci sono righeripetute.Una riga viene detta tupla

Una colonna viene detta attributo.I nomi degli attributi individuano lo schema dellarelazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 59 / 1

Tabella

Una tabella è una relazione se non ci sono righeripetute.Una riga viene detta tuplaUna colonna viene detta attributo.

I nomi degli attributi individuano lo schema dellarelazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 59 / 1

Tabella

Una tabella è una relazione se non ci sono righeripetute.Una riga viene detta tuplaUna colonna viene detta attributo.I nomi degli attributi individuano lo schema dellarelazione.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 59 / 1

Tabelle

Persona Data AppuntamentoBianchi 8 SettembreBianchi 9 SettembreBianchi 10 SettembreVerdi 9 SettembreRossi 8 Settembre

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 60 / 1

Modello relazionale

Schema di relazione = nome della relazione + nomidi attributi

Schema di DB = schemi di relazioni distinteIstanza di relazione = insieme di tuple conformi alloschemaIstanza di DB = insieme di istanze di relazioniconformi allo schema di DB

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 61 / 1

Modello relazionale

Schema di relazione = nome della relazione + nomidi attributiSchema di DB = schemi di relazioni distinte

Istanza di relazione = insieme di tuple conformi alloschemaIstanza di DB = insieme di istanze di relazioniconformi allo schema di DB

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 61 / 1

Modello relazionale

Schema di relazione = nome della relazione + nomidi attributiSchema di DB = schemi di relazioni distinteIstanza di relazione = insieme di tuple conformi alloschema

Istanza di DB = insieme di istanze di relazioniconformi allo schema di DB

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 61 / 1

Modello relazionale

Schema di relazione = nome della relazione + nomidi attributiSchema di DB = schemi di relazioni distinteIstanza di relazione = insieme di tuple conformi alloschemaIstanza di DB = insieme di istanze di relazioniconformi allo schema di DB

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 61 / 1

Schema flessibile

Il modello relazionale consente solo schemi fissati apriori.

Talvolta sarebbe preferibile uno schema più flessibile.Valori nulli o mancanti NULL

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 62 / 1

Schema flessibile

Il modello relazionale consente solo schemi fissati apriori.Talvolta sarebbe preferibile uno schema più flessibile.

Valori nulli o mancanti NULL

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 62 / 1

Schema flessibile

Il modello relazionale consente solo schemi fissati apriori.Talvolta sarebbe preferibile uno schema più flessibile.Valori nulli o mancanti NULL

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 62 / 1

Chiavi

Chiave = insieme di attributi che permettono diidentificare univocamente le tuple della relazione.

Motivazione: indicizzazione delle tabelleChiave banale: l’insieme di tutti gli attributi.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 63 / 1

Chiavi

Chiave = insieme di attributi che permettono diidentificare univocamente le tuple della relazione.Motivazione: indicizzazione delle tabelle

Chiave banale: l’insieme di tutti gli attributi.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 63 / 1

Chiavi

Chiave = insieme di attributi che permettono diidentificare univocamente le tuple della relazione.Motivazione: indicizzazione delle tabelleChiave banale: l’insieme di tutti gli attributi.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 63 / 1

Chiave - Superchiave

Superchiave (o chiave candidata) = insieme K diattributi tale che ∀t1, t2, t1[K ] = t2[K ]⇒ t1 = t2.

Chiave = insieme K di attributi tale che:K è superchiave.Ogni insieme K1 ⊂ K non è superchiave.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 64 / 1

Chiave - Superchiave

Superchiave (o chiave candidata) = insieme K diattributi tale che ∀t1, t2, t1[K ] = t2[K ]⇒ t1 = t2.Chiave = insieme K di attributi tale che:

K è superchiave.Ogni insieme K1 ⊂ K non è superchiave.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 64 / 1

Chiave - Superchiave

Superchiave (o chiave candidata) = insieme K diattributi tale che ∀t1, t2, t1[K ] = t2[K ]⇒ t1 = t2.Chiave = insieme K di attributi tale che:K è superchiave.

Ogni insieme K1 ⊂ K non è superchiave.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 64 / 1

Chiave - Superchiave

Superchiave (o chiave candidata) = insieme K diattributi tale che ∀t1, t2, t1[K ] = t2[K ]⇒ t1 = t2.Chiave = insieme K di attributi tale che:K è superchiave.Ogni insieme K1 ⊂ K non è superchiave.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 64 / 1

Chiavi

Ogni tabella deve avere una chiave.

Definire una chiave per ogni tabella è parte deldisegno di un DB.Tale chiave viene detta primaria e non sono ammessivalori nulli.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 65 / 1

Chiavi

Ogni tabella deve avere una chiave.Definire una chiave per ogni tabella è parte deldisegno di un DB.

Tale chiave viene detta primaria e non sono ammessivalori nulli.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 65 / 1

Chiavi

Ogni tabella deve avere una chiave.Definire una chiave per ogni tabella è parte deldisegno di un DB.Tale chiave viene detta primaria e non sono ammessivalori nulli.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 65 / 1

Vincoli

intrarelazionali: riguardano una sola relazione.

Su un singolo valore.Su una singola tupla.Interessano l’intera relazione (es. esistenza di unachiave primaria).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 66 / 1

Vincoli

intrarelazionali: riguardano una sola relazione.Su un singolo valore.

Su una singola tupla.Interessano l’intera relazione (es. esistenza di unachiave primaria).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 66 / 1

Vincoli

intrarelazionali: riguardano una sola relazione.Su un singolo valore.Su una singola tupla.

Interessano l’intera relazione (es. esistenza di unachiave primaria).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 66 / 1

Vincoli

intrarelazionali: riguardano una sola relazione.Su un singolo valore.Su una singola tupla.Interessano l’intera relazione (es. esistenza di unachiave primaria).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 66 / 1

Vincoli

interrelazionali: coinvolgono più relazioni.

Vincoli di integrità: riguardano due relazioni R1, R2,ed un insieme X di attributi di R1. Tale vincolo èsoddisfatto se ∀t1[X ] ∈ R1, ∃t2 ∈ R2, t.c.t1[X ] = t2[K ] con K chiave di R2.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 67 / 1

Vincoli

interrelazionali: coinvolgono più relazioni.Vincoli di integrità: riguardano due relazioni R1, R2,ed un insieme X di attributi di R1. Tale vincolo èsoddisfatto se ∀t1[X ] ∈ R1, ∃t2 ∈ R2, t.c.t1[X ] = t2[K ] con K chiave di R2.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 67 / 1

Esempio di Vincolo

StudenteMatricola Anagrafica

EsameCorso Data Voto Matr. Studente Docente

Esame=R1, Studente=R2,Matr. Studente=X , Matricola=K .

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 68 / 1

Normalizzazione

Il disegno di un database non è unico

Ma alcuni disegni sono meglio di altri

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 69 / 1

Normalizzazione

Il disegno di un database non è unicoMa alcuni disegni sono meglio di altri

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 69 / 1

Ridondanza

Corso Data Voto Matr Docente2 22.06.2000 27 2 41 20.06.2000 24 2 22 23.06.2000 30 3 4Dipendenza funzionale fra Corso e Docente

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 70 / 1

Problemi

Più tuple devono essere aggiornate per cambiareuna informazione.

Maggiore rischio di fallimento della transizione.Alcune operazioni non sono possibili singolarmente

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 71 / 1

Problemi

Più tuple devono essere aggiornate per cambiareuna informazione.Maggiore rischio di fallimento della transizione.

Alcune operazioni non sono possibili singolarmente

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 71 / 1

Problemi

Più tuple devono essere aggiornate per cambiareuna informazione.Maggiore rischio di fallimento della transizione.Alcune operazioni non sono possibili singolarmente

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 71 / 1

Dipendenza funzionale

Sia R una relazione, e siano X ,Y due sottoinsiemidegli attributi di R , con X ∩ Y = ∅ e X ,Y 6= ∅,

X → Yse t1(X ) = t2(X )⇒ t1(Y ) = t2(Y ).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 72 / 1

Dipendenza funzionale

Sia R una relazione, e siano X ,Y due sottoinsiemidegli attributi di R , con X ∩ Y = ∅ e X ,Y 6= ∅,X → Y

se t1(X ) = t2(X )⇒ t1(Y ) = t2(Y ).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 72 / 1

Dipendenza funzionale

Sia R una relazione, e siano X ,Y due sottoinsiemidegli attributi di R , con X ∩ Y = ∅ e X ,Y 6= ∅,X → Yse t1(X ) = t2(X )⇒ t1(Y ) = t2(Y ).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 72 / 1

Proprietà

Sia R una relazione, K una chiave di R e Y unsottoinsieme degli attributi di R con Y ∩ K = ∅,Y 6= ∅, allora

K → Y

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 73 / 1

Proprietà

Sia R una relazione, K una chiave di R e Y unsottoinsieme degli attributi di R con Y ∩ K = ∅,Y 6= ∅, alloraK → Y

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 73 / 1

Forme normali

Sia R una relazione e siano Xi → Yi le suedipendenze funzionali con Xi ∩ Yi = ∅

R è in forma normale di Boyce e Codd se ogni Xi èsuperchiave di R .

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 74 / 1

Forme normali

Sia R una relazione e siano Xi → Yi le suedipendenze funzionali con Xi ∩ Yi = ∅R è in forma normale di Boyce e Codd se ogni Xi èsuperchiave di R .

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 74 / 1

Normalizzazione

È il processo con cui si ottiene un databaseequivalente, ma dove tutte le relazioni sono in formanormale.

Idea: ogni dipendenza funzionale suggerisce unanuova relazione.Realizzazione: spezzare una relazione in piùrelazioni, in modo da garantire che per ognidipendenza funzionale Xi → Yi , Xi sia superchiave.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 75 / 1

Normalizzazione

È il processo con cui si ottiene un databaseequivalente, ma dove tutte le relazioni sono in formanormale.Idea: ogni dipendenza funzionale suggerisce unanuova relazione.

Realizzazione: spezzare una relazione in piùrelazioni, in modo da garantire che per ognidipendenza funzionale Xi → Yi , Xi sia superchiave.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 75 / 1

Normalizzazione

È il processo con cui si ottiene un databaseequivalente, ma dove tutte le relazioni sono in formanormale.Idea: ogni dipendenza funzionale suggerisce unanuova relazione.Realizzazione: spezzare una relazione in piùrelazioni, in modo da garantire che per ognidipendenza funzionale Xi → Yi , Xi sia superchiave.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 75 / 1

Decomposizione senza perdita

Supponendo di decomporre R in R1 e R2

Inoltre X , X1, X2 sono i rispettivi insiemi di nomidegli attributi delle relazioni.Sia A = X1 ∩ X2, allora la decomposizione è senzaperdita seR = R1(A) on R2(A).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 76 / 1

Decomposizione senza perdita

Supponendo di decomporre R in R1 e R2

Inoltre X , X1, X2 sono i rispettivi insiemi di nomidegli attributi delle relazioni.

Sia A = X1 ∩ X2, allora la decomposizione è senzaperdita seR = R1(A) on R2(A).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 76 / 1

Decomposizione senza perdita

Supponendo di decomporre R in R1 e R2

Inoltre X , X1, X2 sono i rispettivi insiemi di nomidegli attributi delle relazioni.Sia A = X1 ∩ X2, allora la decomposizione è senzaperdita se

R = R1(A) on R2(A).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 76 / 1

Decomposizione senza perdita

Supponendo di decomporre R in R1 e R2

Inoltre X , X1, X2 sono i rispettivi insiemi di nomidegli attributi delle relazioni.Sia A = X1 ∩ X2, allora la decomposizione è senzaperdita seR = R1(A) on R2(A).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 76 / 1

Conservazione delle dipendenze

Per ogni dipendenza funzionale X → Y

deve esistere una relazione che contenga (comeschema) X ∪ Y

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 77 / 1

Conservazione delle dipendenze

Per ogni dipendenza funzionale X → Ydeve esistere una relazione che contenga (comeschema) X ∪ Y

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 77 / 1

Decomposizione Impossibile

Sia R una relazione e sia X → Y .

Se lo schema di R è X ∪ Y allora R non èdecomponibile senza perdita e mantenendo ledipendenze.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 78 / 1

Decomposizione Impossibile

Sia R una relazione e sia X → Y .Se lo schema di R è X ∪ Y allora R non èdecomponibile senza perdita e mantenendo ledipendenze.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 78 / 1

Forme normali

Sia R una relazione e siano Xi → Yi le suedipendenze funzionali con Xi ∩ Yi = ∅

R è in terza forma normale se, per ogni iXi è superchiave di R oppure ogni attributo di Yi ècontenuto in una chiave di R .È sempre possibile decomporre un insieme direlazioni in terza forma normale.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 79 / 1

Forme normali

Sia R una relazione e siano Xi → Yi le suedipendenze funzionali con Xi ∩ Yi = ∅R è in terza forma normale se, per ogni i

Xi è superchiave di R oppure ogni attributo di Yi ècontenuto in una chiave di R .È sempre possibile decomporre un insieme direlazioni in terza forma normale.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 79 / 1

Forme normali

Sia R una relazione e siano Xi → Yi le suedipendenze funzionali con Xi ∩ Yi = ∅R è in terza forma normale se, per ogni iXi è superchiave di R oppure ogni attributo di Yi ècontenuto in una chiave di R .

È sempre possibile decomporre un insieme direlazioni in terza forma normale.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 79 / 1

Forme normali

Sia R una relazione e siano Xi → Yi le suedipendenze funzionali con Xi ∩ Yi = ∅R è in terza forma normale se, per ogni iXi è superchiave di R oppure ogni attributo di Yi ècontenuto in una chiave di R .È sempre possibile decomporre un insieme direlazioni in terza forma normale.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 79 / 1

Algebra relazionale

Linguaggio imperativo (procedurale) diinterrogazioni

Argomenti delle operazioni: relazioniRisultati delle operazioni: relazioniComposizione delle interrogazioni

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 80 / 1

Algebra relazionale

Linguaggio imperativo (procedurale) diinterrogazioniArgomenti delle operazioni: relazioni

Risultati delle operazioni: relazioniComposizione delle interrogazioni

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 80 / 1

Algebra relazionale

Linguaggio imperativo (procedurale) diinterrogazioniArgomenti delle operazioni: relazioniRisultati delle operazioni: relazioni

Composizione delle interrogazioni

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 80 / 1

Algebra relazionale

Linguaggio imperativo (procedurale) diinterrogazioniArgomenti delle operazioni: relazioniRisultati delle operazioni: relazioniComposizione delle interrogazioni

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 80 / 1

Proiezione

Permette di isolare degli attributi di una relazione

Permette di isolare delle colonne di una tabella.Sintassi: πA(R), ProA(R)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 81 / 1

Proiezione

Permette di isolare degli attributi di una relazionePermette di isolare delle colonne di una tabella.

Sintassi: πA(R), ProA(R)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 81 / 1

Proiezione

Permette di isolare degli attributi di una relazionePermette di isolare delle colonne di una tabella.Sintassi: πA(R), ProA(R)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 81 / 1

Proiezione

Persona Data AppuntamentoBianchi 8 SettembreBianchi 9 SettembreBianchi 10 SettembreVerdi 9 SettembreRossi 8 Settembre

πPersona(R)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 82 / 1

Proiezione

Persona Data AppuntamentoBianchi 8 SettembreBianchi 9 SettembreBianchi 10 SettembreVerdi 9 SettembreRossi 8 SettembreπPersona(R)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 82 / 1

Selezione

Permette di isolare delle tuple di una relazione

Permette di isolare delle righe di una tabella.Sintassi: σA=valore(R), SelA=valore(R)

dove A è un attributo di R (a livello di schema) evalore è uno dei possibili valori di A.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 83 / 1

Selezione

Permette di isolare delle tuple di una relazionePermette di isolare delle righe di una tabella.

Sintassi: σA=valore(R), SelA=valore(R)

dove A è un attributo di R (a livello di schema) evalore è uno dei possibili valori di A.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 83 / 1

Selezione

Permette di isolare delle tuple di una relazionePermette di isolare delle righe di una tabella.Sintassi: σA=valore(R), SelA=valore(R)

dove A è un attributo di R (a livello di schema) evalore è uno dei possibili valori di A.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 83 / 1

Selezione

Permette di isolare delle tuple di una relazionePermette di isolare delle righe di una tabella.Sintassi: σA=valore(R), SelA=valore(R)

dove A è un attributo di R (a livello di schema) evalore è uno dei possibili valori di A.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 83 / 1

Selezione

Persona Data AppuntamentoBianchi 8 SettembreBianchi 9 SettembreBianchi 10 SettembreVerdi 9 SettembreRossi 8 SettembreσPersona=Rossi(R)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 84 / 1

Selezione

Persona Data AppuntamentoBianchi 8 SettembreBianchi 9 SettembreBianchi 10 SettembreVerdi 9 SettembreRossi 8 SettembreσPersona=Rossi(R)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 84 / 1

Operazioni insiemistiche

unione di due insiemi

intersezione di due insiemidifferenza di due insiemi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 85 / 1

Operazioni insiemistiche

unione di due insiemiintersezione di due insiemi

differenza di due insiemi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 85 / 1

Operazioni insiemistiche

unione di due insiemiintersezione di due insiemidifferenza di due insiemi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 85 / 1

Unione

Permette di fondere due relazioni conformi

Due relazioni sono conformi se hanno stesso schemaIl risultato ha stesso schema degli argomenti, ecome tuple l’unione (insiemistica) delle tuple degliargomentiSintassi R1 ∪ R2

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 86 / 1

Unione

Permette di fondere due relazioni conformiDue relazioni sono conformi se hanno stesso schema

Il risultato ha stesso schema degli argomenti, ecome tuple l’unione (insiemistica) delle tuple degliargomentiSintassi R1 ∪ R2

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 86 / 1

Unione

Permette di fondere due relazioni conformiDue relazioni sono conformi se hanno stesso schemaIl risultato ha stesso schema degli argomenti, ecome tuple l’unione (insiemistica) delle tuple degliargomenti

Sintassi R1 ∪ R2

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 86 / 1

Unione

Permette di fondere due relazioni conformiDue relazioni sono conformi se hanno stesso schemaIl risultato ha stesso schema degli argomenti, ecome tuple l’unione (insiemistica) delle tuple degliargomentiSintassi R1 ∪ R2

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 86 / 1

Unione

R1Persona Data AppuntamentoBianchi 8 SettembreBianchi 9 Settembre

R2Persona Data AppuntamentoBianchi 9 SettembreVerdi 9 Settembre

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 87 / 1

Unione

R1 ∪ R2Persona Data AppuntamentoBianchi 8 SettembreBianchi 9 SettembreVerdi 9 Settembre

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 88 / 1

Intersezione

Permette di estrarre l’informazione comune a duerelazioni conformi

Due relazioni sono conformi se hanno stesso schemaIl risultato ha stesso schema degli argomenti, ecome tuple l’intersezione (insiemistica) delle tupledegli argomentiSintassi R1 ∩ R2

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 89 / 1

Intersezione

Permette di estrarre l’informazione comune a duerelazioni conformiDue relazioni sono conformi se hanno stesso schema

Il risultato ha stesso schema degli argomenti, ecome tuple l’intersezione (insiemistica) delle tupledegli argomentiSintassi R1 ∩ R2

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 89 / 1

Intersezione

Permette di estrarre l’informazione comune a duerelazioni conformiDue relazioni sono conformi se hanno stesso schemaIl risultato ha stesso schema degli argomenti, ecome tuple l’intersezione (insiemistica) delle tupledegli argomenti

Sintassi R1 ∩ R2

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 89 / 1

Intersezione

Permette di estrarre l’informazione comune a duerelazioni conformiDue relazioni sono conformi se hanno stesso schemaIl risultato ha stesso schema degli argomenti, ecome tuple l’intersezione (insiemistica) delle tupledegli argomentiSintassi R1 ∩ R2

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 89 / 1

Intersezione

R1Persona Data AppuntamentoBianchi 8 SettembreBianchi 9 Settembre

R2Persona Data AppuntamentoBianchi 9 SettembreVerdi 9 Settembre

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 90 / 1

Intersezione

R1 ∩ R2Persona Data AppuntamentoBianchi 9 Settembre

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 91 / 1

Differenza

Permette di estrarre l’informazione unicamentepresente nella prima di due relazioni conformi

Due relazioni sono conformi se hanno stesso schemaIl risultato ha stesso schema degli argomenti, ecome tuple la differenza (insiemistica) delle tupledegli argomenti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 92 / 1

Differenza

Permette di estrarre l’informazione unicamentepresente nella prima di due relazioni conformiDue relazioni sono conformi se hanno stesso schema

Il risultato ha stesso schema degli argomenti, ecome tuple la differenza (insiemistica) delle tupledegli argomenti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 92 / 1

Differenza

Permette di estrarre l’informazione unicamentepresente nella prima di due relazioni conformiDue relazioni sono conformi se hanno stesso schemaIl risultato ha stesso schema degli argomenti, ecome tuple la differenza (insiemistica) delle tupledegli argomenti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 92 / 1

Differenza

Sintassi R1 − R2

La differenza non è commutativa.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 93 / 1

Differenza

Sintassi R1 − R2

La differenza non è commutativa.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 93 / 1

Differenza

R1Persona Data AppuntamentoBianchi 8 SettembreBianchi 9 Settembre

R2Persona Data AppuntamentoBianchi 9 SettembreVerdi 9 Settembre

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 94 / 1

Differenza

R1 − R2Persona Data AppuntamentoBianchi 8 Settembre

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 95 / 1

Ridenominazione

Permette di cambiare un nome di attributo.

Sintassi ρA2→A1(R), RidenomA2→A1(R).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 96 / 1

Ridenominazione

Permette di cambiare un nome di attributo.Sintassi ρA2→A1(R), RidenomA2→A1(R).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 96 / 1

Join

Permette di esaminare due tabelle, sfruttandoinformazioni ivi contenute ed eventuali vincoli diintegrità.

Operatore più importante (e computazionalmentecostoso) per la descrizione di interrogazioni.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 97 / 1

Join

Permette di esaminare due tabelle, sfruttandoinformazioni ivi contenute ed eventuali vincoli diintegrità.Operatore più importante (e computazionalmentecostoso) per la descrizione di interrogazioni.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 97 / 1

Join

Join interno o naturale on (attributi con stessonome)

Join esterno: sinistro, destro, bilateraleEqui Join interno o naturale on (attributi scelti)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 98 / 1

Join

Join interno o naturale on (attributi con stessonome)Join esterno: sinistro, destro, bilaterale

Equi Join interno o naturale on (attributi scelti)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 98 / 1

Join

Join interno o naturale on (attributi con stessonome)Join esterno: sinistro, destro, bilateraleEqui Join interno o naturale on (attributi scelti)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 98 / 1

Join

Date due relazioni R1,R2 ed un attributo A1,A2 perogni relazione, si ottiene una nuova relazioneottenuta fondendo R1 e R2 dove A1 e A2 hannostesso valore.

Sintassi R1(A1) on R2(A2)

R1(A1) on R2(A2) ={t1t2 : t1 ∈ R1, t2 ∈ R2, t1(A1) = t2(A2)}

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 99 / 1

Join

Date due relazioni R1,R2 ed un attributo A1,A2 perogni relazione, si ottiene una nuova relazioneottenuta fondendo R1 e R2 dove A1 e A2 hannostesso valore.Sintassi R1(A1) on R2(A2)

R1(A1) on R2(A2) ={t1t2 : t1 ∈ R1, t2 ∈ R2, t1(A1) = t2(A2)}

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 99 / 1

Join

Date due relazioni R1,R2 ed un attributo A1,A2 perogni relazione, si ottiene una nuova relazioneottenuta fondendo R1 e R2 dove A1 e A2 hannostesso valore.Sintassi R1(A1) on R2(A2)

R1(A1) on R2(A2) ={t1t2 : t1 ∈ R1, t2 ∈ R2, t1(A1) = t2(A2)}

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 99 / 1

Join

Schema di R1(A1) on R2(A2)

Schema di R1 ∪ Schema di R2 - {A1,A2} ∪ {A}

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 100 / 1

Join

Schema di R1(A1) on R2(A2)

Schema di R1 ∪ Schema di R2 - {A1,A2} ∪ {A}

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 100 / 1

Join

R1Matricola Anagrafica1 Rossi Mario2 Verdi Giovanni3 Bianchi Annalisa

R2Corso Data Voto Matr Docente2 22.06.2000 27 2 41 20.06.2000 24 2 22 23.06.2000 30 3 4

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 101 / 1

Join

R1(Matricola)on R2(Matr)M Anagrafica Corso Data Voto Docente2 Verdi Giovanni 2 22.06.2000 27 42 Verdi Giovanni 1 20.06.2000 24 23 Bianchi Annalisa 2 23.06.2000 30 4

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 102 / 1

Join Esterno

R1 onR R2

R1 onL R2

R1 onF R2

Simile al join naturale, ma vengono tenute tutte letuple di una relazione (o di entrambe).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 103 / 1

Join Esterno

R1 onR R2

R1 onL R2

R1 onF R2

Simile al join naturale, ma vengono tenute tutte letuple di una relazione (o di entrambe).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 103 / 1

Join Esterno

R1 onR R2

R1 onL R2

R1 onF R2

Simile al join naturale, ma vengono tenute tutte letuple di una relazione (o di entrambe).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 103 / 1

Join Esterno

R1 onR R2

R1 onL R2

R1 onF R2

Simile al join naturale, ma vengono tenute tutte letuple di una relazione (o di entrambe).

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 103 / 1

Join

Join esterno sinistro: si tengono tutte le tuple di R1.

Join esterno destro: si tengono tutte le tuple di R2.Join esterno completo: si tengono tutte le tuple diR1 e R2.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 104 / 1

Join

Join esterno sinistro: si tengono tutte le tuple di R1.Join esterno destro: si tengono tutte le tuple di R2.

Join esterno completo: si tengono tutte le tuple diR1 e R2.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 104 / 1

Join

Join esterno sinistro: si tengono tutte le tuple di R1.Join esterno destro: si tengono tutte le tuple di R2.Join esterno completo: si tengono tutte le tuple diR1 e R2.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 104 / 1

Join Esterno Sinistro

R1(Matricola)on R2(Matr)M Anagrafica Corso Data Voto Docente1 Rossi Mario NULL NULL NULL NULL2 Verdi Giovanni 2 22.06.2000 27 42 Verdi Giovanni 1 20.06.2000 24 23 Bianchi Annalisa 2 23.06.2000 30 4

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 105 / 1

Join

è commutativa

è associativa

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 106 / 1

Join

è commutativaè associativa

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 106 / 1

Interrogazione

Formula del calcolo relazionale

Espressione dell’algebra relazionale.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 107 / 1

Interrogazione

Formula del calcolo relazionaleEspressione dell’algebra relazionale.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 107 / 1

Passaggio alle relazioni

Entità = Tabella con stessi attributi

Relazione = Tabella con chiavi delle entità coinvolte

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 108 / 1

Passaggio alle relazioni

Entità = Tabella con stessi attributiRelazione = Tabella con chiavi delle entità coinvolte

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 108 / 1

Esempio

CorsoStudente Esame

matricola

cognome

nome

datavoto codice

nome

STUDENTE (Matricola, Nome, Cognome)CORSO (Codice, Nome)ESAME (Studente, Corso, Data, Voto)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 109 / 1

Raffinamento schemi

Rimozione delle ridondanze

Riclassificazione dei concetti (unire o dividereentità/relazioni)Scelta chiave primaria

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 110 / 1

Raffinamento schemi

Rimozione delle ridondanzeRiclassificazione dei concetti (unire o dividereentità/relazioni)

Scelta chiave primaria

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 110 / 1

Raffinamento schemi

Rimozione delle ridondanzeRiclassificazione dei concetti (unire o dividereentità/relazioni)Scelta chiave primaria

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 110 / 1

Riclassificazione

Unire delle entità (legate da generalizzazione)

Trasformare generalizzazione in relazioneEliminazione attributi multivalore

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 111 / 1

Riclassificazione

Unire delle entità (legate da generalizzazione)Trasformare generalizzazione in relazione

Eliminazione attributi multivalore

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 111 / 1

Riclassificazione

Unire delle entità (legate da generalizzazione)Trasformare generalizzazione in relazioneEliminazione attributi multivalore

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 111 / 1

Scelta delle chiavi

Attributi che non ammettono valori nulli

Un attributo che si presume venga utilizzatofrequentemente.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 112 / 1

Scelta delle chiavi

Attributi che non ammettono valori nulliUn attributo che si presume venga utilizzatofrequentemente.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 112 / 1

Progettazione logica

Schema ER

Schema ER raffinatoRelazioni

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 113 / 1

Progettazione logica

Schema ERSchema ER raffinato

Relazioni

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 113 / 1

Progettazione logica

Schema ERSchema ER raffinatoRelazioni

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 113 / 1

Passaggio alle relazioni

Entità = Tabella con stessi attributi

Relazione = Tabella con chiavi delle entità coinvolteRidenominazione per evitare ambiguitàRelazione uno a molti = unica tabella con la primaentitàRelazione uno a uno = come uno a molti, ma puòessere unita sia alla prima che alla seconda entità.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 114 / 1

Passaggio alle relazioni

Entità = Tabella con stessi attributiRelazione = Tabella con chiavi delle entità coinvolte

Ridenominazione per evitare ambiguitàRelazione uno a molti = unica tabella con la primaentitàRelazione uno a uno = come uno a molti, ma puòessere unita sia alla prima che alla seconda entità.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 114 / 1

Passaggio alle relazioni

Entità = Tabella con stessi attributiRelazione = Tabella con chiavi delle entità coinvolteRidenominazione per evitare ambiguità

Relazione uno a molti = unica tabella con la primaentitàRelazione uno a uno = come uno a molti, ma puòessere unita sia alla prima che alla seconda entità.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 114 / 1

Passaggio alle relazioni

Entità = Tabella con stessi attributiRelazione = Tabella con chiavi delle entità coinvolteRidenominazione per evitare ambiguitàRelazione uno a molti = unica tabella con la primaentità

Relazione uno a uno = come uno a molti, ma puòessere unita sia alla prima che alla seconda entità.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 114 / 1

Passaggio alle relazioni

Entità = Tabella con stessi attributiRelazione = Tabella con chiavi delle entità coinvolteRidenominazione per evitare ambiguitàRelazione uno a molti = unica tabella con la primaentitàRelazione uno a uno = come uno a molti, ma puòessere unita sia alla prima che alla seconda entità.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 114 / 1

SQL

Linguaggio di definizione dei dati (DDL): operazionisu schemi

Linguaggio di manipolazione dati (DML): operazionisu istanze, interrogazioni

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 115 / 1

SQL

Linguaggio di definizione dei dati (DDL): operazionisu schemiLinguaggio di manipolazione dati (DML): operazionisu istanze, interrogazioni

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 115 / 1

SQL

Linguaggio procedurale (o imperativo)

Vari standard, SQL-89, SQL-92, SQL-99

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 116 / 1

SQL

Linguaggio procedurale (o imperativo)Vari standard, SQL-89, SQL-92, SQL-99

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 116 / 1

Domini elementari

Carattere:character [varying] (lunghezza)

Bit (0/1):bit [varying] (lunghezza)Numeri: numeric, decimal, integer, float

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 117 / 1

Domini elementari

Carattere:character [varying] (lunghezza)Bit (0/1):bit [varying] (lunghezza)

Numeri: numeric, decimal, integer, float

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 117 / 1

Domini elementari

Carattere:character [varying] (lunghezza)Bit (0/1):bit [varying] (lunghezza)Numeri: numeric, decimal, integer, float

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 117 / 1

Domini elementari

Tempo: date, time

Dati arbitrari: blob, clobVero/Falso: boolean

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 118 / 1

Domini elementari

Tempo: date, timeDati arbitrari: blob, clob

Vero/Falso: boolean

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 118 / 1

Domini elementari

Tempo: date, timeDati arbitrari: blob, clobVero/Falso: boolean

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 118 / 1

Definizione schema

Schema: create schema

Tabella: create tableDominio: create domain

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 119 / 1

Definizione schema

Schema: create schemaTabella: create table

Dominio: create domain

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 119 / 1

Definizione schema

Schema: create schemaTabella: create tableDominio: create domain

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 119 / 1

Creazione tabella

create table persona (ID integer primary key,nome char(20),cognome char(40)

)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 120 / 1

Vincoli intrarelazionali

variabile not null,

variabile unique,unique (variabile1,variabile2)primary key ⇒ not null, unique

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 121 / 1

Vincoli intrarelazionali

variabile not null,variabile unique,

unique (variabile1,variabile2)primary key ⇒ not null, unique

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 121 / 1

Vincoli intrarelazionali

variabile not null,variabile unique,unique (variabile1,variabile2)

primary key ⇒ not null, unique

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 121 / 1

Vincoli intrarelazionali

variabile not null,variabile unique,unique (variabile1,variabile2)primary key ⇒ not null, unique

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 121 / 1

Creazione tabella: default

create table persona (ID integer primary key,nome char(20),secondonome char(20) default null,cognome char(40)

)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 122 / 1

Creazione tabella: not null

create table persona (ID integer primary key,nome char(20),secondonome char(20) default null,cognome char(40) not null

)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 123 / 1

Vincoli integrità

Se non è NULL allora lo stesso valore deve apparirein attributi unique di un’altra tabella.

Un attributo: referencesPiù attributi: foreign key

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 124 / 1

Vincoli integrità

Se non è NULL allora lo stesso valore deve apparirein attributi unique di un’altra tabella.Un attributo: references

Più attributi: foreign key

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 124 / 1

Vincoli integrità

Se non è NULL allora lo stesso valore deve apparirein attributi unique di un’altra tabella.Un attributo: referencesPiù attributi: foreign key

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 124 / 1

Vincoli integrità

on update

on deletecascade, set null, set default, no actionvariabile references var2 on deletecascade

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 125 / 1

Vincoli integrità

on updateon delete

cascade, set null, set default, no actionvariabile references var2 on deletecascade

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 125 / 1

Vincoli integrità

on updateon deletecascade, set null, set default, no action

variabile references var2 on deletecascade

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 125 / 1

Vincoli integrità

on updateon deletecascade, set null, set default, no actionvariabile references var2 on deletecascade

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 125 / 1

Esercizio

Creare le tabelle che seguono, scegliendoopportunamente i domini ed i vincoli:

Esame: ID corso, ID studente, ID docente, voto,data

Corsi: ID corso, nome corso

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 126 / 1

Esercizio

Creare le tabelle che seguono, scegliendoopportunamente i domini ed i vincoli:

Esame: ID corso, ID studente, ID docente, voto,dataCorsi: ID corso, nome corso

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 126 / 1

Soluzione

create table corsi (ID integer primary key,nome varchar(100) not null

)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 127 / 1

Soluzione

create table esame (ID_corso integer not null references corsi(ID),ID_studente integer not null

references studente(ID),ID_docente integer not null

references docente(ID),voto integer not null,data date not null,primary key (ID_corso,ID_studente)

)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 128 / 1

Vincoli intrarelazionali

create table esame (ID_corso integer not null references corsi(ID),ID_studente integer not null

references studente(ID),ID_docente integer not null

references docente(ID),voto integer not null,data date not null,primary key (ID_corso,ID_studente),check (voto >=18 AND voto<=30)

)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 129 / 1

Inserimento dati

INSERT INTO tabella (lista campi)VALUES (lista valori)

INSERT INTO corsi (ID, nome)VALUES (1, ’Inf. Gen.’)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 130 / 1

Aggiornamento dati

Modifica: update

Aggiunta: insert intoRimozione: delete from

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 131 / 1

Aggiornamento dati

Modifica: updateAggiunta: insert into

Rimozione: delete from

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 131 / 1

Aggiornamento dati

Modifica: updateAggiunta: insert intoRimozione: delete from

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 131 / 1

Aggiornamento schemi

Modifica: alter domain, alter table

Aggiunta: add columnRimozione: drop column, drop table

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 132 / 1

Aggiornamento schemi

Modifica: alter domain, alter tableAggiunta: add column

Rimozione: drop column, drop table

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 132 / 1

Aggiornamento schemi

Modifica: alter domain, alter tableAggiunta: add columnRimozione: drop column, drop table

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 132 / 1

Inserimento dati

ALTER TABLE corsi ADD COLUMN anno integer not null

ALTER TABLE corsi ALTER COLUMN anno integerSET DEFAULT 2000

ALTER TABLE corsi RENAME COLUMN anno annoaccademico

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 133 / 1

Indice

CREATE INDEX "nome_indice" ON "tabella(campo)"

CREATE INDEX "anagrafica_indice" ON"persone(cognome, nome)"

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 134 / 1

Interrogazioni in SQL

La definizione dello schema e dei dati è stataimperativa.

La definizione delle interrogazioni è dichiarativa.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 135 / 1

Interrogazioni in SQL

La definizione dello schema e dei dati è stataimperativa.La definizione delle interrogazioni è dichiarativa.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 135 / 1

Interrogazioni in SQL: 1 tabella

select attributifrom tabellawhere condizione

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 136 / 1

Interrogazioni: esempi

create table esami (matricola integer,nome varchar(20),cognome varchar(20),corso varchar(20),voto integer,data date not null,primary key (corso,matricola,data)

)

Il voto è NULL se l’esame è stato fallito.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 137 / 1

Interrogazioni: esempi

Tutte le tuple (e tutti i campi) della tabella:

SELECT *FROM esami

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 138 / 1

Interrogazioni: esempi

Tutte le tuple, ma solo nome e cognome, della tabella:

SELECT nome, cognomeFROM esami

Sono possibili righe ripetute

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 139 / 1

Interrogazioni: esempi

Tutte le tuple, ma solo nome e cognome, della tabella:

SELECT DISTINCT nome, cognomeFROM esami

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 140 / 1

Interrogazioni: esempi

Tutte le tuple, ma solo nome e cognome e voto su 110:

SELECT nome, cognome, voto*11/3 AS voto110FROM esami

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 141 / 1

Interrogazioni: esempi

Tutte le tuple, ma solo nome e cognome, della tabella:

SELECT DISTINCT nome, cognomeFROM esami

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 142 / 1

Interrogazioni: esempi

Nome e cognome di chi ha sostenuto Inf. Gen.

SELECT nome, cognomeFROM esamiWHERE corso = ’Inf. Gen.’

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 143 / 1

Interrogazioni: esempi

Quanti hanno sostenuto Inf. Gen.

SELECT COUNT(*)FROM esamiWHERE corso = ’Inf. Gen.’

Altre funzioni sono: MIN, MAX, SUM, AVG

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 144 / 1

Interrogazioni: esempi

Nome e cognome di chi ha preso almeno 27 in Inf. Gen.

SELECT nome, cognomeFROM esamiWHERE corso=’Inf. Gen.’ AND voto>=27

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 145 / 1

Interrogazioni: esempi

Nome e cognome di chi ha fallito almeno una volta Inf.Gen.

SELECT nome, cognomeFROM esamiWHERE corso=’Inf. Gen.’ AND

voto IS NULL

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 146 / 1

Viste

Una vista è una tabella virtuale.

CREATE VIEWvista_esami(nome, cognome) ASSELECT nome, cognomeFROM esamiWHERE corso = ’Inf. Gen.’

AND voto>=27

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 147 / 1

Interrogazioni: 2 tabelle

create table studenti (matricola integer primary key,nome varchar(20),cognome varchar(20)

)

create table esami (ID_studente integer references studenti(matricola),corso varchar(20),voto integer,data date not null,primary key (corso,matricola,data)

)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 148 / 1

Interrogazione su 2 tabelle

Nome e cognome di chi ha sostenuto Inf. Gen.

SELECT nome, cognomeFROM studenti JOIN esamiON studenti.matricola=esami.ID_studenteWHERE corso = ’Inf. Gen.’

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 149 / 1

Interrogazione su 2 tabelle

Situazione di ogni studente per quanto riguarda Inf. Gen.

SELECT nome, cognomeFROM studenti LEFT JOIN esamiON studenti.matricola=esami.ID_studenteWHERE corso = ’Inf. Gen.’

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 150 / 1

Tipi Join

Interno: JOIN

Esterno sinistro: LEFT JOINEsterno destro: RIGHT JOINEsterno completo: FULL JOIN

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 151 / 1

Tipi Join

Interno: JOINEsterno sinistro: LEFT JOIN

Esterno destro: RIGHT JOINEsterno completo: FULL JOIN

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 151 / 1

Tipi Join

Interno: JOINEsterno sinistro: LEFT JOINEsterno destro: RIGHT JOIN

Esterno completo: FULL JOIN

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 151 / 1

Tipi Join

Interno: JOINEsterno sinistro: LEFT JOINEsterno destro: RIGHT JOINEsterno completo: FULL JOIN

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 151 / 1

Opzioni aggiuntive query

GROUP BY permette di raggruppare rispetto ad uninsieme di attributi

HAVING simile a clausola WHERE

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 152 / 1

Opzioni aggiuntive query

GROUP BY permette di raggruppare rispetto ad uninsieme di attributiHAVING simile a clausola WHERE

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 152 / 1

Esempio

Quanti esami ha sostenuto ogni studente?

SELECT matricola, nome, cognome, count(*)FROM studenti JOIN esamiON studenti.matricola=esami.ID_studenteGROUP BY matricola

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 153 / 1

Esempio

Chi ha superato almeno 10 esami?

SELECT matricola, nome, cognomeFROM studenti JOIN esamiON studenti.matricola=esami.ID_studenteWHERE voto IS NOT NULLGROUP BY matricolaHAVING count(*)>=10

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 154 / 1

Subselect

La clausola where contiene una o più condizioni.

Un membro della condizione può contenere unaSELECTCostrutti ANY, NOT IN, EXISTS

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 155 / 1

Subselect

La clausola where contiene una o più condizioni.Un membro della condizione può contenere unaSELECT

Costrutti ANY, NOT IN, EXISTS

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 155 / 1

Subselect

La clausola where contiene una o più condizioni.Un membro della condizione può contenere unaSELECTCostrutti ANY, NOT IN, EXISTS

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 155 / 1

Subselect: any

Mostrare ogni esame sostenuto da chi si chiama Rossi

SELECT ID_studente, voto, corsoFROM studenti, esamiWHERE ID_studente = ANY

(SELECT studenti.matricolaFROM studentiWHERE cognome=’Rossi’)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 156 / 1

Subselect: all

Chi ha ottenuto il voto massimo in Inf. Gen.?

SELECT nome, cognomeFROM studenti JOIN esami ON

esami.ID_studente = studenti.matricolaHAVING esami.voto >= ALL

(SELECT max (voto)FROM esamiWHERE corso=’Inf.Gen.’)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 157 / 1

Subselect: not in

Chi ha superato Inf. Gen., ma non Matematica I?

SELECT nome, cognomeFROM studenti JOIN esami ON

esami.ID_studente = studenti.matricolaWHERE corso=’Matematica I’ AND voto

IS NOT NULL AND esami.ID_studente NOT IN(SELECT ID_studenteFROM esamiWHERE corso=’Matematica I’ AND voto IS NOT NULL)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 158 / 1

Alias

FROM Tabella T1, Tabella T2T1, T2 sono due copie distinte di Tabella

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 159 / 1

Select con variabili

Chi ha superato Inf. Gen., ma non Matematica I?

SELECT nome, cognomeFROM studenti S JOIN esami E ON

E.ID_studente = S.matricolaWHERE corso=’Matematica I’ AND voto

IS NOT NULL AND E.ID_studente NOT IN(SELECT ID_studenteFROM esamiWHERE corso=’Matematica I’ AND voto IS NOT NULL)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 160 / 1

EsercizioChi è l’autore più venduto dello scorso mese diNovembre?

CREATE VIEWvista_autori (id_persona,nome,cognome, copie) AS

SELECT DISTINCT id_persona,nome,cognome, sum(numero)

FROM autore, ha_scritto, libro, vendite, fatture_venditeWHERE autore.id_persona=ha_scritto.autore AND

ha_scritto.libro = libro.ISBN ANDlibro.ISBN=vendita.libro ANDvendita.fattura=fattura.numero ANDfattura.data>=’ 01/11/2001’ AND

fattura.data<=’ 30/11/2001’

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 161 / 1

Esercizio

Chi è l’autore più venduto dello scorso mese diNovembre?

SELECT id_persona,nome,cognome, copieFROM vista_autoriWHERE copie >= ALL(SELECT copieFROM vista_autori)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 162 / 1

Ordinamento - Ricerca

L’opzione ORDER BY ordina

L’operatore LIKE permette una ricerca testuale

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 163 / 1

Ordinamento - Ricerca

L’opzione ORDER BY ordinaL’operatore LIKE permette una ricerca testuale

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 163 / 1

Trigger

Evento: modifica, inserimento o cancellazione

CondizioneAzione: da intraprendere sulla base di dati

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 164 / 1

Trigger

Evento: modifica, inserimento o cancellazioneCondizione

Azione: da intraprendere sulla base di dati

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 164 / 1

Trigger

Evento: modifica, inserimento o cancellazioneCondizioneAzione: da intraprendere sulla base di dati

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 164 / 1

Sintassi Trigger

CREATE TRIGGER nomeAFTER|BEFORE azioneON tabellaFOR EACH ROW|STATEMENTistruzioni da eseguire

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 165 / 1

Trigger: sintassi II

AFTER|BEFORE: indica se l’azione del trigger vengaprima o dopo l’evento.

FOR EACH ROW|STATEMENT: l’azione del triggerdeve essere eseguita una sola volta o per ogni tuplainteressataazione può essere INSERT, UPDATE o DELETE.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 166 / 1

Trigger: sintassi II

AFTER|BEFORE: indica se l’azione del trigger vengaprima o dopo l’evento.FOR EACH ROW|STATEMENT: l’azione del triggerdeve essere eseguita una sola volta o per ogni tuplainteressata

azione può essere INSERT, UPDATE o DELETE.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 166 / 1

Trigger: sintassi II

AFTER|BEFORE: indica se l’azione del trigger vengaprima o dopo l’evento.FOR EACH ROW|STATEMENT: l’azione del triggerdeve essere eseguita una sola volta o per ogni tuplainteressataazione può essere INSERT, UPDATE o DELETE.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 166 / 1

Trigger: variabili

Alcune variabili sono predefinite:old: la riga interessata, prima dell’evento.

new: la riga interessata, dopo l’evento.old_table: la tabella interessata, primadell’evento.new_table: la tabella interessata, dopo l’evento.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 167 / 1

Trigger: variabili

Alcune variabili sono predefinite:old: la riga interessata, prima dell’evento.new: la riga interessata, dopo l’evento.

old_table: la tabella interessata, primadell’evento.new_table: la tabella interessata, dopo l’evento.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 167 / 1

Trigger: variabili

Alcune variabili sono predefinite:old: la riga interessata, prima dell’evento.new: la riga interessata, dopo l’evento.old_table: la tabella interessata, primadell’evento.

new_table: la tabella interessata, dopo l’evento.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 167 / 1

Trigger: variabili

Alcune variabili sono predefinite:old: la riga interessata, prima dell’evento.new: la riga interessata, dopo l’evento.old_table: la tabella interessata, primadell’evento.new_table: la tabella interessata, dopo l’evento.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 167 / 1

Sicurezza

Più utenti possono accedere alla base di dati.

Il DBMS deve avere il concetto di utenteCREATE USER, DROP USER

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 168 / 1

Sicurezza

Più utenti possono accedere alla base di dati.Il DBMS deve avere il concetto di utente

CREATE USER, DROP USER

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 168 / 1

Sicurezza

Più utenti possono accedere alla base di dati.Il DBMS deve avere il concetto di utenteCREATE USER, DROP USER

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 168 / 1

Controllo accesso

Concedere la possibilità di scrivere o leggere tabelleo database: GRANT

Togliere la possibilità di scrivere o leggere tabelle odatabase: REVOKEOgni azione considere i permessi di lettura (READ),inserimento (INSERT), aggiornamento (UPDATE),cancellazione (DELETE)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 169 / 1

Controllo accesso

Concedere la possibilità di scrivere o leggere tabelleo database: GRANTTogliere la possibilità di scrivere o leggere tabelle odatabase: REVOKE

Ogni azione considere i permessi di lettura (READ),inserimento (INSERT), aggiornamento (UPDATE),cancellazione (DELETE)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 169 / 1

Controllo accesso

Concedere la possibilità di scrivere o leggere tabelleo database: GRANTTogliere la possibilità di scrivere o leggere tabelle odatabase: REVOKEOgni azione considere i permessi di lettura (READ),inserimento (INSERT), aggiornamento (UPDATE),cancellazione (DELETE)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 169 / 1

Transazioni

Sequenza di operazioni: una operazione virtuale

ACID: Atomicità, Consistenza, Isolazione,Persistenza.BEGINCOMMITOgni transazione completa con successo o fallisce

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 170 / 1

Transazioni

Sequenza di operazioni: una operazione virtualeACID: Atomicità, Consistenza, Isolazione,Persistenza.

BEGINCOMMITOgni transazione completa con successo o fallisce

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 170 / 1

Transazioni

Sequenza di operazioni: una operazione virtualeACID: Atomicità, Consistenza, Isolazione,Persistenza.BEGIN

COMMITOgni transazione completa con successo o fallisce

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 170 / 1

Transazioni

Sequenza di operazioni: una operazione virtualeACID: Atomicità, Consistenza, Isolazione,Persistenza.BEGINCOMMIT

Ogni transazione completa con successo o fallisce

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 170 / 1

Transazioni

Sequenza di operazioni: una operazione virtualeACID: Atomicità, Consistenza, Isolazione,Persistenza.BEGINCOMMITOgni transazione completa con successo o fallisce

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 170 / 1

Transazione

Una transazione è una operazione elementare(lettura/scrittura) sulla base di dati

Una transazione deve essere Atomica, Consistente,Isolata, Definitiva (Persistente)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 171 / 1

Transazione

Una transazione è una operazione elementare(lettura/scrittura) sulla base di datiUna transazione deve essere Atomica, Consistente,Isolata, Definitiva (Persistente)

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 171 / 1

Locking

Si evitano accessi (in scrittura) contemporaneiammettendo un solo client alla scrittura dei datiinteressanti.

Table locking: ogni volta che bisogna modificare undato, tutta la tabella viene riservata.

Row locking: quando si modifica un dato, la tuplainteressata viene riservata.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 172 / 1

Locking

Si evitano accessi (in scrittura) contemporaneiammettendo un solo client alla scrittura dei datiinteressanti.

Table locking: ogni volta che bisogna modificare undato, tutta la tabella viene riservata.Row locking: quando si modifica un dato, la tuplainteressata viene riservata.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 172 / 1

Contronto Lock

Table locking: per scrivere potrebbe esserenecessario attendere più a lungo.

Row locking: interrrogazioni complesse in letturapotrebbero essere influenzate da una scrittura (es.somma dei valori in una colonna). Due alternative,modificare il risultato dell’interrogazione o ritardarela scrittura.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 173 / 1

Contronto Lock

Table locking: per scrivere potrebbe esserenecessario attendere più a lungo.Row locking: interrrogazioni complesse in letturapotrebbero essere influenzate da una scrittura (es.somma dei valori in una colonna). Due alternative,modificare il risultato dell’interrogazione o ritardarela scrittura.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 173 / 1

Stati della transazione

Begin: segnala l’inizio della transizione

Commit: la transazione è stata completata consuccessoAbort: la transazione non è completabile

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 174 / 1

Stati della transazione

Begin: segnala l’inizio della transizioneCommit: la transazione è stata completata consuccesso

Abort: la transazione non è completabile

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 174 / 1

Stati della transazione

Begin: segnala l’inizio della transizioneCommit: la transazione è stata completata consuccessoAbort: la transazione non è completabile

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 174 / 1

Gestione transazioni

La transazione può fallire a causa di conflitti oproblemi esterni

File di log (registro operazioni)Scrivere sul registro prima di iniziare l’operazione.Scrivere sul registro prima di completarel’operazione.Protocollo di commit a due (o più) fasi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 175 / 1

Gestione transazioni

La transazione può fallire a causa di conflitti oproblemi esterniFile di log (registro operazioni)

Scrivere sul registro prima di iniziare l’operazione.Scrivere sul registro prima di completarel’operazione.Protocollo di commit a due (o più) fasi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 175 / 1

Gestione transazioni

La transazione può fallire a causa di conflitti oproblemi esterniFile di log (registro operazioni)Scrivere sul registro prima di iniziare l’operazione.

Scrivere sul registro prima di completarel’operazione.Protocollo di commit a due (o più) fasi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 175 / 1

Gestione transazioni

La transazione può fallire a causa di conflitti oproblemi esterniFile di log (registro operazioni)Scrivere sul registro prima di iniziare l’operazione.Scrivere sul registro prima di completarel’operazione.

Protocollo di commit a due (o più) fasi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 175 / 1

Gestione transazioni

La transazione può fallire a causa di conflitti oproblemi esterniFile di log (registro operazioni)Scrivere sul registro prima di iniziare l’operazione.Scrivere sul registro prima di completarel’operazione.Protocollo di commit a due (o più) fasi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 175 / 1

Commit a 2 fasi

Si elegge un coordinatore che:1 invia a tutti i partecipanti VOTE REQUEST

2 attende i voti dei partecipanti3 se tutti i voti sono YES allora invia COMMIT a tutti4 altrimenti invia ABORT a tutti5 Se si incorre in timeout invia ABORT a tutti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 176 / 1

Commit a 2 fasi

Si elegge un coordinatore che:1 invia a tutti i partecipanti VOTE REQUEST2 attende i voti dei partecipanti

3 se tutti i voti sono YES allora invia COMMIT a tutti4 altrimenti invia ABORT a tutti5 Se si incorre in timeout invia ABORT a tutti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 176 / 1

Commit a 2 fasi

Si elegge un coordinatore che:1 invia a tutti i partecipanti VOTE REQUEST2 attende i voti dei partecipanti3 se tutti i voti sono YES allora invia COMMIT a tutti

4 altrimenti invia ABORT a tutti5 Se si incorre in timeout invia ABORT a tutti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 176 / 1

Commit a 2 fasi

Si elegge un coordinatore che:1 invia a tutti i partecipanti VOTE REQUEST2 attende i voti dei partecipanti3 se tutti i voti sono YES allora invia COMMIT a tutti4 altrimenti invia ABORT a tutti

5 Se si incorre in timeout invia ABORT a tutti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 176 / 1

Commit a 2 fasi

Si elegge un coordinatore che:1 invia a tutti i partecipanti VOTE REQUEST2 attende i voti dei partecipanti3 se tutti i voti sono YES allora invia COMMIT a tutti4 altrimenti invia ABORT a tutti5 Se si incorre in timeout invia ABORT a tutti

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 176 / 1

Commit a 2 fasi

Ogni partecipante:1 attende VOTE REQUEST

2 invia il proprio voto al coordinatore3 se il voto è NO allora ABORT4 altrimenti attende la decisione dal coordinatore5 esegue la decisione ABORT6 Se si incorre in timeout ABORT

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 177 / 1

Commit a 2 fasi

Ogni partecipante:1 attende VOTE REQUEST2 invia il proprio voto al coordinatore

3 se il voto è NO allora ABORT4 altrimenti attende la decisione dal coordinatore5 esegue la decisione ABORT6 Se si incorre in timeout ABORT

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 177 / 1

Commit a 2 fasi

Ogni partecipante:1 attende VOTE REQUEST2 invia il proprio voto al coordinatore3 se il voto è NO allora ABORT

4 altrimenti attende la decisione dal coordinatore5 esegue la decisione ABORT6 Se si incorre in timeout ABORT

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 177 / 1

Commit a 2 fasi

Ogni partecipante:1 attende VOTE REQUEST2 invia il proprio voto al coordinatore3 se il voto è NO allora ABORT4 altrimenti attende la decisione dal coordinatore

5 esegue la decisione ABORT6 Se si incorre in timeout ABORT

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 177 / 1

Commit a 2 fasi

Ogni partecipante:1 attende VOTE REQUEST2 invia il proprio voto al coordinatore3 se il voto è NO allora ABORT4 altrimenti attende la decisione dal coordinatore5 esegue la decisione ABORT

6 Se si incorre in timeout ABORT

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 177 / 1

Commit a 2 fasi

Ogni partecipante:1 attende VOTE REQUEST2 invia il proprio voto al coordinatore3 se il voto è NO allora ABORT4 altrimenti attende la decisione dal coordinatore5 esegue la decisione ABORT6 Se si incorre in timeout ABORT

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 177 / 1

OLTP - OLAP

OLTP On Line Transaction Processing: i dati sonoaggiornati continuamente, stato attuale dei dati

OLAP On Line Analytical Processing: dedicatoall’analisi dei dati, utilizzo dei dati storici

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 178 / 1

OLTP - OLAP

OLTP On Line Transaction Processing: i dati sonoaggiornati continuamente, stato attuale dei datiOLAP On Line Analytical Processing: dedicatoall’analisi dei dati, utilizzo dei dati storici

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 178 / 1

Data Warehouse

Dati integrati, provenienza eterogenea

Dati StoriciDati aggregati, più tuple del DB vengono accorpateSeparato dal DB, su un’altra macchina.Aggiornamento periodico, non in sincronia col DB

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 179 / 1

Data Warehouse

Dati integrati, provenienza eterogeneaDati Storici

Dati aggregati, più tuple del DB vengono accorpateSeparato dal DB, su un’altra macchina.Aggiornamento periodico, non in sincronia col DB

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 179 / 1

Data Warehouse

Dati integrati, provenienza eterogeneaDati StoriciDati aggregati, più tuple del DB vengono accorpate

Separato dal DB, su un’altra macchina.Aggiornamento periodico, non in sincronia col DB

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 179 / 1

Data Warehouse

Dati integrati, provenienza eterogeneaDati StoriciDati aggregati, più tuple del DB vengono accorpateSeparato dal DB, su un’altra macchina.

Aggiornamento periodico, non in sincronia col DB

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 179 / 1

Data Warehouse

Dati integrati, provenienza eterogeneaDati StoriciDati aggregati, più tuple del DB vengono accorpateSeparato dal DB, su un’altra macchina.Aggiornamento periodico, non in sincronia col DB

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 179 / 1

Data Warehouse

1 Sorgente dei dati, i dati ottenuti devono essere puliti

2 Data Warehouse server3 ETL, Extraction, Transformation, Loading. Comepassare dalla sorgente dei dati al DW server

4 Strumenti di analisi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 180 / 1

Data Warehouse

1 Sorgente dei dati, i dati ottenuti devono essere puliti2 Data Warehouse server

3 ETL, Extraction, Transformation, Loading. Comepassare dalla sorgente dei dati al DW server

4 Strumenti di analisi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 180 / 1

Data Warehouse

1 Sorgente dei dati, i dati ottenuti devono essere puliti2 Data Warehouse server3 ETL, Extraction, Transformation, Loading. Comepassare dalla sorgente dei dati al DW server

4 Strumenti di analisi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 180 / 1

Data Warehouse

1 Sorgente dei dati, i dati ottenuti devono essere puliti2 Data Warehouse server3 ETL, Extraction, Transformation, Loading. Comepassare dalla sorgente dei dati al DW server

4 Strumenti di analisi

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 180 / 1

Modello multidimensionale

Fatto, cosa si vuole misurare

Dimensione, una variabile analizzataMisura, valutazione di un fatto. Numero

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 181 / 1

Modello multidimensionale

Fatto, cosa si vuole misurareDimensione, una variabile analizzata

Misura, valutazione di un fatto. Numero

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 181 / 1

Modello multidimensionale

Fatto, cosa si vuole misurareDimensione, una variabile analizzataMisura, valutazione di un fatto. Numero

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 181 / 1

Esempio

Dati di vendita di un supermercato, aggregati per puntodi vendita e giorno.

Fatto: vendite

Dimensioni: Giorno, punto di vendita, prodotto,marca, . . .Misura, valutazione di un fatto. Numero

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 182 / 1

Esempio

Dati di vendita di un supermercato, aggregati per puntodi vendita e giorno.

Fatto: venditeDimensioni: Giorno, punto di vendita, prodotto,marca, . . .

Misura, valutazione di un fatto. Numero

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 182 / 1

Esempio

Dati di vendita di un supermercato, aggregati per puntodi vendita e giorno.

Fatto: venditeDimensioni: Giorno, punto di vendita, prodotto,marca, . . .Misura, valutazione di un fatto. Numero

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 182 / 1

DW nel modello relazionale

Schema a stella

tabella dei fatti, centrale e normalizzata, chiave =insiemi vincoli di integritàtabelle delle dimensioni, periferiche, nonnormalizzate, chiave di un attributocostruzione di tutti gli indici possibili

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 183 / 1

DW nel modello relazionale

Schema a stellatabella dei fatti, centrale e normalizzata, chiave =insiemi vincoli di integrità

tabelle delle dimensioni, periferiche, nonnormalizzate, chiave di un attributocostruzione di tutti gli indici possibili

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 183 / 1

DW nel modello relazionale

Schema a stellatabella dei fatti, centrale e normalizzata, chiave =insiemi vincoli di integritàtabelle delle dimensioni, periferiche, nonnormalizzate, chiave di un attributo

costruzione di tutti gli indici possibili

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 183 / 1

DW nel modello relazionale

Schema a stellatabella dei fatti, centrale e normalizzata, chiave =insiemi vincoli di integritàtabelle delle dimensioni, periferiche, nonnormalizzate, chiave di un attributocostruzione di tutti gli indici possibili

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 183 / 1

Licenza d’usoQuest’opera è soggetta alla licenza Creative Commons:Attribuzione-Condividi allo stesso modo 3.0.http://creativecommons.org/licenses/by-sa/3.0/Sei libero di riprodurre, distribuire, comunicare al pubblico, esporrein pubblico, rappresentare, eseguire, recitare e modificarequest’opera alle seguenti condizioni:

Attribuzione — Devi attribuire la paternità dell’opera nei modiindicati dall’autore o da chi ti ha dato l’opera in licenza e inmodo tale da non suggerire che essi avallino te o il modo in cuitu usi l’opera.

Condividi allo stesso modo — Se alteri o trasformi quest’opera,o se la usi per crearne un’altra, puoi distribuire l’operarisultante solo con una licenza identica o equivalente a questa.

Gianluca Della Vedova () Basi di Dati 28 febbraio 2012 184 / 1


Recommended