Corso di Basi di Dati Corso di Laurea in Informatica per il Management Università di Bologna Docente: Prof. Marco Di Felice Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/ 1 INDICE Presentazione Obiettivi del corso Contenuti del corso A che serve studiare le basi di dati? Qualche suggerimento … 2 Docente Prof. Marco Di Felice Dipartimento di Informatica – Scienza e Ingegneria (DISI) Via M. Anteo Zamboni 7, 40126 Bologna Email: [email protected], [email protected] Sito web: http://www.cs.unibo.it/~difelice Orario di ricevimento: Mercoledì, ore 10-12 (mail richiesta) 3 Orari del Corso http://www.cs.unibo.it/~difelice/dbsi/ Lunedì, ore 15.30-18.30, Aula Ercolani 1 Giovedì, ore 16.30-18.30, Aula Ercolani 1 Venerdì, ore 8.30-10.30, Aula Ercolani 1 Durata corso: 19 Settembre –19 Dicembre 2016 (62 ore circa di lezioni frontali) – 9 c.f.u 4 Esame del Corso L’esame consiste di: Prova scritta (obbligatoria) Progetto (obbligatorio) Prova orale (facoltativa) Punti bonus (facoltativi) Calcolo del voto finale (senza orale): Voto_Finale=2/3* Voto_Scritto + 1/3 * Voto_Progetto + Punti Bonus 5 Esame del Corso Il progetto consiste nella progettazione ed implementazione di un Web Information System (database + interfaccia Web). Il progetto può essere svolto individualmente o in gruppi di max 3 unità, su traccia proposta dallo studente o dal docente. Date di consegna del progetto per l'a.a. 2016/2017: 1 Febbraio 2017, 1 Marzo 2017, 1 Aprile 2017, 1 Maggio 2017, 1 Giugno 2017, 1 Luglio 2017, 15 Settembre 2017. 6 Esame del Corso STEP DEL PROGETTO 1. Se la proposta viene dallo studente Email al docente con subject [DB1] Proposta Progetto DB 2017 indicando specifiche + lista partecipanti. 2. Consegna via email con subject: "[DB2] Consegna Progetto DB 2017”, allegando: (i) tutti i sorgenti del progetto; (ii) relazione. 3. Discussione del progetto presentazione powerpoint, in presenza di tutti i componenti del gruppo + demo del software. 7 Esame del Corso REGOLAMENTO D’ESAME SEI appelli dello scritto per anno accademico NON sono definiti vincoli di validità temporale sul voto del progetto e dell'esame scritto. NON ci sono restrizioni sul numero di prove che si possono sostenere TUTTAVIA … … Chi si presenta ad una prova, perde l'eventuale voto precedentemente acquisito. NON è possibile consultare testi, dispense, appunti, etc durante lo svolgimento della prova. 8 Libri di Testo P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di dati: Modelli e Linguaggi di interrogazione, 4ed, McGraw-Hill Altri testi di cui è consigliata la lettura sono riportati nel sito-web del corso … 9 INDICE Presentazione Obiettivi del corso Contenuti del corso A che serve studiare le basi di dati? Qualche suggerimento … 10 Obiettivi del Corso 1. Fornire le basi dell'utilizzo e della progettazione di basi di dati basate sul modello relazionale. 2. Introdurre le caratteristiche principali dei moderni software di gestione delle basi di dati (DBMS) 3. Introdurre gli strumenti e le metodologie per l'integrazione di una base di dati all'interno di un sistema informatico. 11 Obiettivi del Corso Source: http://www.atkearney.it/ 12 Obiettivi del Corso Chi produce questi dati? 1. Sistemi Informativi aziendali 1. Social media 1. Sorgenti di big-data 13 Obiettivi del Corso Perchè i dati sono importanti? R1. DATI come risorsa aziendale, alla stessa maniera del capitale, degli impanti di produzione, delle persone, e dei beni prodotti dall’azienda. sintesi livello sull’andamento aziendale Necessità Dati ad diogni Lead di strumenti software per Dati di sintesi di supporto al processo decisionale custodire, manipolare, analizzare i dati! Dati di dettaglio: ordini, dati fatturazioni, bilancio, contabilità, etc 14 Obiettivi del Corso Perchè i dati sono importanti? R2. DATI come bene prodotto dall’azienda e fonte di profitto! http://retweets.pro/buy-twitter-tweets 15 Obiettivi del Corso Perchè i dati sono importanti? R3 DATI = informazione = conoscenza = supporto alle decisioni! BUSINESS INTELLIGENCE (BI) (def.) Insieme di processi aziendali, metodologie tool per raccogliere i dati di un’azienda, ed estrarre informazioni di supporto alla decisioni strategiche. Source: http://www.conbusinessintelligence.com/ 16 Obiettivi del Corso Conoscenze sui dati dai corsi precedenti … Sistemi Operativi algoritmi e tecniche per rappresentare i dati digitali ed organizzarli all’interno della memoria secondaria (file system). Architettura di Internet algoritmi e tecniche per transmettere i dati in un sistema di comunicazione. Programmazione linguaggi e metodi per realizzare sistemi software in grado di gestire dati persistenti memorizzati su file esterni all’applicazione. 17 Obiettivi del Corso MODELLO DI SVILUPPO DI APPLICAZIONI VISTO FIN QUI APPLICAZIONE LOGICA di CONTROLLO LOGICA di GESTIONE DATI FILE L’applicazione contiene al suo interno la logica di controllo e la logica di gestione dei dati. Il sistema operativo (es. Linux) fornisce le operazioni di base per lettura/scrittura di file su memoria secondaria. 18 Obiettivi del Corso L’approccio alla gestione dei dati basato su file funziona bene nel caso di sistemi di piccole dimensioni, prevalentemente single-user, o con scarsa necessità di condivisione dei dati. PROBLEMI: 1) Scalabilità? gestione di grandi moli di dati? 2) Concorrenza? accesso da parte di utenti/applicazioni? 19 Obiettivi del Corso FOCUS sui DATI In questo corso, studieremo: modelli, linguaggi, e strumenti software al fine di: progettare, implementare ed analizzare collezioni (Basi) di Dati (DB) che siano: Persistenti Potenzialmente grandi Potenzialmente condivise (tra utenti/applicazioni) 20 INDICE Presentazione Obiettivi del corso Contenuti del corso A che serve studiare le basi di dati? Qualche suggerimento … 21 Contenuti del Corso Nel corso, forniremo un’introduzione al mondo delle basi di dati (DB) da quattro punti di vista: Utente come interagire con un DB (aggiungere/modificare informazioni, recuperare informazioni, etc). Progettista come progettare un DB. Programmatore come sviluppare applicazioni Web/stand-alone che si interfaccino con un DB [CENNI]. Analista come reperire informazioni da un DB attraverso tecniche di data-mining [CENNI]. 22 Contenuti del Corso Nel corso, forniremo un’introduzione al mondo delle basi di dati (DB) da quattro punti di vista: Utente come interagire con un DB (aggiungere/modificare informazioni, recuperare informazioni, etc). Progettista come progettare un DB. Programmatore come sviluppare applicazioni Web/stand-alone che si interfaccino con un DB [CENNI]. Analista come reperire informazioni da un DB attraverso tecniche di data-mining [CENNI]. 23 Contenuti del Corso Esistono appositi strumenti software, sviluppati fin dagli anni ‘60, per la gestione delle basi di dati. Database Management System (DBMS) sistema software che è in grado di gestire BD grandi, condivise e persistenti, in maniera efficiente e sicura. Da qui in avanti, per noi una base di dati è una collezione di dati gestita da un DBMS … 24 Contenuti del Corso PROBLEMA: Molti DBMS disponibili in commercio! Oracle, DB2, Microsoft SQL Server, MySQL, etc Non vedremo nel dettaglio i singoli tool (tranne qualche eccezione), ma studieremo aspetti generali comuni alla maggior parte dei DBMS: Modello Logico Come sono organizzati i dati all’interno di un DBMS? Linguaggi orientati ai dati Come si possono specificare operazioni sui dati? 25 Contenuti del Corso Un modello di dati è un insieme di concetti utilizzati per organizzare i dati di interesse utilizzando un DBMS. Modello Relazionale consente di organizzare i dati in record di dimensione fissa mediante tabelle. Colonne=Campi del record Righe= Record { Corso Codice Corso Nome Docente Basi di dati 0121 M. Di Felice Programmazione 1213 C. Laneve Sistemi Operativi 1455 D. Sangiorgi 26 Contenuti del Corso Ogni DBMS mette a disposizione degli appositi linguaggi per le operazioni di definizione dello schema e di manipolazione/accesso ai dati stessi. Linguaggi testuali ad hoc, specifici del DBMS in uso. Interfacce grafiche (es. Access). Linguaggio SQL (Structured Query Language) standard di riferimento per il modello dati relazionale. 27 Contenuti del Corso Esempio di operazioni sui dati: Implementare una procedura per recuperare in maniera automatica il codice del corso di “Basi di Dati”. CORSI NomeCorso CodiceCorso Nome Docente Basi di dati 0121 M. Di Felice Programmazione 1213 C. Laneve Sistemi Operativi 1455 D. Sangiorgi 28 Contenuti del Corso Con gli strumenti tradizionali (Java+file): String s; BufferedReader reader=new BufferedReader(new FileReader(“myfile”)); while (s=reader.readLine()) ! =null) { StringTokenizer token=new StringTokenizer(s); if (token.nextToken().equals(“Basi di dati”)) System.out.println(token.nextToken()); } PROBLEMI: reader.close(); - Codice alquanto elaborato - Necessario conoscere il path del file - Accesso sequenziale al file … 29 Contenuti del Corso Usando DBMS ed il linguaggio SQL Select CodiceCorso From CORSI Where (NomeCorso=“Basi di dati”); Completa astrazione da come/dove i dati sono memorizzati su memoria secondaria!!! 30 Programma del Corso Parte I: Modelli e Linguaggi per Basi di Dati Caratteristiche dei DBMS Il modello relazionale: concetti di base, vincoli di integrità e chiavi. Il linguaggio SQL: interrogazioni, definizione di viste, transazioni, trigger (MySQL) Oltre il modello relazionale: approcci NOSQL MongoDB e Cassandra 31 Contenuti del Corso Nel corso, forniremo un’introduzione al mondo delle basi di dati (DB) da quattro punti di vista: Utente come interagire con un DB (aggiungere/modificare informazioni, recuperare informazioni, etc). Progettista come progettare un DB. Programmatore come sviluppare applicazioni Web/stand-alone che si interfaccino con un DB [CENNI]. Analista come reperire informazioni da un DB attraverso tecniche di data-mining [CENNI]. 32 Contenuti del Corso Esempio: Progettazione di una base di dati per un ente che eroga corsi di formazione. SPECIFICA dei REQUISITI sui DATI Si vuole progettare una base di dati per una società che eroga corsi, di cui si vogliono rappresentare i dati dei docenti e dgli studenti. Per gli studenti, identificati da un codice, si vuole tenere traccia del codice fiscale, cognome, età, sesso, e corsi che stanno seguendo/hanno seguito. I corsi hanno un codice, un titolo e possono avere varie edizioni con date di inizio/fine e numero degli studenti. Per gli insegnanti, si vuole memorizzare il codice, il cognome, l’afferenza, il nome del corso. 33 Contenuti del Corso Esempio: Progettazione di una base di dati per un ente che eroga corsi di formazione. SPECIFICA delle OPERAZIONI sui DATI Inserimento di un nuovo studente Inserimento di un nuovo docente Inserimento di un nuovo corso Stampa di tutti i corsi attivi Stampa di tutti igli studenti dell’ultimo anno … 34 Contenuti del Corso PROBLEMA: Progettazione di un sistema informativo per gestire i dati di un’azienda/organizzazione … Q. Come procedere? A. L’implementazione dipende dal caso specifico, tuttavia esistono metodologie di ingegneria del software che possono essere adottate per una “buona base di dati”. 35 Contenuti del Corso Analisi dei requisiti e progettazione in dettaglio … Studio/analisi dei requisiti Fasi della progettazione Risultati SCHEMA LOGICO Progettazione logica SCHEMA FISICO Progettazione fisica 36 Contenuti del Corso Passo1: Produrre uno schema concettuale dei dati e delle relazioni tra dati che compongono il sistema informativo. Codice … Studente Inscrizione Modello Entità-Relazione (ER) Docenza Corso Codice Docente … Nome 37 … Contenuti del Corso Analisi dei requisiti e progettazione in dettaglio … Studio/analisi dei requisiti Fasi della progettazione Risultati SCHEMA CONCETTUALE Progettazione concettuale SCHEMA FISICO Progettazione fisica 38 Contenuti del Corso Passo2: Traduzione del modello concettuale nel modello logico relazionale … Più soluzioni sono possibili … Quale scegliere? Soluzione 1 (pessima). Utilizzo di una sola tabella … Codice Studente Codice Fiscale Cogno me Eta Sesso Codice Corso Titolo Inizio Fine Codice Prof Cognom e Afferenza 323 NULL Di Matteo 23 M 212 Basi di Dati 10/3/20 12 10/5/ 2012 1212 DiFelice Unibo 123 NULL Poli 24 M 212 Basi di Dati 10/3/20 12 10/5/ 2012 1212 DiFelice Unibo 143 NULL Giusti 25 M 212 Basi di Dati 10/3/20 12 10/5/ 2012 1212 DiFelice Unibo 163 NULL Di Cinzio 27 M 214 Sistemi Operativi 12/3/20 13 13/5/ 2013 1215 Sangiorgi Unibo 39 Contenuti del Corso Passo3: Analizzare la qualità dello schema prodotto, ed ottimizzarlo/ristrutturarlo … Codice Studente Codice Fiscale Cogno me Eta Sesso Codice Corso Titolo Inizio Fine Codice Prof Cognom e Afferenza 323 NULL Di Matteo 23 M 212 Basi di Dati 10/3/20 12 10/5/ 2012 1212 DiFelice Unibo 123 NULL Poli 24 M 212 Basi di Dati 10/3/20 12 10/5/ 2012 1212 DiFelice Unibo 143 NULL Giusti 25 M 212 Basi di Dati 10/3/20 12 10/5/ 2012 1212 DiFelice Unibo 163 NULL Di Cinzio 27 M 214 Sistemi Operativi 12/3/20 13 13/5/ 2013 1215 Sangiorgi Unibo Ridondanze dei dati costi aggiuntivi (memoria utilizzata) 40 Contenuti del Corso Analisi dei requisiti e progettazione in dettaglio … Studio/analisi dei requisiti Fasi della progettazione Risultati SCHEMA CONCETTUALE Progettazione concettuale SCHEMA LOGICO Progettazione logica 41 Contenuti del Corso Q. Come memorizzare i dati di una tabella su memoria secondaria? Quali strutture dati e metodologie utilizzare? FILE1.dat NomeCorso Codice Docente Basi di dati 0121 M. Di Felice Programmazione 1213 C. Laneve Sistemi Operativi 1455 D. Sangiorgi Struttura sequenziale Struttura ad accesso calcolato (hash) Struttura ad albero 42 0001000 111010 101110 Programma del Corso Parte II: Progettazione di Basi di Dati Progettazione concettuale: il modello E/R, raccolta ed analisi di requisiti, strategie di progettazione concettuale, verifica di qualità. Progettazione logica: ristrutturazione degli schemi E/R, traduzione nel modello relazionale. Tecniche di normalizzazione: forme normali (Boyce-Codd, terza forma normale), decomposizione in forma normale. Progettazione fisica. 43 Contenuti del Corso Nel corso, forniremo un’introduzione al mondo delle basi di dati (DB) da quattro punti di vista: Utente come interagire con un DB (aggiungere/modificare informazioni, recuperare informazioni, etc). Progettista come progettare un DB. Programmatore come sviluppare applicazioni Web/stand-alone che si interfaccino con un DB [CENNI]. Analista come reperire informazioni da un DB attraverso tecniche di data-mining [CENNI]. 44 Contenuti del Corso Nel Web, gran parte dei siti di organizzazioni ed aziende gestiscono i contenuti attraverso un DBMS (Web Information System). 45 Contenuti del Corso Componenti di un’applicazione web: Web-server (HTTP-based) Linguaggio di scripting server-side DBMS (relazionale) 2. Parametri 1. HTTP request Browser (client) 6. HTTP response 3. SQL Query DBMS 46 Contenuti del Corso Linguaggi/Tecnologie di scripting server-side ASP.NET PHP Python + Django Ruby on Rails Java Server Pages (JSP) and Java Servlet Common Gateway Interface (CGI) … 47 Contenuti del Corso Parte III: SQL per Applicazioni [cenni] Web Information System (WIS): Esempi con tecnologia AMP (Apache/MySQL/PHP), Esempi con tecnologia NOSQL + Node.js, Esempi con tecnologia .NET SQL e Java: Java Database Connectivity (JDBC) 48 Contenuti del Corso Nel corso, forniremo un’introduzione al mondo delle basi di dati (DB) da quattro punti di vista: Utente come interagire con un DB (aggiungere/modificare informazioni, recuperare informazioni, etc). Progettista come progettare un DB. Programmatore come sviluppare applicazioni Web/stand-alone che si interfaccino con un DB [CENNI]. Analista come reperire informazioni da un DB attraverso tecniche di data-mining [CENNI]. 49 Contenuti del Corso Nei precedenti moduli, abbiamo visto come tradurre informazioni in dati (es. progettando un DB a partire dalle specifiche). In questo modulo, vedremo al contrario tecniche per estrarre informazioni da grande quantità di dati (es. Web o social media) 50 CORRELAZIONI/ ASSOCIAZIONI UTILI? 0101010 1101010 1010102 1111110 Contenuti del Corso Data Mining: tecniche di apprendimento computerizzato per analizzare ed estrarre conoscenze da collezioni di dati. Pattern e relazioni non note a priori e non immediatamente identificabili. Disciplina complessa: utilizzo di tecniche di machine learning, intelligenza artificiale e statistiche … 51 Contenuti del Corso Quali info possono essere estratte da un DB? Apprendimento supervised: Costruire modelli di classificazione a partire da esempi noti, al fine di classificare nuovi istanze … Codice Casa? Macchina? Reddito #Anni Lavoro Rischio 1 SI NO 20K30K 5 Basso 2 SI SI 20K30K 5 Basso 3 NO NO 10K-20K 2 52 Alto Contenuti del Corso Quali info possono essere estratte da un DB? Apprendimento supervised: Costruire modelli di classificazione a partire da esempi noti, al fine di classificare nuovi istanze … Codice Casa? Macchina? Reddito #Anni Lavoro 1 SI NO 20K5 Basso CASA: SI, #ANNI LAVORO: 1, REDDITO: 20K-30K 30K 2 SI SI 20K5 Basso RISCHIO EROGAZIONE 30K PRESTITO di 5K???? 3 NO NO 10K-20K 2 53 Rischio Alto Contenuti del Corso Quali info possono essere estratte da un DB? Apprendimento unsupervised: Costruire modelli senza classi predefinite, al fine di identificare pattern sui dati … Codice Casa? Macchina? Reddito 1 SI NO 20K-30K 5 Basso 2 SI SI 20K-30K 5 Basso 3 NO NO 10K-20K 2 Alto 54 #Anni Lavoro Rischio Contenuti del Corso Quali info possono essere estratte da un DB? Apprendimento unsupervised: Costruire modelli senza classi predefinite, al fine di identificare pattern sui dati … 55 Programma del Corso Parte IV: Introduzione al Data-Mining Concetti di base: Business intelligence, data ware-housing, data-mining Cenni di tecniche di classificazione e clustering, applicazioni con software WEKA Esempi di applicazioni: estrazione & datamining nei social media e nell’Internet of Things 56 INDICE Presentazione Obiettivi del corso Contenuti del corso A che serve studiare le basi di dati? Qualche suggerimento … 57 Competenze Professionali Q. Come posso utilizzare le competenze del corso? Database Administrator Progettista di Database Analista/Sviluppatore SQL Database Specialist Business Intelligence Specialist … 58 Contenuti del Corso Le basi di dati sono presenti in quasi tutti i sistemi informatici di varia dimensione e complessità (es. Oracle vs SQLite) … Modelli logici, linguaggi e tool per basi di dati sviluppati già nella fine degli anni ‘60 … Il corso di Basi di Dati è presente in quasi tutti i corsi di Laurea in Informatica ed affini … Conclusioni: disciplina statica ed un pò vetusta? 59 Contenuti del Corso Le basi di dati sono presenti in quasi tutti i sistemi informatici di varia dimensione e complessita’ (es. OracleNO! vs SQLite) … ASSOLUTAMENTE Applicazioni Modelli logici, linguaggi e tool per basi di dati vastissime ed in continua evoluzione sviluppati gia’ nelladelle finemaggiori degli anni ‘60 in…ambito IT Investimenti da parte aziende Area di ricerca “caldissima” Il corso di Basi di Dati e’ presente in quasi tutti i corsi di in Informaticadi edricerca… affini … Esempi diLaurea applicazioni/ambiti Conclusioni: disciplina statica ed un pò vetusta? 60 Big Data: grandi moli di dati, provenienti da sorgenti eterogenee, difficili da gestire ed analizzare utilizzando strumenti tradizionali. Le 3 “V” dei Big-Data: Volume Varietà Velocità Valore 61 Fonte: http://www.datameer.com/product/big-data.html Contenuti del Corso Contenuti del Corso Un esempio di sorgente di Big-Data: Reti di sensori 62 Contenuti del Corso Source: Cisco IBSG, April 2011 From an Internet of Humans … to an Internet of Things … 63 Contenuti del Corso Un esempio di sorgente di Big-Data: Dispositivi mobili 3. ANALYZE 2. SHARE Fonte: Lane, Miluzzo et alt, A survey of mobile phone sensing, IEEE Communication Magazine, 2010 64 4. PROVIDE SERVICES Contenuti del Corso Nei big data, una grande quantità di dati può voler dire anche una grande quantità di informazioni nascoste da reperire!! Social Net Analysis Sentiment Analysis Es: Analisi dei social media Profiling di utenti 65 INDICE Presentazione Obiettivi del corso Contenuti del corso A che serve studiare le basi di dati? Qualche suggerimento … 66 Suggerimenti Seguire ATTIVAMENTE le lezioni Usare conoscenze pregresse per integrare quanto visto nel corso … Controllare con regolarità il sito Web del corso. Utilizzare il ricevimento. Essere propositivi & motivati! 67