Corsi di Laurea in Biotecnologie (primo anno interfacoltà) Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università degli Studi di Milano Settima lezione: Introduzione alle basi di dati (Capitoli 12 e 13) Informatica di base – Linea 1 2 Prima parte Cosa abbiamo fatto e cosa faremo Informatica di base – Linea 1 3 Abbiamo visto: i fogli di calcolo • Informazione rappresentata in forma tabulare • In ogni cella posso mettere il tipo di dati che desidero • Il formato dei dati è descritto a livello di cella: – ricordate (dal laboratorio) come si cambia il formato di una cella? Informatica di base – Linea 1 4 Oggi studieremo le basi di dati (DB) • Le basi di dati (database, in inglese) servono per organizzare e memorizzare le informazioni in modo strutturato: – e poterle poi rielaborare in modo automatico • Hanno alcuni aspetti in comune con i fogli di calcolo: – gestiscono tipi diversi di informazione – visualizzano l’informazione in forma tabulare Informatica di base – Linea 1 5 Fogli di calcolo e DB: differenze • Nonostante abbiano finalità e metodi di visualizzazione simili, i fogli di calcolo e i DB sono sostanzialmente differenti • I DB strutturano “maggiormente” l’informazione: – vediamo tra poco cosa vuol dire • I DB sono utilizzati principalmente per memorizzare grandi quantità di informazione: – non tanto per elaborare automaticamente l’informazione Informatica di base – Linea 1 6 La logica booleana • Per poter capire i DB, dobbiamo imparare le nozioni della logica booleana: – è utilizzata in diversi ambiti informatici – in realtà l’abbiamo già vista: • nei circuiti elettronici del processore • nelle funzioni avanzate dei motori di ricerca per Internet Informatica di base – Linea 1 7 Seconda parte La logica booleana Informatica di base – Linea 1 8 La logica booleana • Il nostro scopo: definire una “espressione logica” e verificare il suo “valore di verità”: – cioè, l’espressione è vera o falsa? • Ogni espressione logica è costituita da un insieme di operatori e di operandi: – gli operandi possono assumere solo valori binari: • vero o falso • 0o1 – ogni operatore può essere applicato ad uno o due operandi Informatica di base – Linea 1 9 Gli operatori booleani • Operatori con due operandi: – AND: restituisce il valore “vero” solo se entrambi gli operandi sono veri – OR: restituisce il valore “vero” se almeno uno dei due operandi è vero • Operatore con un solo operando: – NOT: restituisce il valore “vero” se il valore dell’operando è falso; se il valore dell’operando è vero, allora restituisce il valore “falso” Informatica di base – Linea 1 10 Tavole di verità • Ogni operatore da solo definisce un’espressione logica: • “a AND b”, “a OR b”, “NOT a” sono tre espressioni • il valore di verità di ogni espressione dipende dai valori degli operandi a e b tavola di verità AND OR NOT a b a AND b a b a OR b a NOT a VERO VERO VERO VERO VERO VERO VERO FALSO VERO FALSO FALSO VERO FALSO VERO FALSO VERO FALSO VERO FALSO FALSO VERO VERO FALSO FALSO FALSO FALSO FALSO FALSO 11 Espressioni booleane • Così come è possibile comporre le operazioni algebriche (somma, prodotto, …), è possibile comporre anche le operazioni booleane – Esempio: a AND (b OR (NOT c)) • a, b, c sono singoli operandi oppure intere proposizioni, ognuna delle quali può assumere valore vero o falso – Esempio di proposizioni (vere o false?): • a = “il triangolo è una figura geometrica con tre lati” • b = “3+2 = 7” • c = “4 è un numero dispari” – l’espressione “a AND (b OR (NOT c))” è vera o falsa? Informatica di base – Linea 1 12 Terza parte Introduzione alle basi di dati: le entità Informatica di base – Linea 1 13 Cosa può essere rappresentato nei DB? • Nei DB è possibile rappresentare qualunque entità che sia rappresentabile su un computer – Es: una casa, una persona, ecc. • Per rappresentare un’entità, si identificano le sue caratteristiche, dette attributi – in particolare, si identificano gli attributi dell’entità che sono necessari agli scopi di uno specifico contesto applicativo Informatica di base – Linea 1 14 Entità e attributi: un esempio • Es: attributi dell’entità “appartamento” – Applicazione “agenzia immobiliare”: superficie commerciale, piano, numero di stanze, indirizzo, box, ecc. – Applicazione “catasto”: indirizzo, numero piantina catastale, valore catastale, ecc. Informatica di base – Linea 1 15 Come si rappresentano gli attributi • Gli attributi hanno un nome e un dominio – Attenzione! Non un “valore”, come scritto nel libro di testo – Il dominio definisce il tipo di valori che possono essere assunti per quell’attributo – Es. entità “appartamento”: • attributo con nome “indirizzo”: il dominio è un testo • attributo con nome “numero di stanze”: il dominio è un numero intero Informatica di base – Linea 1 16 Distinzione tra dati e metadati • Il dominio è un metadato: – informazione che descrive l’informazione • nei fogli di calcolo: il formato della cella è un metadato che descrive i dati della cella • I metadati definiscono il tipo di informazione che può essere memorizzato in un DB • I dati invece sono gli specifici valori inseriti per gli attributi – perciò, i metadati specificano il tipo di dati contenuti nel DB, ma non i dati stessi Informatica di base – Linea 1 17 Dati e metadati: esempio • Entità: “appartamento” • Attributi: – “superficie commerciale” dominio: numero; dato: 100 – “piano” dominio: numero; dato: 4 – “numero di stanze” dominio: numero; dato: 5 – “indirizzo” dominio: testo; dato: Via Roma, 16 – “box” dominio: booleano (“sì” o “no”); dato: si Informatica di base – Linea 1 18 Tabelle e istanze • Per ogni entità, i dati dei vari attributi vengono memorizzati in una tabella: • il nome della tabella corrisponde all’entità • i diversi attributi corrispondono alle colonne della tabella • ogni riga corrisponde ad una entità specifica • Uno specifico insieme di dati in una tabella viene detto istanza Tabella: appartamenti Superficie Piano Stanze Indirizzo Box 100 4 4 Via Rossi, 5 No 50 4 2 Via Verdi, 4 Sì 150 8 7 Via Bianchi, 9 Sì 19 Atomicità degli attributi • Gli attributi devono contenere dati che non necessitano mai di essere scomposti • Esempio. Per l’entità “persona”, abbiamo due possibilità: – attributo “nome completo” (“Mario Rossi”) – attributo “nome” e attributo “cognome” (“Mario”, “Rossi”) • Che differenza c’è? – se il nome e il cognome si trattano sempre assieme, va bene anche “nome completo”, altrimenti la separazione degli attributi in “nome” e “cognome” è indispensabile Informatica di base – Linea 1 20 Unicità delle entità • Due entità possono avere lo stesso valore per uno o più attributi: – es: due appartamenti possono essere allo stesso piano • Se due entità hanno lo stesso valore per tutti gli attributi, allora sono la stessa entità • In pratica: non possono esistere nel DB due entità con gli stessi valori per tutti gli attributi – cioè, in ogni tabella di un DB non possono esistere delle righe identiche Informatica di base – Linea 1 21 Chiavi candidate • Abbiamo appena detto che in un DB non possono esistere due entità con gli stessi valori per tutti gli attributi. Quindi: – deve esistere almeno un insieme di attributi i cui valori non sono ripetuti in due entità diverse • ad esempio, l’insieme di tutti gli attributi – ognuno di questi insiemi identifica univocamente un’entità, cioè permette di distinguere entità diverse • Un insieme di attributi che identifica in modo univoco ogni entità è detto chiave candidata Informatica di base – Linea 1 22 Chiavi candidate: esempio • Entità “persona”, attributi: – nome, cognome, data di nascita, luogo di nascita, codice fiscale • Entità “persona”, chiavi candidate: – Nome, cognome, data di nascita, luogo di nascita, codice fiscale • l’insieme di tutti gli attributi è sempre una chiave candidata! – Codice fiscale • insieme minimo di attributi che identifica una chiave candidata – Codice fiscale con un qualunque altro insieme di attributi – Nome, cognome, data di nascita, luogo di nascita • in molti contesti applicativi può essere considerata una chiave candidata Informatica di base – Linea 1 23 Chiave primaria • Tra tutte le chiavi candidate, ne viene scelta una che svolge il ruolo di chiave primaria • La chiave primaria viene utilizzata per identificare in modo univoco e definitivo tutte le righe in una tabella: – cioè, per distinguere tutte le entità fra loro • Esempio di chiave primaria: – “codice fiscale” è una buona scelta – “nome”, “cognome” non è una buona scelta • perché no? Informatica di base – Linea 1 24 Quarta parte Le operazioni sulle tabelle Informatica di base – Linea 1 25 Il formalismo dei DB • I DB sono basati su solidi risultati teorici • E’ possibile definire 5 operazioni sulle tabelle, analoghe alle operazioni algebriche: – selezione, proiezione, unione, differenza, prodotto – si applicano a una o più tabelle, e restituiscono come risultato una tabella – noi vediamo soltanto 3 operazioni, quelle più utili nella pratica Informatica di base – Linea 1 26 1. Selezione • Permette di selezionare alcune righe da una tabella • Come si fa? Si specifica una condizione (o “test”) e una tabella di input • Il risultato è dato da una tabella che ha gli stessi attributi della tabella in input, e che contiene solo le righe (prese dalla tabella input) in cui la condizione è verificata – la condizione viene valutata per ogni riga Informatica di base – Linea 1 27 Selezione, esempio Tabella: appartamenti Superficie Piano Stanze Indirizzo Box 100 4 4 Via Rossi, 5 No 50 4 2 Via Verdi, 4 Sì 150 8 7 Via Bianchi, 9 Sì select Piano=4 from appartamenti Superficie Piano Stanze Indirizzo Box 100 4 4 Via Rossi, 5 No 50 4 2 Via Verdi, 4 Sì Informatica di base – Linea 1 28 Combinazione di condizioni: la logica booleana • E se volessimo esprimere più condizioni, cioè sfruttare i valori di più attributi? – usiamo la logica booleana • Es: “è al quarto piano e non ha il box” – select Piano=4 AND Box=“no” from appartamenti • Es: “è al quarto piano e non ha il box, oppure è all’ottavo piano e ha il box” – select (Piano = 4 AND Box=“no”) OR (Piano=8 AND Box = “Sì”) from appartamenti Informatica di base – Linea 1 29 2. Proiezione • Permette di scegliere quali attributi di una tabella visualizzare • Come si fa? Si specificano una tabella in input e una lista di attributi di quella tabella • Il risultato è una tabella che ha solo quell’insieme di attributi, ed è costituita da tutte le righe della tabella in input – in pratica, la proiezione “estrae” delle colonne dalla tabella in input Informatica di base – Linea 1 30 Proiezione, esempio Tabella: appartamenti Superficie Piano Stanze Indirizzo Box 100 4 4 Via Rossi, 5 No 50 4 2 Via Verdi, 4 Sì 150 8 7 Via Bianchi, 9 Sì project Indirizzo, Box from appartamenti Indirizzo Box Via Rossi, 5 No Via Verdi, 4 Sì Via Bianchi, 9 Sì Informatica di base – Linea 1 31 3. Prodotto • Si applica ad una coppia di tabelle in input • Restituisce una tabella che contiene tutti gli attributi delle due tabelle in input e tutte le combinazioni delle righe delle due tabelle in input – funziona come il prodotto cartesiano fra due insiemi: {a, b} x {c, d, e} = {(a, c), (a, d), (a, e), (b, c), (b, d), (b, e)} Informatica di base – Linea 1 32 Il prodotto: esempio Tabella: Bambini Tabella: Giochi Nome Anni Genere Gioco Colore GiocoDa Andrea 2 Maschio Macchinina blu Maschio Luca 3 Maschio Bambola rosa Femmina Anna 4 Femmina Bambini x Giochi Nome Anni Genere Gioco Colore GiocoDa Andrea 2 Maschio Macchinina blu Maschio Andrea 2 Maschio Bambola rosa Femmina Luca 3 Maschio Macchinina blu Maschio Luca 3 Maschio Bambola rosa Femmina Anna 4 Femmina Macchinina blu Maschio Anna 4 Femmina Bambola rosa Femmina 33 Composizione di operazioni • E’ possibile combinare le operazioni sulle tabelle, in modo da utilizzare il risultato di una operazione come operando per una nuova operazione: – analogo a 5 + (2 * 3): prima svolgiamo (2*3) e otteniamo un numero che poi usiamo come operando da sommare a 5 Informatica di base – Linea 1 34 Composizione di operazioni, esempio Tabella: appartamenti Superficie Piano Stanze Indirizzo Box 100 4 4 Via Rossi, 5 No 50 4 2 Via Verdi, 4 Sì 150 8 7 Via Bianchi, 9 Sì project Superficie, Piano from (select Stanze>3 from appartamenti) Superficie Piano 100 4 150 8 Informatica di base – Linea 1 35 Un’altra operazione utile: il join • E’ molto usata, quindi prende un nome specifico • E’ una forma di composizione: – applica una selezione ad un prodotto di tabelle (andando a vedere se c’è una corrispondenza fra i valori di alcuni attributi) • L’idea è: fai il prodotto di due tabelle ma non restituire tutte le combinazioni delle righe, prendi solo quelle per cui è verificata una certa condizione Informatica di base – Linea 1 36 Il join naturale • Si fa il prodotto fra due tabelle A e B, e si selezionano solo le righe per le quali il valore di un attributo (specificato) di A è uguale al valore di un attributo (specificato) di B – cioè, le righe in cui esiste una corrispondenza fra la tabella A e la tabella B rispetto al valore degli attributi che abbiamo specificato Informatica di base – Linea 1 37 Join naturale, esempio Tabella: Bambini Tabella: Giochi Nome Anni Genere Gioco Colore GiocoDa Andrea 2 Maschio Macchinina blu Maschio Luca 3 Maschio Bambola rosa Femmina Anna 4 Femmina join Bambini, Giochi on Bambini.genere = Giochi.GiocoDa Nome Anni Genere Gioco Colore GiocoDa Andrea 2 Maschio Macchinina blu Maschio Luca 3 Maschio Macchinina blu Maschio Anna 4 Femmina Bambola rosa Femmina Domanda: perché questa riga non fa parte della tabella ottenuta con il join? Anna 4 Femmina Macchinina blu Maschio 38 Quinta parte Principi di progettazione di DB Informatica di base – Linea 1 39 La ridondanza dei dati • Molti contesti applicativi portano ad avere, come soluzione naturale, la duplicazione di dati tra diverse tabelle Tabella: Studenti Nome Cognome Matricola Indirizzo Andrea Bianchi 111111 Via Roma, 1 Beatrice Verdi 222222 Corso Milano, 2 Carlo Rossi 333333 Piazza Genova, 3 Tabella: Libri prestati Libro Autore Nome Cognome Indirizzo Fluency Snyder Andrea Bianchi Via Roma, 1 La Relatività Einstein Beatrice Verdi Corso Milano, 2 40 I problemi derivanti dalla ridondanza • Spreco di spazio di memorizzazione: – le stesse informazioni vengono memorizzate due volte: sarà necessario utilizzare il doppio dello spazio per memorizzare quei dati • Inconsistenza dei dati: – se un dato cambia, deve essere cambiato in tutte le tabelle dove quel dato è presente – è difficile verificare automaticamente che questa operazione venga realizzata correttamente – se non viene realizzata correttamente, i dati diventano inconsistenti Informatica di base – Linea 1 41 Esempio di inconsistenza dei dati • Beatrice Verdi cambia indirizzo e comunica la modifica solo alla segreteria (ma non alla biblioteca) Tabella: Studenti Nome Cognome Matricola Indirizzo Andrea Bianchi 111111 Via Roma, 1 Beatrice Verdi 222222 Viale Monza, 4 Carlo Rossi 333333 Piazza Genova, 3 Tabella: Libri prestati Libro Autore Nome Cognome Indirizzo Fluency Snyder Andrea Bianchi Via Roma, 1 La Relatività Einstein Beatrice Verdi Corso Milano, 2 42 “mmm, non capisco dove vuoi andare a parare” • “Va bene, ho capito che la ridondanza è tanto brutta, però l’informazione dell’indirizzo serve in entrambe le tabelle, quindi non posso fare a meno di duplicarla” Informatica di base – Linea 1 43 La soluzione: l’intuizione • Nella tabella della biblioteca non memorizzo tutte le informazioni di uno studente, ma solo la sua matricola Tabella: Studenti Nome Cognome Matricola Indirizzo Andrea Bianchi 111111 Via Roma, 1 Beatrice Verdi 222222 Corso Milano, 2 Carlo Rossi 333333 Piazza Genova, 3 Tabella: Libri Titolo Autore Matricola Fluency Snyder 111111 La Relatività Einstein 222222 44 La soluzione: cosa abbiamo fatto • Abbiamo scelto l’insieme di attributi {Matricola} come chiave primaria della tabella Studenti – è un identificatore unico per tutte le righe • Nella tabella Libri usiamo un riferimento alla matricola dello studente che ha preso in prestito il libro: – l’insieme di attributi {Matricola} prende il nome di chiave esterna Informatica di base – Linea 1 45 La chiave esterna • Una chiave esterna è un insieme di attributi di una tabella che fanno riferimento alla chiave primaria di un’altra tabella – la chiave esterna permette di reperire le informazioni da una tabella ad un’altra in modo coerente, senza dover replicare tutte le informazioni di una tabella in altre tabelle – si evitano sia la ridondanza che l’inconsistenza Informatica di base – Linea 1 46 “Non mi stai convincendo” • “Ci sono almeno due cose che non mi vanno bene di quello che ci hai appena detto: 1. non hai tolto del tutto la ridondanza dei dati, in quanto la matricola viene sempre ripetuta due volte 2. nella tabella Libri non ci sono più i dettagli dello studente ma solo la matricola: se volessi sapere come si chiama chi ha preso un certo libro, come faccio?” Informatica di base – Linea 1 47 1 – la ridondanza • E’ vero che la chiave esterna ripete i valori della chiave primaria – nel nostro esempio: Libri.Matricola ripete i valori di Studenti.Matricola Informatica di base – Linea 1 48 1 – la ridondanza (cont) • Tuttavia: – abbiamo scelto una chiave primaria che richiede poco spazio per essere memorizzata (dunque si spreca poco spazio) – abbiamo aggiunto metadati (abbiamo specificato che Libri.Matricola è una chiave esterna che si riferisce a Studenti.Matricola), quindi possiamo aggiornare automaticamente i dati qualora un valore di Studenti.Matricola o di Libri.Matricola venisse aggiornato Informatica di base – Linea 1 49 2 - la completezza dei dati • Come fa la libreria a sapere il nome degli studenti a cui i libri sono stati prestati? • Facile! Basta applicare un’operazione tra tabelle: – quale? Informatica di base – Linea 1 50 2 - la completezza dei dati (cont) • Usiamo il join naturale: LibriStudenti = join Libri, Studenti on Studenti.Matricola = Libri.Matricola Tabella: Libri Tabella: Studenti Titolo Autore Matricola Nome Cognome Matricola Indirizzo Fluency Snyder 111111 Andrea Bianchi 111111 Via Roma, 1 La Relatività Einstein 222222 Beatrice Verdi 222222 Corso Milano, 2 Carlo Rossi 333333 Piazza Genova, 3 Tabella: LibriStudenti Titolo Autore Libri.Matri Nome cola Cognome Studenti.M Indirizzo atricola Fluency Snyder 111111 Andrea Bianchi 111111 Via Roma, 1 La Relatività Einstein 222222 Beatrice Verdi 222222 Corso Milano, 2 Tabelle fisiche e tabelle logiche • Tabelle fisiche: le tabelle i cui dati vengono memorizzati dal DB – es: Libri, Studenti • Tabelle logiche: le tabelle necessarie per ogni utilizzo specifico del DB che vengono derivate attraverso operazioni su tabelle – es: LibriStudenti – le tabelle logiche vengono anche dette “viste” – un singolo DB può dare origine a moltissime viste diverse Informatica di base – Linea 1 52 Relazioni tra tabelle • Una relazione tra tabelle è una corrispondenza tra gli attributi di una tabella e gli attributi di un’altra tabella – Es: Studenti e Libri sono in relazione, in quanto Libri.Matricola è una chiave esterna che fa riferimento a Studenti.Matricola – le due tabelle sono collegate dalla relazione che si chiama “inPrestitoA” Studente Libro Titolo Autore inPrestitoA Nome Cognome Matricola Indirizzo – diagramma entità-relazione: è uno schema usato per rappresentare le entità (con i loro attributi) e le loro relazioni Informatica di base – Linea 1 53 Sesta parte Conclusioni “Non ne posso più! Una lezione davvero infinita…” Informatica di base – Linea 1 54 Riepilogo: la logica booleana • Rende formali concetti intuitivi come “E”, “O”, “NO” • Permette di comporre espressioni complesse in modo simile all’algebra • Basta fare pochi esercizi per prendere confidenza: fateli! Informatica di base – Linea 1 55 Riepilogo: le basi di dati • Possono sembrare simili ai fogli di calcolo ma in realtà sono molto differenti • Forniscono una struttura per rappresentare qualunque entità: – attraverso l’utilizzo dei metadati che descrivono la struttura dell’informazione Informatica di base – Linea 1 56 Riepilogo: le operazioni sulle tabelle • Permettono di generare nuove tabelle a partire da tabelle esistenti • Sono operazioni abbastanza semplici ed intuitive – (anche il prodotto?) • I concetto di join e di chiave primaria ci consentono di: – definire le relazioni tra tabelle – effettuare le ricerche in una base di dati Informatica di base – Linea 1 57 La struttura dei DB • Abbiamo visto come vengono generalmente strutturati i DB: – è improbabile che vi troviate a dover creare DB (di grandi dimensioni) – tuttavia, comprendere i principi di strutturazione dei DB è indispensabile per poterli utilizzare correttamente e per poter estrarre informazioni da essi – in laboratorio, sfrutteremo le conoscenze teoriche di questa lezione per capire come sia possibile estrarre dei dati da un DB Informatica di base – Linea 1 58 Esercizi, logica booleana • Considera le seguenti proposizioni e calcola il valore di verità dell’espressione che segue: – a = “un quadrato ha un lato più lungo degli altri” – b = “la popolazione Italiana nell’anno 2000 era di 10 abitanti” – c = “5-2=3” NOT ((a AND (b OR c)) AND ((NOT c) OR (NOT b))) Informatica di base – Linea 1 59 Esercizi, logica booleana • Considera le proposizioni proposte nella slide precedente e calcola il valore di verità delle seguenti espressioni: – a AND (NOT b) – a OR (b AND c) – (a AND b) or (b AND c) – a AND (NOT A) – a OR (NOT a) – (a AND (NOT b)) OR (c AND (a OR b)) Informatica di base – Linea 1 60 Esercizi, operazioni su tabelle Usando le tabelle riportate in questa slide, calcola le seguenti operazioni: • project Nome, Anno from Studenti • select Ruolo = “Ricercatore” from Professori • Studenti x Professori Tabella: Studenti Tabella: Professori Nome Cognome Anno Nome Cognome Ruolo Mario Bianchi 2 Andrea Blu Ricercatore Anna Verdi 2 Carla Viola Ordinario Lucia Rossi 1 Informatica di base – Linea 1 61