Abilità Informatiche A.A. 2010/2011 Lezione 8: Basi di Dati Facoltà di Lingue e Letterature Straniere Base di dati (accezione generica, metodologica) Insieme organizzato di dati utilizzati per il supporto allo svolgimento delle attività di un ente (azienda, ufficio, persona) (accezione specifica, tecnologica) 2 insieme di dati gestito da un DBMS (Data Base Management System) Sistemi di gestione di basi di dati (DBMS) DBMS = Sistema software in grado di gestire collezioni di dati che siano (anche): 3 grandi: di dimensioni (molto) maggiori della memoria centrale dei sistemi di calcolo utilizzati persistenti: con un periodo di vita indipendente dalle singole esecuzioni dei programmi che le utilizzano condivise: utilizzate da applicazioni diverse Caratteristiche di un DBMS Un sistema DBMS deve garantire: affidabilità (resistenza a malfunzionamenti hardware e software) privatezza (con una disciplina e un controllo degli accessi). Come ogni prodotto informatico, un DBMS deve essere efficiente (utilizzando al meglio le risorse di spazio e tempo del sistema) efficace (rendendo produttive le attività dei suoi utilizzatori). 4 Alcuni DBMS in commercio 5 Microsoft Access IBM-DB2 Oracle Informix Sybase Microsoft SQLServer Ingres MySql (open-source) Sistemi per basi di dati DATA BASE = Collezione omogenea di informazioni strutturate in sequenze di dati che hanno tutti la stessa struttura (insieme di archivi a disposizione di più utenti o applicazioni) SISTEMI PER LA GESTIONE DI DATABASE (DBMS) = sistemi software che gestiscono dati di un sistema informativo, assumendo il ruolo di interfaccia verso i programmi utente. 6 Condivisione Ogni organizzazione (specie se grande) è divisa in settori o comunque svolge diverse attività. A ciascun settore o attività corrisponde un (sotto-) sistema informativo (privato o porzione di un sistema più grande). Possono esistere sovrapposizioni fra i dati di interesse dei vari settori. Una base di dati è una risorsa integrata, condivisa fra i vari settori. 7 Un esempio 8 Un esempio 9 Possibili problemi Rischio di ridondanza: informazioni ripetute Rischio di incoerenza: le due versioni possono non coincidere 10 Archivi e Basi di Dati 11 I 3 livelli di astrazione di un DB utente utente utente utente utente SCHEMA ESTERNO SCHEMA ESTERNO SCHEMA LOGICO SCHEMA CONCETTUALE DATA BASE 12 utente SCHEMA ESTERNO Architettura di un DBMS 13 I 3 livelli di astrazione di un DB Schema esterno: descrizione di una porzione della base di dati in un modello logico attraverso “viste” parziali, o derivate, che possono prevedere organizzazioni dei dati diverse rispetto a quelle utilizzate nello schema logico, e che riflettono esigenze e privilegi di accesso di particolari tipologie di utenti; ad uno schema logico si possono associare più schemi esterni Schema logico: descrizione dell‟intera base di dati nel modello logico “principale” del DBMS, ad esempio la struttura delle tabelle Schema concettuale: descrizione del tipo di dati che si vogliono rappresentare, che prescinde dalla realizzazione fisica dei dati particolari, ovvero identificazione degli oggetti che si vogliono rappresentare, dei loro attributi e delle relazioni tra questi oggetti Schema fisico: rappresentazione dello schema logico per mezzo di strutture fisiche di memorizzazione, ovveri specifici files 14 Indipendenza Fisica e Logica L‟utilizzo dei Data Base offre un vantaggio quale l‟indipendenza dei dati e dei programmi; é possibile modificare l‟organizzazione dei dati e dei programmi indipendenti l‟uno dall‟altro, vi sono due tipi di indipendenza: Indipendenza fisica: la disposizione e l‟organizzazione fisica dei dati sui supporti di memoria di massa possono essere cambiate senza cambiare l‟organizzazione logica e consiste nella possibilità di modificare lo schema fisico (la struttura fisica) dei dati senza dover modificare i programmi applicativi che usano i dati. Indipendenza logica: la disposizione e l‟organizzazione logica dei dati può essere cambiata senza modificare le applicazioni non coinvolte direttamente e consiste nella possibilità di modificare lo schema concettuale senza dover modificare il software applicativo 15 Dalla realtà al modello fisico Realtà Modello Concettuale È una rappresentazione astratta della realtà, organizzata in forma grafica in modo da ottenere uno schema dei dati. E’ comprensibile da chiunque, anche senza conoscenze informatiche. MODELLO TIPICO: Entità-Relazioni Modello Logico Il modello logico dota i dati di una struttura utile per semplificare ed ottimizzare le operazioni di Archiviazione, Interrogazione e manipolazione dei dati. STRUTTURA TIPICA: Data Base Modello Fisico Il modello fisico è ottenuto dall’implementazione, attraverso opportuni software, degli archivi e delle modalità di accesso. Si tratta di file registrati su H.D. CASO TIPICO: uso del software ACCESS di Microsoft e creazione del file *.mdb 16 Un semplice modello concettuale STUDENTE Matricola Cognome, Nome Data di Nascita RISULTATI_ESAMI Matricola Materia Data Voto 17 Modellazione Logica Una volta decisi quali sono i concetti importanti da rappresentare e quali sono i loro attributi, occorre pensare come e‟ possibile rappresentare questa informazione usando una base di dati Questo è il compito della modellazione logica (attenzione: questa non esprime ancora proprietà di dati specifici, ma delle loro proprietà e/o relazioni) Esprimibile in diagrammi 18 Il modello concettuale E-R Gli elementi che compongono il modello Entità-Relazioni sono tre: • Le Entità • Le Associazioni (Relazioni) • Gli Attributi 19 Entità (Entity) L’entità è un oggetto concreto o astratto che ha un significato all’interno del modello dei dati anche se viene considerato isolato. Di solito si definisce un tipo di entità attraverso un nome e lo si rappresenta con un rettangolo. Esempio: Gli studenti di Ca’ Foscari sono classificabili con il tipo di entità studente. Ciascun studente rappresenta quindi un’istanza dell’entità studente. 20 Studente Associazioni (Relationship) È il legame che stabilisce un’interazione fra le entità Ogni relazione ha due versi e per ogni verso esiste un’entità di partenza e una di arrivo. L’associazione di solito è identificata da un verbo e viene rappresentata nel modello da un rombo. Esempio: Tra le entità Persona e Automobile si può instaurare la relazione possiede: Una persona possiede un’automobile ( verso) Una automobile è posseduta da una persona ( verso ) Persona 21 Possiede Automobile Attributi Gli attributi descrivono le proprietà delle entità Esempio: Gli attributi dell’entità Automobile possono essere: Produttore, Modello, Potenza, Cilindrata, PrezzoListino. Gli attributi sono caratterizzati da: • formato: è il tipo di formato assunto dall’attributo. Ad es. Stringa, Numerico, DataOra … • dimensione: è la quantità massima di cifre che occorrono per rappresentarlo • opzionalità: indica se è obbligatorio o facoltativo 22 Un esempio Entità Persona Relazione Possiede Automobile Attributi Cognome Nome Titolo Codice Fiscale Produttore Modello Potenza Cilindrata PrezzoListino Notare la differenza fra PrezzoListino e PrezzoAcquisto 23 Associazione UNO a UNO Ad ogni elemento dell’entità 1 corrisponde uno ed un solo elemento dell’entità 2 Studente 1 Consegue E’ Conseguito da Diploma di 1 Laurea Esempio: All’università ciascun studente quando si laurea avrà un suo diploma di laurea (solo suo!) 24 Associazione UNO a MOLTI Ad ogni elemento dell’entità 1 possono corrispondere più elementi dell’entità 2, mentre ad ogni elemento dell’entità 2 ne corrisponde uno solo dell’entità 1 Studente 1 Sostiene Valuta Prova di esame Esempio: Uno stesso studente sostiene più prove di esame, una per ciascun insegnamento del suo piano di studi. Ciascun esame registrato si riferisce ad un singolo studente. 25 Associazione MOLTI a MOLTI Ad ogni elemento dell’entità 1 possono corrispondere più elementi dell’entità 2 e viceversa Studente Studia E’ studiata da Materia Esempio: Ogni studente studia più materie (quelle del suo piano di studi) e per ogni materia ci sono vari studenti che la studiano. 26 Un esempio di schema logico: FILM Entità Relazioni tra entità Diagramma Entità-Relazione (Chen 1970) 27 Attributi di entità Schema logico (E-R) Con cardinalità delle relazioni (MIN,MAX) 28 Schema Logico (gerarchie ) 29 Schema logico (gerarchie) 30 Schema logico (completo) 31 Modelli di rappresentazione dei dati A partire dagli anni Settanta il modello dominante è stato il quello relazionale, proposto da Edgard F. Codd nel 1970 Per certi tipi di applicazioni (in particolare per basi di dati accessibili via Web) si fa molto uso di XML (vedi prossime lezioni) 32 Il modello relazionale L‟informazione è rappresentata nelle basi di dati sotto forma di relazioni r(x,y,z,w) Due tipi di relazioni rappresentate Relazioni rappresentate con tabelle che rappresentano un oggetto ed i suoi attributi risultato_esame(IUB,4/2/2008,112233,29) Relazioni tra le tabelle Per esempio, tra tabella studente e tabella risultato_esame 33 DB Relazionali. Tabelle Un database relazionale è formato da un insieme di tabelle (o relazioni) Ogni tabella è composta da righe, una diversa dall‟altra. Esempio: in un elenco telefonico ogni riga è composta di un cognome, un nome, un indirizzo, un numero di telefono. Il tipo dei dati (stringa o numero), il loro significato (cognome o numero di telefono) e la loro posizione (prima il cognome, poi il nome, ecc) sono prefissati. 34 Tabelle che rappresentano Relazioni RECORD ATTRIBUTO 35 Racord e campi Ogni riga di una tabella è strutturalmente identica alle altre, e viene detta record. Ogni record è composto da valori di tipo diverso, detti campi. I campi sono definiti una volta per tutte in uno schema della tabella. 36 Tabelle (o Relazioni) Una tabella è relativa ad una entità. Ogni riga della tabella corrisponde ad un‟istanza di questa entità. 37 Esempio SCHEMA della RELAZ. RECORD ATTRIBUTO VALORE (o CAMPO) Materia Data Matr. Voto IDUL 4/2/10 112233 29 no IUC 4/2/10 114422 30 si risultato_esame(IDUL,4/2/2010,112233,29) 38 Lode? Un altro esempio STUDENTE MATRICOLA COGNOME NOME DATA NASCITA Rossi Mario 11/11/1973 …. 112233 …. studente(112233,Rossi,Mario,11/11/1973) 39 L’organizzazione dei dati 40 Schema e istanze In ogni base di dati esistono: 41 lo schema, sostanzialmente invariante nel tempo, che ne descrive la struttura (aspetto intensionale); nell‟esempio, le intestazioni delle tabelle l‟istanza, costituita dai valori attuali, che possono cambiare molto e molto rapidamente (aspetto estensionale); nell‟esempio, il “corpo” di ciascuna tabella. Il concetto di relazione D1, D2, …, Dn (n insiemi anche non distinti) il prodotto cartesiano D1 ×D2 ×…×Dn , è l‟insieme di tutte le n-uple ordinate (d1, d2, …, dn) tali che d∈D1, d2∈D2 , …, dn∈Dn. una relazione matematica su D1, D2, …, Dn è un sottoinsieme del prodotto cartesiano D1 × D2 × … × Dn. D1, D2, …, Dn sono i domini della relazione. Il numero di n-uple è la cardinalità della relazione. Nelle applicazioni reali, la cardinalità è sempre finita. 42 Proprietà di una relazione In base alle definizione, una relazione matematica è un insieme di nuple ordinate: (d1, d2, …, dn) tali che d1∈D1 , d2∈D2 , …, dn∈Dn . Una relazione è un insieme, quindi: non è definito alcun ordinamento fra le n-uple; le n-uple di una relazione sono distinte l‟una dall‟altra; Dentro a ciascuna n-upla c‟è un ordine! .L‟i-esimo valore di ciascuna proviene dall‟i -esimo dominio, ovvero è definito un ordinamento fra i domini. 43 Esempio string × string × integer × integer Ciascuno dei domini ha un ruolo distinto, distinguibile attraverso la posizione: il primo e il terzo dominio si riferiscono a nome e reti della squadra ospitante; il secondo e il quarto a nome e reti della squadra ospitata. La struttura è posizionale 44 Tabelle e relazioni Una tabella rappresenta una relazione se i valori di ciascuna colonna sono fra loro omogenei (dallo stesso dominio) le righe sono diverse fra loro le intestazioni delle colonne sono diverse tra loro Inoltre, in una tabella che rappresenta una relazione 45 l‟ordinamento tra le righe è irrilevante l‟ordinamento tra le colonne è irrilevante Chiave primaria Ogni riga di ogni tabella (cioè ogni rappresentazione di un oggetto) deve avere almeno un campo che permetta di identificare quella riga in modo univoco non deve dunque esserci un altro record con lo stesso valore per quell‟attributo, anche se il valore può apparire in altri attributi Tale attributo è chiamato chiave primaria 46 Chiave primaria, un esempio STUDENTE MATRICOLA COGNOME NOME DATA NASCITA Rossi Mario 11/11/1973 …. 112233 …. 47 Chiave primaria multipla A volte la chiave è definita da più campi insieme. NOME COGNOME ESAME APPROVATO? Carlo Rossi IUB si Mario Rossi IUB no Carlo Bianchi IUC si 48 Chiavi artificiali RISULTATO_ESAME ID MATERIA 1 …. 2 IUB 3 …. DATA MATRICOLA VOTO 4/2/2008 112233 Tipicamente, numeri consecutivi, uno per record 49 29 Valori nulli (NULL) PERSONAGGI BIBLICI NOME Età PADRE Matusalemme 968 Enoch Eva NULL NULL …. Il valore NULL può essere dato a campi il cui valore non si conosce, o per casi in cui il valore non è definito (a volte i due casi sono distinti) 50 Vincoli di integrità 51 Vincolo di integrità Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l‟applicazione Ogni vincolo può essere visto come una funzione booleana (o un predicato) che associa ad ogni istanza il valore VERO o FALSO. Tipi di vincoli: vincoli intrarelazionali; casi particolari: vincoli su valori (o di dominio) vincoli di ennupla vincoli interrelazionali 52 Vincoli di ennupla Esprimono condizioni sui valori di ciascuna ennupla, indipendentemente dalle altre ennuple. Una possibile sintassi: espressione booleana (con AND, OR e NOT) di atomi che confrontano valori di attributo o espressioni aritmetiche su di essi. Un vincolo di ennupla è un vincolo di dominio se coinvolge un solo attributo Esempi: 53 (Voto >=18) AND (Voto <=30) (Voto =30) OR NOT (Lode = “e lode”) Lordo = (Ritenute - Netto) Relazioni tra tabelle Una base di dati relazionale permette di specificare, oltre che informazioni su attributi di oggetti, informazioni sulle relazioni tra oggetti Per esempio, che un particolare risultato di esame è stato ottenuto dallo studente Mario Rossi 54 Relazioni tra tabelle ID MATERIA DATA MATRICOLA VOTO 4/2/2008 112233 29 …. 456789 IUB …. MATRICOLA COGNOME NOME DATA NASCITA Rossi Mario 11/11/1973 …. 112233 …. 55 Operazioni su un Database relazionale Operazioni tipiche su un database relazionale DEFINIRE nuove tabelle e nuove relazioni AGGIUNGERE dati RITROVARE un sottoinsieme delle righe 56 Possibilmente restringendo il ritrovamento ad un sottoinsieme delle colonne VISUALIZZARE un sottoinsieme dei dati per scopi particolari Proiezione e Selezione PROIEZIONE (πtest): estrazione di una serie di colonne (attributi) da un DB SELEZIONE (σtest): estrazione di una serie di righe (record) 57 Dove test è un test che, se ha successo, aggiunge la colonna/riga sotto esame alla proiezione/selezione (rispettivamente) Esempio: DataBase film (1) 58 Esempio: DataBase film (2) Selezione su titolo ed anno Proiezione su selezione per valore dell‟attributo “nazione” 59 Esempio: DataBase film (3) Intersezione (⋂) tra gli attori di film diversi attori NON presenti in un film (differenza, - ) 60 Da E-R a database relazionale La progettazione nello schema E-R contiene costrutti che vanno “tradotti” nel sistema relazionale. Ciò comporta: La eliminazione delle gerarchie, riportando le informazioni su nodo padre. La traduzione delle entità come tabelle, i cui valori saranno i valori dei singoli individui appartenenti a quella entità La connessione tra le tabelle così stabilite 61 DBMS Relazionali Praticamente tutti i DATABASE MANAGEMENT SYSTEMS (DBMS) moderni sono basati sul modello relazionale E.g., Oracle, Access, MySQL, PostgreSLQ (open source) Disponibili per i principali sistemi operativi (Windows, UNIX) 62 Una tabella in Access 63 Relazioni tra tabelle 64 Gerarchie come relazioni 65 Gerarchie come relazioni ‘‘Distribuzione o Produzione’’ 66 Entità come Relazioni In un diagramma ER, le entità sono collezioni di individui, ciascuno dotato di attributi con valori. Rese come tabelle: EDIZIONE(codice, titolo, nazione, durata, lingua, vietato) FILM(codice, titolo, durata, anno, nazione) 67 Collegare Tabelle EDIZIONE(codice, titolo, nazione, durata, lingua, vietato) FILM(codice, titolo, durata, anno, nazione) Come specificare che una edizione è l‟edizione di un certo film? Aggiungendo alla tabella EDIZIONE una chiave esterna (qui, il numero di codice del film). La chiave si specifica aggiungendo ai valori di EDIZIONE il nome della relazione che contiene la chiave: EDIZIONE(codice, titolo, nazione, durata, lingua, vietato, film) 68 Impossibile fare il contrario, visto che un film ha tipicamente molte edizioni: un campo può contenere un solo valore! Collegare Tabelle con relazioni di tipo N-a-N Come specificare che un film ha la relazione di CAST con molti attori, ed una PERSONA ha spesso recitato in molti FILM? E‟ necessario indicarlo in maniera indiretta, tramite una nuova relazione (qui, CAST), che conterrà DUE chiavi esterne: PERSONA(nome, nazione, data_di_nascita) FILM(codice, titolo, durata, anno, nazione) CAST(persona, film, personaggio) 69 Regole di derivazione: dai diagrammi ER alle tabelle 1. Ogni ENTITA’ diventa una tabella 2. Ogni istanza di un’entità sarà perciò un record della tabella 3. Ogni ATTRIBUTO di un’entità diventa un campo di ciascuno dei record della tabella e ne eredita le caratteristiche 4. L’identificatore univoco di un’entità diventa Chiave Primaria (Primary Key) del record della tabella 5. L’associazione UNO a UNO diventa una tabella contenente gli attributi di entrambe le entità 6. L’associazione UNO A MOLTI si traduce in due tabelle, uno per ciascuna delle entità della relazione 7. L’identificatore univoco dell’entità di partenza nell’associazione UNO A MOLTI diventa Chiave Esterna (Foreign Key) dell’entità di arrivo, cioè l’attributo che è Chiave Primaria del primo archivio diventa un campo dei record del secondo archivio 8. L’associazione MOLTI A MOLTI diventa una nuova tabella in aggiunta alle due archivi derivate dalle due entità legate dall’associazione. Questa nuova tabella sarà formata da record che contengono le chiavi primarie delle due tabelle più gli eventuali attributi dell’associazione 70 Tabella da associazione UNO a UNO Studente Nome Cognome Matricola 1 Consegue E’ Conseguito da Diploma di laurea 1 TipoDiploma Anno Voto L’archivio che deriva è dato dalla sola tabella DIPLOMATI che contiene come campi tutti gli attributi di Studente e tutti quelli di Diploma 71 Tabella Laureati Archivio Campo 72 Tipo Nome String*25 Cognome String*25 Matricola Laureati Chiave PK Long Int TipoLaurea String*50 Anno Integer Voto Integer Tabella da associazione UNO a MOLTI Studente 1 Sostiene Valuta Nome Cognome Matricola Classe Prova di Esame Materia TipoEsame Voto DataSvolgim IDVerifica L’archivio che deriva è formato da 2 tabelle: Studenti con campi: Nome,Cognome,Matricola (PK) Verifiche con campi: Materia, TipoVerifica, Voto, DataSvolgim e MatricolaStudente (FK) 73 Tabelle Studenti ed Esami Archivio Studenti Campo 74 Tipo Nome String *25 Cognome String *25 Matricola Prove di Esame Chiave PK Long Int Materia String*25 TipoVerifica String*25 Voto Real DataSvolgim Date IDVerifica PK Long Int MatricolaStudente FK Long Int Archivio da associazione MOLTI a MOLTI Docente Insegna E’ tenuto da Corso diventa Docente CognomeNome ID Materia Qualifica 75 1 Modulo NumeroOre 1 Corso Sigla NumeroAlunni Aula Archivi Docenti, Classi, Insegna Archivio Campo Chiave CognomeNome Docenti ID Modulo String*50 PK Integer Materia String*25 Qualifica String*15 Sigla ClasCorsosi Tipo PK String*5 NumeroAlunni Integer Aula Integer IDdoc PK Integer SiglaModulo PK String*5 NumeroOre Integer Regole di derivazione 76 Il linguaggio SQL per interrogare un database Le informazioni in una base di dati possono essere ritrovate mediante INTERROGAZIONI In un database relazionale moderno le interrogazioni sono fatte utilizzando un linguaggio di interrogazione chiamato SQL (Simple Query Language) 77 Sintassi di SQL Diversi tipi di comandi: DDL (Data Definition Language: comandi per la creazione e l‟update del DB) DML (Data Manipulation Language: comandi per la interrogazione del DB) Create TABLE persona ( Nome varchar(50) PRIMARY KEY, Nazione varchar(50), Data_Nascita date ); 78 SELECT nome, nazione, data_nascita FROM persona WHERE nazione = ‘Italia’; Creare una tabella con SQL CREATE TABLE persona ( Codice Titolo Anno Durata Nazione ); 79 integer PRIMARY KEY, varchar(50), NOT NULL, varchar(4), integer, varchar(50), DEFAULT „Italia‟, Creare una associazione tra tabelle con SQL CREATE TABLE cast ( persona film personaggio PRIMARY KEY ); 80 varchar(50), REFERENCES persona(nome), integer, REFERENCES film(codice), varchar(50), (persona, film) Popolare un DB con SQL Comandi INSERT, UPDATE, DELETE 1. INSERT INTO film VALUES (5, „Il sesto senso‟, 1999, 107, „USA‟); 2. INSERT INTO film(codice, titolo, anno) VALUES (5, „Il sesto senso‟, 1999); 3. UPDATE film SET durata = 130 WHERE titolo = „Il senso senso‟; 4. DELETE FROM persona WHERE nazione = „Italia‟; Il secondo comando inserisce valori NULL per gli attributi non specificati; Il quarto comando distrugge un‟intera tupla (record) della tabella persona se sono verificate le condizioni indicate 81