Database/Banche Dati/Sistemi Informativi Insieme di programmi in grado di: acquisire, elaborare, archiviare informazioni in genere ad uso di un organizzazione (azienda o istituzione).
Dato Informazione I dati sono registrazioni di una qualsiasi caratteristica della realtà, su un supporto che ne garantisca la conservazione, la comprensibilità e la reperibilità. Informazione = Dati + Contesto interpretativo L'informazione è fatta dai dati inseriti in un contesto che ne fissa l'interpretazione Esempio: "7" o "Mario Rossi" sono dati non informazioni, mentre: "La temperatura a Torino il 15/11 è 7 gradi" "Il presidente della Comunità Montana è Mario Rossi" sono informazioni
DBMS (Database Management System) Obiettivo: gestione strutturata di dati, organizzati in modo omogeneo. Base di dati: Collezione di dati organizzati in modo coerente (un insieme casuale di dati non è una base di dati!) Modella alcuni aspetti del mondo reale Costruito con funzionalità ben precise, note fin dall inizio della progettazione.
Esempi di basi dati: Rubrica telefonica personale anagrafe segreteria studenti dell università banca dati centrale del ministero delle finanze archivio di una biblioteca, di un laboratorio d analisi mediche, di un museo banca dati di una carta di credito banca dati delle prenotazioni dei voli di una compagnia aerea
Basi di dati: operazioni Progetto: definizione della base di dati quali informazioni rappresentare quali relazioni tra le informazioni Interazione: inserimento di dati cancellazione di dati aggiornamento (update) interrogazione Gestione di operazioni da parte di utenti multipli Protezione e sicurezza dei dati
Livelli di rappresentazione Livello fisico: come i dati sono memorizzati e organizzati su uno o più supporti di memoria secondaria Livello logico: come i dati sono organizzati secondo il modello logico adottato (relazionale, gerarchico, ad oggetti etc.) Livello concettuale: come i dati sono organizzati secondo uno schema concettuale Livello esterno (Viste): come i dati appaiono o vengono presentati all utente (possono essere anche programmi)
Livelli di rappresentazione Vista 1 Vista 2 Vista n Livello concettuale Livello logico Livello fisico
DB designer: Figure professionali (1) schema concettuale (astratto) della base di dati Traduzione dello schema concettuale in un modello dei dati: gerarchico relazionale object oriented...
DB programmer Figure professionali (2) (realizzazione della base di dati) DB administrator (gestione della base dati) Users utenti esperti (usano un linguaggio di interrogazione) utenti naifs (interazioni predeterminate, forms) programmi
Esempio: Database di un Museo come rappresentare/strutturare queste informazioni? Il museo contiene tre tipi di oggetti: reperti archeologici, materiale etnografico e opere d arte (quadri, sculture) Conseguentemente, il museo ha tre sezioni: Archeologica, Etnografica, Collezione (di opere) d arte Di tutti i pezzi del museo si vogliono mantenere le informazioni: numero di inventario, provenienza datazione, descrizione, misure, se ha subito restauri o no, sala ed eventualmente collocazione (scaffale, etc ) Se un oggetto ha subito restauri, si vuole mantenere l informazione riguardo presso quale centro è stato restaurato e quando
Le opere d arte hanno associata l informazione sugli autori Per i reperti archeologici si vuole mantenere l informazione sulla data del ritrovamento Gli oggetti della sezione etnografica sono divisi in tre tipologie: costumi, mobili, suppellettili Ogni sezione comprende alcune sale. Le sale possono essere condivise da sezioni diverse e l attribuzione di una sala ad una sezione puo cambiare nel tempo. Le sezioni hanno un impiegato responsabile
Database dei comuni (alpini?) Il database contiene per ogni comune, le seguenti informazioni: la sua collocazione geografica mappe territoriali l'elenco delle frazioni in cui è suddiviso dati sulla popolazione (residenti divisi in varie fasce) i riferimenti degli organi ammistrativi (sindaco, segretario comunale etc.) Dati e riferimenti sui servizi comunali (scuole, guardia medica ecc.) Dati sulle attività produttive (elenco delle imprese divise in varie categorie: commerciali, artigianali e agricole)
Modello relazionale I dati sono organizzati in relazioni le relazioni possono essere interpretate/visualizzate come tabelle un database è un insieme di relazioni
N.Inv Rappresentazione tabellare dei dati: esempio Libro Autore Titolo Anno_ed. Casa ed. Colloc.
Esempio rubrica COGNOME NOME TEL. Tanzi Rosario 095 89... Federici Susanna 011 55... De Bernardi Silvio 06 44...
Modello relazionale Relazione su due insiemi A e B è un sottoinsieme del prodotto cartesiano A x B Esempio sposato_con Persone x Persone figlio_di Persone x Persone vive_a Persone x Città Analogamente si possono considerare relazioni tra molti insiemi: A1 x.xan
Esempio di relazione Persone= {Paolo, Luca,Mario} Città={Torino,Roma} Persone x Città = {(Paolo, Torino), (Paolo, Roma), (Luca, Torino), (Luca, Roma), (Mario, Torino), (Mario, Roma)} Vive_a, ad esempio, è la seguente relazione: Vive_a = {(Paolo, Torino), (Luca, Torino), (Mario, Roma)}
Esempio di relazione (tabelle) Persone= {Paolo, Luca,Mario} Città={Torino,Roma} Persone x Città Vive_a Persone Città Persone Città Paolo Paolo Luca Luca Torino Roma Torino Roma Paolo Luca Mario Torino Torino Roma Mario Torino Mario Roma
Figlio di (Persone x Persone) Sono relazioni diverse! Persone Paolo Carla Mario Persone Anna Luca Flavio Persone Anna Luca Flavio Persone Paolo Carla Mario
Relazioni e Attributi Attributi: nomi che specificano un ruolo in una relazione, esempi: sposato_con(marito, Moglie) figlio_di(figlio, Genitore) vive_a(nome,citta,provincia) libro(n.inv, Autore, Titolo, Anno_edizione, Casa_editrice, Collocazione) Gli attributi devono avere nomi differenti
ESEMPIO DATABASE ESAMI Prima idea: un unica tabella: ESAME(Nome,Cognome,DataNascita, Matricola,Titolo, Docente,Voto,Lode) me Cognome D.Nasc Matricola Titolo Docente Voto Lode iorgio Rossi 12/12/1978 st1234507 Informatica Olivetti 28 NO na Bianchi 23/4/1979 st3234508 Storia Ferrero 24 NO dell'arte berto Verdi 24/2/1978 st5534507 Informatica Olivetti 30 SI na Bianchi 23/4/1979 st3234508 Biologia I Monti 25 NO iovanni Neri 13/11/1980 st2534599 Storia dell'arte Ferrero 30 SI
Organizzazione Inefficiente! Il database contiene informazione ridondante: per ogni esame sostenuto si ripetono tutti i dati dello studente per ogni corso si ripetono titolo e docente
Organizzazione migliore: STUDENTE(Nome,Cognome,Matricola,Data di Nascita) CORSI(Titolo,Docente,Codice Corso) ESAMI(Codice Corso,Voto,Lode,Data, Matricola)
Nome Cognome Matricola Data Nascita Giorgio Rossi st1234507 12/12/1978 Anna Bianchi st3234508 23/4/1979 Alberto Verdi st5534507 24/2/1978 Giovanni Neri st2534599 13/11/1980 Studenti Titolo Docente Codice Corso Informatica Olivetti 07081 Storia dell'arte Ferrero 07032 Biologia I Monti 04051 Corsi Codice Corso Voto Lode Matricola 07081 28 NO st1234507 07032 24 NO st3234508 07081 30 SI st5534507 04051 25 NO st3234508 07032 30 SI st2534599 Esami
Terminologia DOMINIO: insieme di valori degli attributi es. Nomi di persona, Nomi di città, Numeri interi, stringhe di al più 80 caratteri FORMATO: rappresentazione degli elementi di un dominio es. tre cifre decimali per i reali
SCHEMA DI RELAZIONE R(A1,, A_n) R relazione Ai attributi ISTANZA DI RELAZIONE (o semplicemente relazione) insieme di tuple t t=<v1, v2,, vn > : n-tupla I singoli valori vi appartengono al dominio dell attributo Ai
Istanza di relazione = insieme di tuple Non ci possono essere tuple ripetute l ordine delle tuple non conta Database = insieme di istanze di relazioni Terminologia alternativa: tuple: records attributi: campi (fields)
schema La tabella rubrica Rubrica(Cognome,Nome,Tel) nomi degli attributi COGNOME NOME TEL. Tanzi Rosario 095 89... Federici Susanna 011 55... De Bernardi Silvio 06 44... tuple
Informazione incompleta: Valori Nulli Il valore speciale null aggiunto a tutti i domini, per indicare assenza di valore indica: valore mancante, oppure valore sconosciuto Esempio PERSONE(Cognome,Nome,Indirizzo,Telefono) Il valore di Telefono potrebbe essere null.
Vincoli sulle Relazioni I valori contenuti nelle tabelle possono essere soggetti a vari tipi di vincoli che dipendono dalla realtà che si vuole rappresantare: vincoli di dominio: valori dei singoli attributi vincoli di tupla: valori di attributi correlati in una tupla vincoli di integrità valori di attributi in tuple diverse (anche in relazioni diverse)
Vincoli di dominio vincoli sui valori dei singoli attributi (vincoli di dominio), es: dato ESAMI(Studente,Voto, Lode,Corso) deve essere Voto >=18 AND Voto <=30 Vincoli sul valore di un attributo data
Vincoli di tupla vincoli sui valori di attributi correlati, es: Data la relazione ESAMI come prima deve essere not (Lode = Yes) OR Voto = 30 equivalente a Lode= No OR Voto = 30
Connettivi booleani: tavole di verità Negazione Congiunzione Disgiunzione A Vero Falso Not A Falso Vero A B A And B Vero Vero Vero Vero Falso Falso Falso Vero Falso Falso Falso Falso A B A Or B Vero Vero Vero Vero Falso Vero Falso Vero Vero Falso Falso Falso
Relazioni boolene not (A and B) = not (A) or not(b) not (A or B) = not (A) and not(b) La funzione imp (if) - implica A imp B =def not(a) or B La funzione sse (iff) A sse B =def (A imp B) and (B imp A) La funzione XOR -OR esclusivo A xor B =def (A or B) and not(a and B)
Implicazione Sono logicamente equivalenti: Se A allora B A solo se B A implica B Esempio: Se Mario viene alla festa allora Anna viene alla festa Mario viene alla festa solo se Anna viene alla festa Mario viene alla festa implica che Anna viene alla festa Tutte vengono rappresentate con not(a) or B o equivalentemente con A imp B
Altri esempi Lode = SI implica voto=30 Se lode= SI allora voto=30 Lode=SI solo se voto=30
Esempio Vincolo (complesso) Supponiamo che STUDENTE contenga anche gli attributi Borsa di Studio: valori {Yes, No} Reddito (della famiglia): euro Residente (nella città sede univ.): {Yes, No} Criterio per una borsa di Studio: ha una media >= 27 e un reddito <= 20000, oppure non è residente e ha una media >= 25 e un reddito <=25000
Codifica del Vincolo sia C il vincolo qui sotto: (media >= 27 AND reddito <= 20000) OR (residente = NO AND media >= 25 AND reddito <=25000) Condizione necessaria: BorsaDiStudio = YES implica C, tradotto in BorsaDiStudio = NO or C Condizione sufficiente: C implica BorsaDiStudio = YES tradotto in Not (C) or BorsaDiStudio= YES
Vincoli di chiave superchiave: sottoinsieme SK di attributi di una relazione per cui se i j allora ti[sk] tj[sk] Una superchiave identifica un entità in modo univoco in una relazione CHIAVE PRIMARIA = superchiave minimale non ci possono essere tuple diverse con la stessa chiave primaria (Indichiamo in modo sottolineato gli attributi che formano la chiave primaria)
Chiave Primaria STUDENTE(Nome,Cognome,Matricola,Data di Nascita) CORSI(Titolo,Docente,Codice_Corso) ESAMI(Codice Corso,Voto,Lode,Matricola) La chiave primaria di STUDENTE è l'attributo Matricola La chiave primaria di CORSI è l'attributo Codice_Corso La chiave primaria di ESAMI è la coppia di attributi Codice_Corso, Matricola
VINCOLI DI INTEGRITA sull entità: chiave primaria null integrità referenziale: consistenza tra tuple di due relazioni integrità semantica: vincoli che dipendono dalla realtà rappresentata (es. numero di libri in prestito a ciascun utente < 5, in una relazione in cui ogni prestito compaia come una tupla separata)
Vincoli di Integrità referenziali In un database relazionale le tabelle sono collegate tra loro tramite i valori di attributi correlati (o comuni) Esempio Il collegamento tra la relazione ESAMI e STUDENTI puo essere espresso dall attributo comune Matricola Il collegamento tra la relazione CORSI e ESAMI puo essere espresso dall attributo comune Codice Corso
Un vincolo di integrità referenziale tra un attributo A di una relazione R1 e una relazione R2 è soddisfatto se: il valore di ciascuna tupla di R1 per l attributo A esiste come valore della chiave primaria di una tupla di R2 In questo caso si dice anche che A è una chiave esterna (foreign key) di R1 La definizione si generalizza al caso di un insieme di attributi X anziche un singolo attributo A
ESEMPIO: Vincoli di Integrità referenziale STUDENTE(Nome,Cognome,Matricola,Data di Nascita) CORSI(Titolo,Docente,Codice Corso) ESAMI(Codice Corso,Voto,Lode,Matricola) Vincolo referenziale: tra Matricola di ESAMI e STUDENTE: i valori di Matricola di Esami devono esistere come valori della chiave primaria (Matricola di STUDENTE)
Altro Esempio (i vincoli referenziali riguardano attributi con nomi diversi) Auto(Targa, Marca, Modello, Proprietario) Proprietario(Nome,CodiceFiscale,Indirizzo) Incidente(NumSinistro,Veicolo1,Veicolo2, Data,Luogo) Vincoli di Integrita Referenziale: Tra Proprietario e CodiceFiscale Tra Veicolo1 e AUTO (sulla chiave primaria Targa) Tra Veicolo2 e Targa e AUTO (sulla chiave primaria Targa)
Funzionalità del DBMS relazionale Funzioni per definizione della base di dati inserimento / rimozione /aggiornamento di informazioni deve soddisfare i vincoli! Interrogazione Access DBMS relazionale in ambiente Office