Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
lo scopo di una Base di Dati (BD) è quello di memorizzare informazioni in modo strutturato e di permetterne la modifica e il reperimento da parte di utenti e applicazioni lo scopo di una Base di Dati (BD) è quello di memorizzare informazioni in modo strutturato e di permetterne la modifica e il reperimento da parte di utenti e applicazioni Basi di Dati usiamo quotidianamente le BD quando: usiamo quotidianamente le BD quando: –accediamo al Sistema Informativo della azienda o istituzione in cui lavoriamo –accediamo al nostro conto corrente via Internet –prenotiamo un volo o albergo via Internet
al fine di assolvere efficacemente al compito di memorizzazione, la BD: al fine di assolvere efficacemente al compito di memorizzazione, la BD: Memorizzazione dei Dati –può memorizzare grandi quantità di dati (scalabilità) –utilizza la memoria secondaria (persistenza) –può duplicare/archiviare (alcuni) dati su più dispositivi di memoria secondaria (affidabilità) –permette un accesso controllato (sicurezza) –permette di specificare vincoli di integrità che aiutino a mantenere consistenti le informazioni
al fine di assolvere efficacemente al compito di manipolazione, la Base Dati: al fine di assolvere efficacemente al compito di manipolazione, la Base Dati: Manipolazione dei Dati –permette laccesso agli stessi dati da parte di molti utenti, anche contemporaneamente (concorrenza) –permette di reperire/modificare le informazioni desiderate per mezzo di potenti linguaggi di interrogazione
un Data Base Management System (DBMS) è una applicazione che permette di creare e gestire delle Basi di Dati un Data Base Management System (DBMS) è una applicazione che permette di creare e gestire delle Basi di Dati DBMS leffettivo utilizzo delle BD avviene invece per mezzo di applicativi che sfruttano il DBMS per accedere alle BD stesse leffettivo utilizzo delle BD avviene invece per mezzo di applicativi che sfruttano il DBMS per accedere alle BD stesse
DBMS Applicazione DBMS DB Utente DB
il DBMS realizza una separazione tra Base Dati e le applicazioni che la utilizzano il DBMS realizza una separazione tra Base Dati e le applicazioni che la utilizzano DBMS la struttura della BD, invece, tende a essere molto stabile (es. tipi di informazioni con cui descriviamo una prenotazione) la struttura della BD, invece, tende a essere molto stabile (es. tipi di informazioni con cui descriviamo una prenotazione) il contenuto della BD varia normalmente molto spesso (es. prenotazioni di voli) il contenuto della BD varia normalmente molto spesso (es. prenotazioni di voli) le applicazioni che utilizzano la BD variano normalmente meno frequentemente del suo contenuto e più della sua struttura le applicazioni che utilizzano la BD variano normalmente meno frequentemente del suo contenuto e più della sua struttura
la separazione tra applicazioni e DB realizzata del DBMS è detta indipendenza fisica la separazione tra applicazioni e DB realizzata del DBMS è detta indipendenza fisica Indipendenza Fisica se vale lindipendenza fisica è possibile apportare modifiche al modo in cui i dati sono memorizzati senza modificare le applicazioni se vale lindipendenza fisica è possibile apportare modifiche al modo in cui i dati sono memorizzati senza modificare le applicazioni ad es. i dati vengono spostati su un altro disco, o partizionati su più dischi o indicizzati per velocizzare il reperimento ad es. i dati vengono spostati su un altro disco, o partizionati su più dischi o indicizzati per velocizzare il reperimento
prima dellavvento dei DBMS le applicazioni accedevano direttamente ai dati prima dellavvento dei DBMS le applicazioni accedevano direttamente ai dati Indipendenza Fisica al cambiare della memorizzazione (fisica) dei dati lapplicazione doveva essere modificata al cambiare della memorizzazione (fisica) dei dati lapplicazione doveva essere modificata con lindipendenza fisica, lapplicazione deve essere modificata solo quando varia la struttura (logica) dei dati con lindipendenza fisica, lapplicazione deve essere modificata solo quando varia la struttura (logica) dei dati
la quasi totalità dei moderni DBMS permette la gestione di BD basate sul Modello Relazionale (MR) la quasi totalità dei moderni DBMS permette la gestione di BD basate sul Modello Relazionale (MR) Modello Relazionale la proposta del MR risale al 1970 ed è opera del matematico E.F. Codd la proposta del MR risale al 1970 ed è opera del matematico E.F. Codd dato lelevato livello di astrazione del MR, le prime realizzazioni commerciali risalgono alla fine degli anni 70 dato lelevato livello di astrazione del MR, le prime realizzazioni commerciali risalgono alla fine degli anni 70
il concetto base del MR è la relazione (o tabella, secondo luso comune) il concetto base del MR è la relazione (o tabella, secondo luso comune) Tabelle ogni entità è rappresentata dai valori di un insieme di attributi ogni entità è rappresentata dai valori di un insieme di attributi una tabella rappresenta in modo omogeneo un insieme di entità del mondo reale (es. studenti di un Corso, acquisti su una Carta di Credito) una tabella rappresenta in modo omogeneo un insieme di entità del mondo reale (es. studenti di un Corso, acquisti su una Carta di Credito) nel MR un DB è semplicemente un insieme di tabelle nel MR un DB è semplicemente un insieme di tabelle
Tabelle per esempio un insieme di studenti (entità reali) può essere rappresentato da una tabella con gli opportuni attributi per esempio un insieme di studenti (entità reali) può essere rappresentato da una tabella con gli opportuni attributi record attributo campo Studenti
vi sono molte differenze tra le tabelle del MR e le tabelle di un Foglio Elettronico vi sono molte differenze tra le tabelle del MR e le tabelle di un Foglio Elettronico Tabelle una differenza fondamentale è che la tabella del MR memorizza dei meta-dati una differenza fondamentale è che la tabella del MR memorizza dei meta-dati alcuni di tali meta-dati sono: alcuni di tali meta-dati sono: –nome della tabella –nome e tipo di ciascun attributo
Omogeneità uno dei vincoli fondamentali è lomogeneità dei record di una tabella uno dei vincoli fondamentali è lomogeneità dei record di una tabella grazie ai meta-dati il MR può imporre vincoli grazie ai meta-dati il MR può imporre vincoli ogni record è composto dai valori di uno stesso insieme di attributi (stesso numero, stessi nomi, stessi tipi) ogni record è composto dai valori di uno stesso insieme di attributi (stesso numero, stessi nomi, stessi tipi) questo ci permette di trattare in modo omogeneo i record di una tabella questo ci permette di trattare in modo omogeneo i record di una tabella
Chiave Primaria un altro vincolo fondamentale è lunicità dei record di una tabella: dati due record essi devono differire almeno per il valore di un attributo un altro vincolo fondamentale è lunicità dei record di una tabella: dati due record essi devono differire almeno per il valore di un attributo la chiave primaria di una tabella è un insieme minimale di attributi i cui valori (combinati) per ciascun record devono essere univoci la chiave primaria di una tabella è un insieme minimale di attributi i cui valori (combinati) per ciascun record devono essere univoci
Chiave Primaria nella tabella Studenti linsieme di attributi {Matricola} può essere la chiave primaria nella tabella Studenti linsieme di attributi {Matricola} può essere la chiave primaria Studenti
Chiave Primaria invece linsieme di attributi {Cognome, Nome} non è una buona chiave primaria invece linsieme di attributi {Cognome, Nome} non è una buona chiave primaria se si iscrive un altro Mario Rossi dobbiamo modificare la struttura del DB se si iscrive un altro Mario Rossi dobbiamo modificare la struttura del DB Studenti
Ridondanza uno degli scopi principali delladozione dei DB è leliminazione (riduzione) della ridondanza dei dati uno degli scopi principali delladozione dei DB è leliminazione (riduzione) della ridondanza dei dati la presenza di ridondanza di dati in un sistema informativo: la presenza di ridondanza di dati in un sistema informativo: –incrementa i dati da inserire e modificare –incrementa le possibilità di inconsistenza (falsità) –incrementa la quantità di memoria secondaria utilizzata
Ridondanza App 1 DB 1 Sig. Rossi, Via Roma ridondanza indesiderabile ridondanza indesiderabile App 2 DB 1 Sig. Rossi, Via Roma
Ridondanza App 1 DB 1 Sig. Rossi, Via Cigna App 2 DB 1 Sig. Rossi, Via Roma ridondanza indesiderabile ridondanza indesiderabile
Ridondanza App 1 DB Sig. Rossi, Via Roma App 2 DB* REPLICA Sig. Rossi, Via Roma DBMS ridondanza utile per affidabilità ridondanza utile per affidabilità
Ridondanza App 1 DB Sig. Rossi, Via Cigna App 2 DB* Sig. Rossi, Via Roma DBMS ridondanza utile per affidabilità ridondanza utile per affidabilità
Ridondanza App 1 DB Sig. Rossi, Via Cigna App 2 DB* REPLICA Sig. Rossi, Via Cigna DBMS ridondanza utile per affidabilità ridondanza utile per affidabilità
Ridondanza la condivisione di un DB da parte di molte applicazioni riduce drasticamente i problemi legati alla ridondanza la condivisione di un DB da parte di molte applicazioni riduce drasticamente i problemi legati alla ridondanza è desiderabile però eliminare (ridurre) la ridondanza anche allinterno di un singolo DB è desiderabile però eliminare (ridurre) la ridondanza anche allinterno di un singolo DB
Ridondanza una tabella con dati ridondanti una tabella con dati ridondanti Esami
Ridondanza possiamo distribuire i dati su due tabelle possiamo distribuire i dati su due tabelle Esami Studenti
Chiavi Esterne il legame tra le tabelle Studenti ed Esami si esprime con un vincolo di integrità referenziale il legame tra le tabelle Studenti ed Esami si esprime con un vincolo di integrità referenziale lattributo Matricola della tabella Esami è detto chiave esterna di Esami su Studenti lattributo Matricola della tabella Esami è detto chiave esterna di Esami su Studenti lintegrità referenziale richiede che ogni valore della chiave esterna Matricola di Esami corrisponda a un valore della chiave (primaria) Matricola di Studenti lintegrità referenziale richiede che ogni valore della chiave esterna Matricola di Esami corrisponda a un valore della chiave (primaria) Matricola di Studenti
Chiavi Esterne il nome di un attributo chiave esterna può essere diverso dal nome dellattributo chiave (primaria) cui si riferisce il nome di un attributo chiave esterna può essere diverso dal nome dellattributo chiave (primaria) cui si riferisce ID… IDIDResp… ImpiegatiProgetti
Chiavi Esterne una chiave esterna può essere composta da più attributi una chiave esterna può essere composta da più attributi CittaNome… StazioniOrarioFermate…CittaStazNomeStaz…
Chiavi Esterne una tabella può definire più chiavi esterne una tabella può definire più chiavi esterne CittaNome… Stazioni Tratte…CittaStazDaNomeStazDaCittaStazANomeStazA…
Tipi di Associazioni grazie alle chiavi esterne possiamo creare dei legami (associazioni) tra tabelle grazie alle chiavi esterne possiamo creare dei legami (associazioni) tra tabelle unassociazione tra le tabelle T1 e T2 è caratterizzata dalla cardinalità con cui T1 e T2 partecipano allassociazione unassociazione tra le tabelle T1 e T2 è caratterizzata dalla cardinalità con cui T1 e T2 partecipano allassociazione distinguiamo tra: distinguiamo tra: –associazioni uno-a-uno –associazioni uno-a-molti –associazioni molti-a-molti
Tipi di Associazioni in unassociazione uno-a-uno, ogni record di T1 è associato (al più) a un record di T2 (e viceversa) in unassociazione uno-a-uno, ogni record di T1 è associato (al più) a un record di T2 (e viceversa) ID… IDIDOrdine… OrdiniFatture uno-a-uno
Tipi di Associazioni in unassociazione uno-a-molti, ogni record di T1 è associato a zero, uno o più record di T2 in unassociazione uno-a-molti, ogni record di T1 è associato a zero, uno o più record di T2 Nome… IDViveA… CittàPersona uno-a-molti
Tipi di Associazioni in unassociazione molti-a-molti, ogni record di T1 è associato a zero, uno o più record di T2 (e viceversa) in unassociazione molti-a-molti, ogni record di T1 è associato a zero, uno o più record di T2 (e viceversa) ID… ID… TuristaViaggio molti-a-molti
Tipi di Associazioni in unassociazione molti-a-molti, ogni record di T1 è associato a zero, uno o più record di T2 (e viceversa) in unassociazione molti-a-molti, ogni record di T1 è associato a zero, uno o più record di T2 (e viceversa) ID… ID TuristaViaggioIDTurIDViag Partecipazione
Interrogazioni la strutturazione di una BD in tabelle, a loro volta strutturate in record con attributi omogenei, permette interrogazioni molto sofisticate la strutturazione di una BD in tabelle, a loro volta strutturate in record con attributi omogenei, permette interrogazioni molto sofisticate il linguaggio formale più utilizzato per interrogare le BD relazionali è SQL (Structured Query Language) ma esistono altri linguaggi, spesso meno potenti ma più semplici da utilizzare il linguaggio formale più utilizzato per interrogare le BD relazionali è SQL (Structured Query Language) ma esistono altri linguaggi, spesso meno potenti ma più semplici da utilizzare
Interrogazioni in una BD relazionale, il risultato di una interrogazione è una tabella temporanea (persiste fintanto che il risultato viene analizzato) in una BD relazionale, il risultato di una interrogazione è una tabella temporanea (persiste fintanto che il risultato viene analizzato) in una interrogazione specifichiamo: in una interrogazione specifichiamo: –gli attributi da includere nella tabella risultato –i criteri di selezione che devono essere soddisfatti dai record della tabella risultato
Interrogazioni consideriamo le tabelle Studenti ed Esami viste prima consideriamo le tabelle Studenti ed Esami viste prima Esami Studenti
Interrogazioni vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0507 vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0507 Esami Studenti
Interrogazioni vogliamo spedire delle congratulazioni agli studenti che hanno superato almeno un esame con voto 27 vogliamo spedire delle congratulazioni agli studenti che hanno superato almeno un esame con voto 27 Esami Studenti
Interrogazioni vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0507 con voto 27 vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0507 con voto 27 Esami Studenti
Interrogazioni vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0014 o L0507 con voto 27 vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0014 o L0507 con voto 27 Esami Studenti
SQL SELECT * FROM Studenti S, Esami E WHERE S.Matricola = E.Matricola AND CodiceCorso = L0507 CodiceCorso = L0507 vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0507 vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0507
SQL SELECT * FROM Studenti S, Esami E WHERE S.Matricola = E.Matricola AND CodiceCorso = L0507 AND CodiceCorso = L0507 AND Voto >= 27 Voto >= 27 vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0507 con voto 27 vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0507 con voto 27
SQL SELECT * FROM Studenti S, Esami E WHERE S.Matricola = E.Matricola AND (CodiceCorso = L0507 OR (CodiceCorso = L0507 OR CodiceCorso = L0014) AND CodiceCorso = L0014) AND Voto >= 27 Voto >= 27 vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0014 o L0507 con voto 27 vogliamo spedire delle congratulazioni agli studenti che hanno superato lesame L0014 o L0507 con voto 27
Query by Example il metodo di interrogazione QBE permette di costruire le interrogazioni in modo simile a come le abbiamo discusse informalmente il metodo di interrogazione QBE permette di costruire le interrogazioni in modo simile a come le abbiamo discusse informalmente vedremo luso delle QBE in Access vedremo luso delle QBE in Access
Esempio Il DB di una azienda contiene le seguenti tabelle: Il DB di una azienda contiene le seguenti tabelle: –Impiegati Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass –Stipendi ID, Paga, Deduzioni, Sanità, Vita –Risorse_Umane ID, Dipa, Data_ass, Commenti, Supervisor, Progetti –Calcetto ID, Piede, Presenze, Goal, Posizione
Esempio – Chiavi Primarie Esplicitiamo le chiavi primarie: Esplicitiamo le chiavi primarie: –Impiegati Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass –Stipendi ID, Paga, Deduzioni, Sanità, Vita –Risorse_Umane ID, Dipa, Data_ass, Commenti, Supervisor, Progetti –Calcetto ID, Piede, Presenze, Goal, Posizione
Esempio - Associazioni Consideriamo ora le associazioni Consideriamo ora le associazioni ID… ID… ImpiegatiStipendi Impiegati Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass Stipendi ID, Paga, Deduzioni, Sanità, Vita uno-a-uno
Esempio - Associazioni Consideriamo ora le associazioni Consideriamo ora le associazioni ID… ID… ImpiegatiRisorse_Umane Impiegati Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass Risorse_Umane ID, Dipa, Data_ass, Commenti, Supervisor, Progetti uno-a-uno
Esempio - Associazioni Consideriamo ora le associazioni Consideriamo ora le associazioni ID… ID… ImpiegatiCalcetto Impiegati Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass Calcetto ID, Piede, Presenze, Goal, Posizione uno-a-uno
Esempio - Associazioni Abbiamo individuato le associazioni: Abbiamo individuato le associazioni: ID… ImpiegatiID… StipendiID… Risorse_UmaneID… Calcetto uno-a-uno
Esempio - Associazioni Ci sono altre associazioni? Ci sono altre associazioni? –Impiegati Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass –Stipendi ID, Paga, Deduzioni, Sanità, Vita –Risorse_Umane ID, Dipa, Data_ass, Commenti, Supervisor, Progetti –Calcetto ID, Piede, Presenze, Goal, Posizione
Esempio - Associazioni Cè unaltra associazione tra Impiegati e Risorse_Umane Cè unaltra associazione tra Impiegati e Risorse_Umane ID… ID…Supervisor… ImpiegatiRisorse_Umane Impiegati Cognome, Nome, ID, Indirizzo, Città, Provincia, CAP, Telefono, Data_ass Risorse_Umane ID, Dipa, Data_ass, Commenti, Supervisor, Progetti uno-a-molti
Esempio - Associazioni Abbiamo individuato le associazioni: Abbiamo individuato le associazioni: ID… ImpiegatiID… StipendiID… Risorse_UmaneID… Calcetto uno-a-uno uno-a-molti
Esempio - Ridondanza La data di assunzione Data_ass è ridondante La data di assunzione Data_ass è ridondante Per rimuovere la ridondanza possiamo rimuovere lattributo Data_ass dalla tabella Impiegati oppure dalla tabella Risorse_Umane Per rimuovere la ridondanza possiamo rimuovere lattributo Data_ass dalla tabella Impiegati oppure dalla tabella Risorse_Umane In questo caso sembra preferibile rimuovere Data_ass da Risorse_Umane perché altrimenti, il DB potrebbe non specificare la data di assunzione per qualche impiegato In questo caso sembra preferibile rimuovere Data_ass da Risorse_Umane perché altrimenti, il DB potrebbe non specificare la data di assunzione per qualche impiegato
Esempio - View Consideriamo il DB da diversi punti di vista (view) Consideriamo il DB da diversi punti di vista (view) Lallenatore di calcetto non dovrà (necessariamente) avere accesso a tutte le tabelle Impiegati, Stipendi, Risorse_Umane e Calcetto Lallenatore di calcetto non dovrà (necessariamente) avere accesso a tutte le tabelle Impiegati, Stipendi, Risorse_Umane e Calcetto Gli sarà sufficiente avere accesso alla tabella Calcetto e a (parte) dei dati nella tabella Impiegati relativi a impiegati che giocano a calcetto Gli sarà sufficiente avere accesso alla tabella Calcetto e a (parte) dei dati nella tabella Impiegati relativi a impiegati che giocano a calcetto
Esempio - View La view dellallenatore di calcetto potrebbe essere il risultato di una query. La view dellallenatore di calcetto potrebbe essere il risultato di una query. ID… ImpiegatiID… Calcetto … attributi di Calcetto attributi di Impiegati tranne Data_ass ID ViewAllenatore