Facoltà di Pianificazione del Territorio A.A. 2011/2012 Informatica Le basi di dati 2 Dati e Informazioni l Un dato in sé non costituisce un’informazione in quanto consiste semplicemente di un insieme di simboli; ad es., la sequenza di caratteri Mario Bianchi e le cifre 06 658976 non hanno un significato intrinseco. l Quando un dato viene interpretato come risultato di un’interrogazione (e.g., “chi è il direttore della biblioteca e qual è il suo numero telefonico?”) diventa informazione. l Quindi il significato (il contenuto) di un dato è solo in relazione ad una domanda 3 Introduzione alle basi di dati l La raccolta, l’archiviazione e la manipolazione di dati sono operazioni ricorrenti in molte attività (e.g., conti bancari, elenchi telefonici, elenchi degli iscritti ad un corso di laurea ecc.). l Tali attività possono prescindere dall’uso del computer; tuttavia questi ultimi garantiscono una memorizzazione ed un trattamento dei dati stabili ed efficienti. l Esempio eclatante: cataloghi bibliotecari, dove si usavano (e si usano ancora) le schede in cartoncino l Sempre più necessario: collegamento tra informazioni diverse (i così detti “controlli incrociati”) l I DataBase Management System (DBMS) sono le applicazioni per questo trattamento dei dati 4 L’accesso tradizionale ai dati l Fino agli anni ‘60: non esistevano software specifici per la gestione dei dati, che venivano memorizzati in file e manipolati per mezzo di linguaggi di programmazione tradizionali. l L’organizzazione dei dati per mezzo di file comporta dei problemi di condivisione quando più utenti devono lavorare sugli stessi dati. l Inoltre l’autonomia delle singole procedure operanti sui file, comporta la duplicazione di questi ultimi con la conseguente problematica di garantire la consistenza dei dati (e.g., date due copie di uno stesso file, quale è da ritenersi valida?). l I DBMS mirano a risolvere questi problemi, in modo efficiente e generale 5 Consistenza e concorrenza 6 Caratteristiche dei DataBase e dei DataBase Management Systems l Un database può contenere una grande quantità di dati; per questo utilizza principalmente la memoria secondaria di un computer. l I database sono condivisi: essi garantiscono l’accesso a più applicazioni ed utenti contemporaneamente. l La memorizzazione dei dati in un database è permanente: i database sono persistenti. l I DBMS sono affidabili; essi assicurano che i dati non andranno persi oppure che potranno essere recuperati, in caso di problemi hardware o software, tramite meccanismi di backup e/o data recovery. l I DBMS sono efficienti: svolgono il loro compito utilizzando al meglio le risorse del sistema. 7 Caratteristiche dei DataBase e dei DataBase Management Systems Un buon sistema di gestione di grandi quantità di dati deve tenere conto e risolvere una serie di problematiche: l Privilegi d’uso: L’accesso ai dati e la loro manipolazione sono regolati da privilegi d’uso. Tramite un meccanismo di autenticazione i DBMS assicurano la privacy dei dati: ogni utente è in grado di accedere soltanto ai dati che gli competono. l Automatismi: Il sistema esegue delle operazioni senza esplicita richiesta (es: inviare un sollecito per la restituzione del prestito tramite e-mail). l Migrazioni: È possibile modificare i programmi per la gestione degli archivi senza alterare la fruibilità dei dati. l Coordinazione: I DBMS aiutano a tenere sotto controllo la coordinazione delle azioni di più utenti sui file di dati risolvendo il problema dell inconsistenza dei dati e il problema della concorrenza. 8 Caratteristiche dei DBMS l I DBMS sono prodotti costosi e complessi la cui introduzione in una realtà esistente può comportare notevoli investimenti in termini di hardware, software ed addestramento di personale. l Però i DBMS permettono di incrementare la produttività degli utenti che li utilizzano, a lungo termine. 9 Possibili problemi Rischio di ridondanza: informazioni ripetute Rischio di incoerenza: le due versioni possono non coincidere Archivi e Basi di Dati I 3 livelli di astrazione di un DB Realtà Modello Concettuale Modello Logico Modello Fisico ricerca, all'interno della descrizione del problema, dei termini piu' significativi, con gli eventuali sinonimi, che indicano quali sono i contenuti del database che si vuole costruire. È utile scrivere questi termini e spiegare il loro significato, come in una specie di vocabolario. Al termine di questa fase viene prodotto uno schema chiamato Schema Entità-Relazioni che rappresenta in forma grafica i collegamenti tra gli oggetti astratti individuati. Partendo dallo schema E-R si crea un altro schema che spiega concretamente come realizzare il vero e proprio database cioè gli archivi e i collegamenti tra gli archivi. Il modello fisico è ottenuto dall’implementazione, attraverso opportuni software, degli archivi e delle modalità di accesso. 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 Il modello concettuale E-R Gli elementi che compongono il modello EntitàRelazioni sono tre: • Le ENTITA’ • Le ASSOCIAZIONI (Relazioni) • Gli ATTRIBUTI 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 dello IUAV sono classificabili con il tipo di entità STUDENTE. Ciascun studente rappresenta quindi un’istanza dell’entità studente. Studente Associazioni (Relationship) E’ 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 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 • OPZIONALITA’: indica se è obbligatorio o facoltativo Un esempio Entità Persona Relazione Possiede Automobile Attributi Cognome Nome Titolo Codice Fiscale Produttore Modello Potenza Cilindrata PrezzoListino Associazione UNO a UNO Ad ogni elemento dell’entità 1 corrisponde uno ed un solo elemento dell’entità 2 Studente Consegue 1 E’ Conseguito da Diploma di 1 Laurea Esempio: All’università ciascun studente quando si laurea avrà un suo diploma di laurea (solo suo!) 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. 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. Schema concettuale (FILM) Entità Relazioni tra entità Diagramma Entità-Relazione (Chen 1970) Attributi di entità Schema Concettuale (E-R) Con cardinalità delle relazioni (MIN,MAX) 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 DB Relazionali. Tabelle l l l 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. 13 Tabelle che rappresentano Relazioni RECORD ATTRIBUTO 14 Record e Campi l l l 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. 15 Esempio SCHEMA della RELAZ. RECORD ATTRIBUTO VALORE (o CAMPO) Materia Data Matr. Voto Lode? IDUL 4/2/10 112233 29 no IUC 4/2/10 114422 30 si risultato_esame(IDUL,4/2/2010,112233,29) 16 campi o attributi Schema del DB L insieme dei record attuali si dice istanza 17 L’organizzazione dei dati 18 Schema e Istanze l In ogni base di dati esistono: l l 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. 19 Tabelle e Relazioni l Una tabella rappresenta una relazione se l l l l 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 l l l’ordinamento tra le righe è irrilevante l’ordinamento tra le colonne è irrilevante 20 Dominio dei campi l Un campo di una tabella è caratterizzato dal suo tipo, cioè dall’insieme dei suoi valori possibili, detto anche dominio del campo Esempio: Dominio del campo Matr: insieme dei numeri interi positivi formati da non più di 7 cifre Dominio del campo Nato_a: insieme dei nomi dei comuni italiani (o europei) 21 Esempio: orario ferroviario Quadro di una stazione ferroviaria 22 Il modello relazionale l Ogni tabella rappresenta quindi un insieme di record l Per accedere ai singoli record di una tabella si individua un campo, detto chiave della tabella, il cui contenuto è garantito unico tra vari record della tabella l Esempio: Tabella Studenti, chiave Matr 24 Chiave Primaria l l l 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 25 Chiavi Tabella Studenti, chiave Matr Tabella Corsi, chiave Codice Tabella Iscritti, chiavi Matr, Codice l Le chiavi possono essere usate per mettere in corrispondenza tabelle diverse. l Esempio: la tabella Iscritti può essere utilizzata come tramite per effettuare ricerche relative a dati che si trovano distribuiti nelle diverse tabelle 26 Chiave Primaria STUDENTE MATRICOLA COGNOME NOME DATA NASCITA Rossi Mario 11/11/1973 …. 112233 …. 27 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 28 Valori nulli 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) 29 Vincoli di integrità 30 Problema Date le tabelle Tabella Studenti, chiave Matr Tabella Corsi, chiave Codice Tabella Iscritti, chiavi Matr, Codice individuare i cognomi degli studenti iscritti al corso dal titolo “Fond. Informatica II”. 31 Soluzione algoritmo di una query in un DB l Individuare nella tabella Corsi i record con Titolo uguale a “Fond. Informatica II” e per ciascuno selezionare il contenuto del campo Codice: si ottiene così l’elenco di tutti i codici associati al corso in esame l Individuare nella tabella Iscritti tutti i record il cui campo Codice è uguale a uno degli elementi individuati al passo precedente e per ciascuno selezionare il contenuto del campo Matr: si ottiene così l’elenco di tutti i numeri di matricola degli studenti iscritti al corso l Individuare nella tabella Studenti tutti i record il cui campo Matr è uguale a uno degli elementi individuati al passo precedente, e per ognuno selezionare il contenuto del campo Cognome: si ottiene così l’elenco cercato. 32 DBMS Relazionali l Praticamente tutti i DATABASE MANAGEMENT SYSTEMS (DBMS) moderni sono basati sul modello relazionale l l E.g., Oracle, Access, MySQL, PostgreSLQ (open source) Disponibili per i principali sistemi operativi (Windows, UNIX) 33 Linguaggi orientati ai database l I linguaggi che consentono di accedere ad un database devono disporre delle seguenti funzionalità di base: l l l l l l Data Control Language (DDL): linguaggi che consentono di specificare la sicurezza della base di dati negando l accesso a certi utenti e consentendolo ad altri, tramite un sistema di password. Data Definition Language (DDL): linguaggi che consentono di definire gli schemi logici di un database (schemi delle tabelle). Data Manipulation Language (DML): linguaggi che consentono di interrogare e modificare le istanze dei database (inserimenti e cancellazioni di record). Query Language (QL): linguaggi che consentono di realizzare delle interrogazioni. Il più noto e diffuso è SQL (Structured Query Language). Nota: questi NON sono linguaggi di programmazione! 34 I principali DBMS l Software proprietario l l l l l l l l l DB2 (IBM) Caché (InterSystems) FileMaker Pro (FileMaker, Inc., in precedenza Apple) Microsoft SQL Server (Microsoft) Microsoft Access (Microsoft) Oracle (Oracle Corporation) SQL Anywhere Studio (SyBase) Sybase SQL Server (SyBase) Open source o free software l l l l l l l Firebird SQL (The FirebirdSQL Foundation; derivato da InterBase) HSQL Database Engine MySQL (MySQL AB) PicoSQL (un Dbms italiano) PostgreSQL (in precedenza Postgres) (PostgreSQL Global Development Group) SQLite(di pubblico dominio) ZODB 35 Risultato di una query l Il risultato di un’interrogazione espressa mediante un linguaggio di interrogazione è una tabella 36 Structured Query Language (SQL) l Inizialmente ogni DBMS ha adottato un suo proprio linguaggio di interrogazione. l L’esigenza di standardizzazione ha portato i principali sistemi relazionali ad adottare un linguaggio comune, chiamato Structured Query Language (SQL). l SQL non è solo un linguaggio di interrogazione ma consente anche di manipolare dati: inserire, eliminare e modificare il contenuto di record. 37 Structured Query Language (SQL) Un Esempio di interrogazione SELECT FROM WHERE l C1, …, Cn T1, …, Tm P Genera una nuova tabella con i campi C1, …, Cn estratti dalle tabelle T1, …, Tm. Questa tabella comprende solo i record che soddisfano la condizione P 38 campi o attributi Schema del DB 39 Esempio SELECT FROM WHERE l Matr, Cognome, Nome Studenti Nato_a = ‘Venezia’ Genera una nuova tabella con i campi Matr, Cognome, Nome, estratti dalla tabella Studenti. Questa tabella comprende l’elenco degli studenti nati a Venezia 40 Esempio SELECT FROM WHERE AND AND SORT BY l Studenti.Matr, Cognome, Nome Studenti, Iscritti, Corsi Studenti.Matr = Iscritti.Matr Iscritti.Codice = Corsi.Codice Corsi.Titolo = ‘Fond. Informatica II’ Cognome Genera una tabella con l’elenco, ordinato per cognome, degli studenti iscritti al corso di Fondamenti di Informatica II, e per ognuno di essi include il numero di matricola, il cognome e il nome. 41 SQL: inserimento dati INSERT INTO Studenti VALUES (4321, 'Verdi', 'Paolo', '12.12.1980', 'Pisa'), (4322, 'Bianchi', 'Luca', '21.11.1980', 'Roma') Inserisce nella tabella Studenti due nuovi record con il contenuto specificato, campo per campo. SQL: cancellazione di dati da un DB DELETE FROM WHERE l Studenti Matr < 1000 Cancella dalla tabella Studenti tutti i record che soddisfano la condizione specificata. 43 SQL: creazione tabella CREATE TABLE Studenti( Matr integer, Cognome varchar(50), Nome varchar(50), Nato_il date, Nato_a varchar(50) ) SQL consente di creare nuove tabelle da inserire in un DB. Per generare una tabella bisogna specificarne lo schema, elencando I campi e precisando il dominio di ogni campo SQL: eliminazione di una tabella l SQL consente di rimuovere facilmente una tabella da un DB; per esempio, il seguente comando elimina la tabella Studenti, con tutto il suo contenuto, dal DB. DROP TABLE Studenti 45 SQL è un linguaggio di programmazione ? l SQL fornisce una sintassi per descrivere cosa si vuole ottenere nell’interrogazione, e non come ottenerlo: è l’interprete SQL a trasformare una query SQL in una procedura che viene eseguita sui dati. Questo distingue SQL dai linguaggi di programmazione come il C o il Basic, che invece richiedono al programmatore di specificare esplicitamente le procedure con cui trattare i dati. 46 Tabella “Impiegato” Nome Cognome Dipart Ufficio Stipendio Città Mario Rossi Amministr 10 15 Milano Carlo Bianchi Prod 20 12 Torino Giuseppe Verdi Amministr 20 13 Roma Franco Neri Distrib 16 15 Napoli Carlo Rossi Direzione 14 27 Milano Lorenzo Lanzi Direzione 7 21 Genova Paola Burroni Ammistr 75 13 Venezia Marco Franco Prod 20 14 Roma 47 47 Interrogazione 1 select Stipendio as Salario from Impiegato where Cognome = ‘Rossi’ Salario 15 27 48 48 Interrogazione 2 select * from Impiegato where Cognome = ‘Rossi’ tutti Nome Cognome Dipart Ufficio Stipendio Città Mario Rossi Amministr 10 15 Milano Carlo Rossi Direzione 14 27 Milano 49 49 Interrogazione 3 select Stipendio/12 as StipMens from Impiegato where Cognome = ‘Bianchi’ StipMens 1 50 50 Vantaggi e svantaggi dei DBSM Pro l Dati come risorsa comune, base di dati come modello della realtà l gestione centralizzata con possibilità di standardizzazione ed “economia di scala” l disponibilità di servizi integrati l riduzione di ridondanze e inconsistenze l indipendenza dei dati (favorisce lo sviluppo e la manutenzione delle applicazioni) 51 Vantaggi e svantaggi dei DBSM Contro l costo dei prodotti l Necessità di acquisire le competenze di progettazione e amministrazione di un sistema complesso 52 Applicazioni evolute l l Basi di dati multimediali: si occupano della gestione di differenti tipi di dati (testi, immagini, suoni, video, ecc..) e la risposta ad interrogazioni su di essi può comportare un diverso mezzo Le operazioni permesse all interno di questi sistemi devono essere sia quelle valide per i testi (lettura e scrittura) sia quelle per trattare informazioni audiovideo (play, pause, stop, ecc…) 53 Applicazioni evolute l GIS (Geographic Information System): orientato ad applicazioni in cui è importante la dislocazione geografica degli oggetti (es. cartine stradali, mappa della salinità dell acqua, ecc…). Esempio: Google Earth l Sistemi di Data Warehouse: trattano dati che, una volta inseriti, non vengono più modificati (es. rappresentano l andamento storico di un azienda). Le strutture di accesso alle tabelle sono quindi ottimizzate. l Sistemi di Data Mining: sistemi per l estrazione di dati da database molto dinamici: per esempio nelle ricerche di mercato. 54