Basi di dati Database relazionali Sistemi di Elaborazione delle Informazioni Basi di Dati Tullio Facchinetti <[email protected]> 29 ottobre 2013 15:26 http://robot.unipv.it/toolleeo Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Sommario introduzione alle basi di dati il modello relazionale esempio pratico Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Utilità della gestione dei dati recupero delle informazioni necessarie elaborazione dei dati recuperati memorizzazione dei risultati la base di dati (database) permette di organizzare i dati da gestire, al ne di permetterne il recupero e la memorizzazione Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Database Management Systems (DBMS) insieme di programmi che controllano l'organizzazione, la memorizzazione e il reperimento dei dati in un database gli utenti accedono alle informazioni tramite opportuni programmi e interfacce i dati sono richiesti al DBMS il DBMS interagisce con le memorizzati sul le system (tipicamente risiedenti su disco) le informazioni vengono recuperate e fornite all'utente Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Caratteristiche di un DBMS accesso concorrente ai dati più utenti/programmi devono poter accedere alle informazioni nello stesso intervallo di tempo consistenza dei dati i dati devono eettivamente rappresentare le informazioni utili al loro utilizzo nel contesto dell'applicazione i dati devono essere organizzati in modo da essere concretamente utilizzabili Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Caratteristiche di un DBMS integrità dei dati protezione delle informazioni a fronte di modiche dei contenuti l'alterazione può essere accidentale o intenzionale include il caso di generazione di informazioni ex novo privatezza dei dati garantire che le informazioni non siano accessibili da soggetti cui non sono forniti i relativi permessi ecienza bilanciare occupazione di memoria vs. tempo d'accesso Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Soluzioni disponibili soluzioni open-source: PostgreSQL SQLite MySQL MariaDB soluzioni closed-source: prodotti Oracle MS Access MS SQL Server Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Il modello E-R E ntità R elazione (e A ttributo) introdotto dal Prof. Peter Chen nel 1977 modello concettuale per la descrizione delle informazioni permette di organizzare i dati del mondo reale in termini di oggetti e delle loro relazioni una notazione graca ecace (diagramma E/R) permette una immediata rappresentazione del modello Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Il modello E-R E ntità R elazione elementi fondamentali del modello: entità relazione attributi di entità di relazione ruoli vincoli di identicazione e di cardinalità Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Le entità caratteristiche delle entità: possono rappresentare persona, oggetti, eventi, ecc. una entità è caratterizzata da elementi comuni ha una esistenza autonoma rispetto al problema da descrivere è un modo ecace per denire le caratteristiche dei dati di interesse di una applicazione Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Le entità nonostante il concetto di entità sia non immediato da denire, dal punto di vista operativo il suo signicato è molto semplice esempi: il nome Tullio e il cognome Facchinetti, unitamente alla data di nascita (non strettamente necessaria) identica l'entità persona Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Le entità: esempi alcuni esempi di elementi della realtà che possono essere incaspulati in una entità sono: persone: cittadino, dipendente, cliente, automobilista, autore di un libro, membro di un social network oggetti: libro, farmaco, automobile, pezzo di ricambio eventi: appuntamento, festività, visite mediche, interventi chirurgici, prestito di un libro, click di mi piace su un social network ... Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Insiemi di entità entity-set si tratta di un insieme di entità dello stesso tipo, alle quali viene attribuito un nome distintivo esempio: si considerino le entità PERSONA, PAZIENTE e DIPENDENTE gli entity-set PAZIENTE e DIPENDENTE sono due sotto-insiemi non disgiunti dell'entity-set PERSONA PERSONA DIPENDENTE Tullio Facchinetti <[email protected]> PAZIENTE Basi di Dati Basi di dati Database relazionali Gli attributi: esempio attributo è una proprietà dell'entità, denita in base ai requisiti dell'applicazione esempi di attributi per rappresentare determinate entità una persona: un libro: nome titolo cognome autore codice scale casa editrice data di nascita ISBN citta di residenza Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Gli attributi tutti gli oggetti della stessa entità hanno gli stessi attributi da denire in numero adeguato a rappresentare l'oggetto che corrisponde all'entità il livello di dettaglio della rappresentazione dipende dal problema da risolvere Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Dominio degli attributi dominio insieme di valori che possono essere assegnati ad un attributo esempi di dominio: il dominio dell'attributo COGNOME può essere una stringa di caratteri di lunghezza massima pari a 50 l'attributo PREZZO dell'entità ARTICOLO può essere un valore numerico con 2 cifre dopo la virgola l'attributo DATA_DI_NASCITA può assumere valori di una data (giorno/mese/anno) Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Istanza di una entità istanza di una entità insieme dei valori attribuiti agli attributi di una entità sia data l'entitià PERSONA avente attributi NOME, COGNOME, CF e DATA le istanze di tale entità si rappresentano ecacemente tramite tabelle ognuna delle righe della tabella rappresenta una istanza NOME COGNOME Paolo Fantozzi FNTPLO69A01X800L 01-03-1969 Ludovico Van VANLDV13B24L456W 24-02-1913 Alberto Trebla TRBLBR44F19F101G 19-06-1944 Tullio Facchinetti CF <[email protected]> Basi di Dati DATA Basi di dati Database relazionali Le relazioni relazione rappresenta una associazione tra due entità viene tipicamente identicata da un predicato esempi: si considerino le entità LIBRO e AUTORE la relazione è del tipo ha scritto che lega AUTORE a LIBRO Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Diadrammi E-R diagramma E-R è un formalismo graco per rappresentare le entità, gli attibuti e le relazioni tra essi, che descrivono un particolare sistema rappresentano il cosiddetto schema concettuale del sistema la notazione non è standardizzata Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Diadrammi E-R le entità (o meglio, gli entity-set) sono rappresentati mediante rettangoli gli attributi si rappresentano mediante ovali gli attributi di una entità vi sono collegati tramite linee esempi: AUTORE LIBRO TITOLO Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Diadrammi E-R: attributi composti attributo composto l'attributo è costituito dall'aggregazione di attributi elementari, che hanno stretta anità tra loro esempi: l'attributo INDIRIZZO può essere scomposto in VIA, CIVICO, CITTA, CAP l'attributo DATA_DI_NASCITA può essere scomposto in GIORNO, MESE, ANNO Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Diadrammi E-R: attributi composti attributo composto l'attributo è costituito dall'aggregazione di attributi elementari, che hanno stretta anità tra loro esempio: VIA NUMERO PERSONA INDIRIZZO CITTA CAP Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Diadrammi E-R: relazioni sono rappresentate mediante rombi l'associazione esistente tra entità e relazioni viene esplicitata da una linea che collega i rispettivi elementi graci esempio: AUTORE Tullio Facchinetti HA SCRITTO <[email protected]> Basi di Dati LIBRO Basi di dati Database relazionali La chiave chiave primaria insieme di attributi i cui valori permettono di identicare univocamente una entià esempi: l'attributo CODICE FISCALE può essere la chiave primaria dell'entità PERSONA l'attributo ISBN può essere la chiave primaria dell'entità LIBRO l'attributo MATRICOLA può essere la chiave primaria dell'entità STUDENTE la coppia di attributi CODICE FISCALE e DATA ASSUNZIONE può essere la chiave primaria di una entità che rappresenti i dati di un IMPIEGATO Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Vincoli di integrità vincolo di integrità regola che deve essere rispettanta da ogni istanza dello schema rappresentato dal diagramma E-R vincolo di cardinalità sulle relazioni vincolo di cardinalità sugli attributi vincolo di partecipazione vincoli esterni Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Cardinalità di una relazione cardinalità di una relazione vengono imposti un limite minimo e uno massimo al numero di entità cui un'altra entità può venire associata sono rappresentati da una coppia di valori (min, max) il vincolo di cardinalità viene imposto a tutte le istanze dell'entità al quale è associato Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Cardinalità di una relazione cardinalità di una relazione vengono imposti un limite minimo e uno massimo al numero di entità cui un'altra entità può venire associata caratteristiche della cardinalità: vale sempre 0 ≤ min ≤ max vale sempre 1 ≤ max i valori Tullio Facchinetti min = 0 e max = N <[email protected]> signica assenza di vincoli Basi di Dati Basi di dati Database relazionali Un semplice esempio si supponga di voler costruire lo schema E-R per la memorizzazione dei dati di una biblioteca personale informazioni da memorizzare per ciascun libro: titolo nome e cognome dell'autore codice ISBN Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Un semplice esempio la soluzione più semplice è la seguente: TITOLO NOME AUTORE LIBRO COGNOME ISBN questo schema non permette però di rappresentare libri scritti da più autori Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Un semplice esempio uso di due entità distinte: AUTORE e LIBRO NOME COGNOME AUTORE TITOLO HA SCRITTO LIBRO ISBN diversi autori possono aver scritto lo stesso libro questo schema non permette però di distinguere autori diversi che hanno lo stesso nome Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Un semplice esempio introduzione dell'attributo ID (IDenticatore) NOME COGNOME AUTORE TITOLO HA SCRITTO ID LIBRO ISBN serve a identicare univocamente la singola istanza dell'entità può convenientemente essere un attributo numerico l'uso di un ID numerico come chiave primaria è molto comune Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Le tabelle tabella lo schema di una tabella implementa lo schema di una entità le righe sono dette tuple o record, e contengono i dati di una istanza dell'entità le colonne sono formate dagli attributi Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Esempio di implementazione obiettivo realizzare un database per la gestione del personale e di alcune attività di un centro ospedaliero in particolare, si richiede la gestione dei seguenti: il personale del centro gli utenti del centro l'organizzazione del centro (reparti) gli interventi una semplice gestione economica (paghe e costi) Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Possibile organizzazione in entità alcune considerazioni: diversi dipendenti fanno riferimento allo stesso reparto il nome di un reparto può essere associato a molti dipendenti è conveniente istituire una tabella REPARTI che contiene i nomi e le informazioni riguardanti tutti i reparti Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Prime osservazioni possibili entità: le persone, siano esse clienti dipendenti i reparti gli iterventi le visite Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Tabelle e relazioni Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Tabella PERSONA Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Tabella DIPENDENTI Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Tabella INTERVENTI Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Tabella PROFESSIONI Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Tabella REPARTI Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Tabella VISITE Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Tabella DRG Tullio Facchinetti <[email protected]> Basi di Dati Basi di dati Database relazionali Tabella RICOVERI Tullio Facchinetti <[email protected]> Basi di Dati