Database prof. Maurizio Naldi LUMSA A.A. 2015-16 I database Permettono di archiviare, elaborare e recuperare dati in forma strutturata DBMS = Database Management Systems Database gerarchici e relazionali M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 2 / 39 Elementi di un database Tabelle Record (entità, in righe) Campi (attributi, in colonne) Esempio: Database degli studenti Record: studenti Campi: nome, cognome, data di nascita, classe, sezione M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 3 / 39 Tipi di dati Stringa di testo (alfanumerico) Numero (intero o reale, cioè dotato di parte decimale) Data Valore booleano (Vero o Falso) M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 4 / 39 Esempio di tabella degli alunni Nome Cognome Data di nascita Classe Sezione Giuseppe Maria Vittorio Rosa Verdi Bianchi Marroni Rossi 20-02-1999 04-03-2004 25-06-2002 19-09-2003 5 1 3 2 A B A B M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 5 / 39 Tipi di dati nel database degli studenti Nome: Stringa Cognome: Stringa Data di nascita: Data Classe: Numero Sezione: Stringa M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 6 / 39 Il tipo NULL Per indicare che un campo è vuoto si usa il tipo NULL Questo può accadere per diversi casi: Dato esistente ma sconosciuto Dato inesistente o attributo non applicabile Assenza completa di informazioni M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 7 / 39 Identificazione univoca delle entità Obiettivo: assenza di ridondanza (record identici) Identificazione univoca dei record ⇐⇒ Scelta di uno o più campi in modo tale che tutti i record di quella tabella presentino valori diversi in quei campi Chiave primaria = Campi impiegati per distinguere i record Chiavi primarie semplici e composte Uso di identificativi numerici progressivi Esempi di chiavi primarie Codice ISBN di un libro Matricola di uno studente universitario Numero di una carta di credito Codice PIN Partita IVA Codice fiscale M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 8 / 39 Definizioni di chiave Una superchiave è un insieme di campi tali che non esistono due record che abbiano lo stesso valore di quei campi Una chiave è una superchiave minimale (cioè non esiste un’altra superchiave che la contenga) M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 9 / 39 Esempi di chiavi L’insieme {Matricola, Corso} è superchiave Il campo Matricola è una chiave L’insieme {Cognome, Nome, Nascita} è una superchiave ma nessuno dei singoli campi è una superchiave M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 10 / 39 Tabella con identificativo progressivo ID Nome Cognome Data di nascita Classe Sezione 1 2 3 4 5 Giuseppe Maria Vittorio Rosa Maria Verdi Bianchi Marroni Rossi Bianchi 20-02-1999 04-03-2004 25-06-2002 19-09-2003 05-012-2003 5 1 3 2 2 A B A B B M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 11 / 39 Valori NULL nelle chiavi Le chiavi non possono contenere valori NULL La presenza di valori NULL nelle chiavi (primarie o esterne) impedirebbe l’identificazione di un record od il riferimento ad un altro record M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 12 / 39 Vincoli di integrità Servono a garantire la correttezza dei dati inseriti Vincoli all’interno di una tabella Vincoli di valore (sul singolo campo) Vincoli sul singolo record Vincoli tra tabelle M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 13 / 39 Esempi di vincoli all’interno di una tabella Vincolo sul voto del singolo esame, compreso tra 18 e 30 (vincolo sul singolo campo) Vincolo sulla presenza della lode, solo se il voto è 30 (vincolo tra due campi) M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 14 / 39 Le dipendenze funzionali Una dipendenza funzionale costituisce un vincolo di integrità tra due campi (o insiemi di campi) di una medesima tabella Il campo Z ha una dipendenza funzionale dal campo Y (Y −→ Z ) se per ogni coppia di record che hanno il medesimo valore del campo Y , risulta che hanno lo stesso valore anche nel campo Z Il vincolo di dipendenza funzionale non è simmetrico in generale M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 15 / 39 Esempi di dipendenze funzionali Esistono le seguenti dipendenze funzionali Impiegato −→ Stipendio Progetto −→ Bilancio M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 16 / 39 Chiavi e dipendenze funzionali Per una qualunque chiave esiste una dipendenza funzionale tra quella chiave ed ogni altro campo della tabella M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 17 / 39 Relazioni tra tabelle Relazione uno-a-uno; Relazione uno-a-molti; Relazione molti-a-molti. M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 18 / 39 Rappresentazione delle relazioni Editori Id_Ed Nome_Ed Libri ISBN Titolo Id_Ed 1 1 ∞ Autore-Libro ISBN Id_autore ∞ M. Naldi (LUMSA) Corso AbInfo 1 ∞ Autori Id_autore Nome_autore Cognome_autore A.A. 2015-16 19 / 39 Vincoli di integrità referenziale Per ogni coppia di tabelle collegate da una relazione occorre garantire che il riferimento utilizzato sia reperibile Se condieriamo una relazione tra la tabella A e la tabella B, per ogni record della tabella A il valore scritto nella chiave esterna deve essere presente nella chiave primaria della tabella B M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 20 / 39 Esempio di database con vincoli di integrità referenziale soddisfatti M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 21 / 39 Rappresentazione delle relazioni Infrazioni Codice Data Agente Articolo Prov Numero 1 ∞ Agenti Matricola CF Cognome Nome ∞ 1 Auto Prov Numero Proprietario Indirizzo Relazione Infrazioni-Agenti: Chiave esterna=Agente Relazione Infrazioni-Auto: Chiave esterna=Provincia+Numero M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 22 / 39 Database con vincoli di integrità non soddisfatti M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 23 / 39 La normalizzazione La ridondanza Le anomalie Le sei forme normali M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 24 / 39 Esempio di tabella con anomalie M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 25 / 39 Ridondanze e anomalie Ridondanza: Ripetizione di dati in più punti della tabella Anomalia di aggiornamento: Modifica contemporanea dello stesso campo in più record Anomalia di cancellazione: Cancellazione di informazioni di interesse a causa della cancellazione di alcuni record Anomalia di inserimento: Impossibilità di inserire informazioni di interesse per la necessità di inserire un intero record M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 26 / 39 Decomposizione di una tabella M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 27 / 39 Le prime tre forme normali 1 Tutti i campi devono contenere valori atomici, ovvero semplici e indivisibili 2 Tutti i campi devono dipendere dall’intero campo della chiave primaria 3 Tutti i campi diversi dalla chiave primaria devono essere indipendenti tra di loro, ovvero nessun campo può essere derivato da un altro campo oppure cambia se cambia un altro campo M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 28 / 39 Tabella con valori non atomici M. Naldi (LUMSA) Nome e cognome Città CAP Mario Rossi Giuseppe Bianchi Vittorio Verdi Roma Palermo Milano 00133 90139 20125 Corso AbInfo A.A. 2015-16 29 / 39 Tabella con valori atomici e chiave primaria corretta Nome Cognome Città CAP CF Mario Giuseppe Vittorio Rossi Bianchi Verdi Roma Palermo Milano 00133 90139 20125 RSSMRA66R14H501N BNCGPP66D25G273C VRDVTR65A01F205! M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 30 / 39 Tabella con attributi multivalori ID Nome Cognome N. telefono 123 456 789 Mario Giuseppe Vittorio Rossi Bianchi Verdi 09251111 09323333 09329999 09815555 M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 31 / 39 Tabella in prima forma normale ID Nome Cognome N. telefono 1 N. telefono 2 123 456 789 Mario Giuseppe Vittorio Rossi Bianchi Verdi 09251111 09323333 09815555 09329999 M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 32 / 39 Utilizzo di relazioni uno-a-molti Tabella degli utenti ID Nome Cognome 123 456 789 Mario Giuseppe Vittorio Rossi Bianchi Verdi M. Naldi (LUMSA) Tabella dei numeri di telefono Corso AbInfo ID N. telefono 123 456 456 789 09251111 09323333 09329999 09815555 A.A. 2015-16 33 / 39 Definizione di Seconda Forma Normale Una tabella è in seconda forma normale se non ci sono dipendenze funzionali tra un sottoinsieme proprio della chiave ed altri campi Una tabella con una chiave costituita da un solo campo è in seconda forma normale M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 34 / 39 Esempio di tabella che viola la seconda forma normale La chiave è costituita dall’insieme {Progetto, Impiegato} Ci sono due dipendenze parziali Impiegato−→Stipendio e Progetto−→Budget M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 35 / 39 Tabella in seconda forma normale La chiave è costituita dal campo Impiegato Non ci sono due dipendenze parziali M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 36 / 39 Definizione di Terza forma normale Per ogni dipendenza funzionale non banale X −→ Y si verifica almeno una delle seguenti condizioni X contiene una chiave della tabella A appartiene ad almeno una chiave della tabelle M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 37 / 39 Esempio di tabella in 3FN L’insieme {Progetto, Sede} è una chiave Esistono le dipendenze {Progetto, Sede} −→ Dirigente e Dirigente−→Sede La dipendenza {Progetto, Sede} −→ Dirigente ha come primo membro una chiave Nella dipendenza Dirigente−→Sede il secondo membro fa parte della chiave {Progetto, Sede} M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 38 / 39 Accesso a database relazionali Il linguaggio SQL I comandi SQL 1 2 3 Comandi per creare, cancellare o modificare una tabella (Data Definition Language, DDL); Comandi per inserire, cancellare, modificare e leggere i dati del database (Data Manipulation Language, DML); Comandi per gestire le autorizzazioni ad intervenire sul database (Data Control Language, DCL). M. Naldi (LUMSA) Corso AbInfo A.A. 2015-16 39 / 39