Introduzione ESEMPI DI ARCHIVI DI DATI • • • • • Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni – aerei ………. Introduzione • Più utenti con ognuno il proprio archivio da gestire. • Riportare le modifiche (inserimenti, aggiornamenti, cancellazioni, interrogazioni,…) in ogni archivio • Rischio di: – – – – Dimenticanze Controlli incrociati per evitare inconsistenze Sovraccarico (duplicazione) inutile di lavoro Difficoltà nel condurre ricerche sui dati • La soluzione è un archivio (base di dati) centralizzato e condiviso Ferie Che cosa è una Base di dati? Base di Dati (data base): una collezione di informazioni, generalmente non omogenee, organizzate in una struttura che ne rende efficiente la ricerca e l'accesso automatici. Caratteristiche di un DB: • la persistenza della memorizzazione dei dati, usualmente suddivisi su più file e memorizzati su dispositivi di memoria secondaria di grandi capacità • funzioni per il recupero delle informazioni (data retrieval), per l'introduzione di nuove informazioni (data entry) e per l'aggiornamento o modifica di quelle già presenti (data editing). Il DBMS Le funzionalità di un DB sono realizzate da un sistema software chiamato Data Base Management System (DBMS), che integra al suo interno più moduli: - alcuni destinati ad interagire con gli utenti - altri alla definizione ed al mantenimento della struttura - altri alla elaborazione delle informazioni - altri ancora al coordinamento con il sistema di gestione dei file ovvero col sistema operativo che ospita il DBMS. I tre livelli di un DB • livello fisico: riguarda l’organizzazione delle informazioni nei file; • livello logico: è il modo in cui il sistema rappresenta l’insieme delle informazioni che contiene • livello esterno (viste): è il modo in cui la struttura concettuale del DB appare agli utenti. Struttura di un DB: i tre livelli di astrazione Livello fisico Livello logico Livello esterno (viste) Il livello fisico per l’OS Fisicamente un DB è una collezione di file, memorizzati in dispositivi di memoria di massa (dischi, nastri, ecc.). Questi dispositivi organizzano le informazioni secondo una struttura che dipende dalla loro tipologia. Nel caso dei dischi si parla di record fisici per indicare i settori in cui sono suddivise le tracce. Questo livello non è di pertinenza del DB ma del sistema operativo. Il livello fisico per il DB Logicamente ciascun file è suddiviso in record e campi: record: una collezione finita di campi campo: una coppia nome-valore Vi sono record con campi di lunghezza fissa, meno compatti ma più facili da indirizzare, e con campi di lunghezza variabile che richiedono opportune tecniche di indirizzamento. Campi, record e file Scheda socio record Cognome campi Nome Indirizzo tel n. sedute file Il livello logico Al livello logico si situa il modo in cui il sistema rappresenta l'universo delle informazioni che contiene o che potrà contenere. Questo livello viene definito in fase progettuale, stabilendo lo schema concettuale di cui le informazioni concrete sono istanza. Un metodo largamente impiegato per descrivere questo livello è il cosiddetto modello ENTITÀ/RELAZIONE. Il modello ENTITÀ/RELAZIONE Consiste in una descrizione diagrammatica i cui concetti base sono: ENTITÀ Classi di oggetti omogenei RELAZIONE Classi di fatti omogenei che correlano istanze di ENTITÀ attributi Proprietà di ENTITÀ o RELAZIONE Esempio di modello ENTITÀ-RELAZIONE studente sostiene Matricola Cognome esame Voto Data Corso Docente Materia Nome RELAZIONE molti-a-uno Una RELAZIONE si dice molti-a-uno se ad ogni istanza della seconda ENTITÀ corrispondono una o più istanze della prima. massimo 1,n città 1,1 Residente minimo persona RELAZIONE uno-a-uno Una RELAZIONE è uno-a-uno se ad ogni istanza della prima ENTITÀ corrisponde esattamente un’istanza della seconda e viceversa 0,1 uomo 0,1 sposato donna RELAZIONE molti-a-molti Una RELAZIONE si dice molti-a-molti se per ogni istanza di una delle ENTITÀ coinvolte possono esservi più di un’istanza dell’altra. 0,n studente 0,n sostiene esame I modelli dei dati Una specifica basata su ENTITÀ e RELAZIONE è astratta e deve essere realizzata utilizzando una struttura dati. Ve ne sono di diversi tipi: • gerarchico: molto usato per i DB di tipo testuale • reticolare: si interrga navigando; oggi riscoperto come “orientato agli oggetti” • relazionale: basato sul concetto di relazione (tabella). NOTAZIONE • Con il termine “RELAZIONE” denotiamo il concetto di relazione nel modello ENTITÀ/RELAZIONE mentre con il termine “relazione” (tutto in minuscolo) denoteremo il concetto di relazione insiemistica. Il modello relazionale Dati due insiemi A e B (esempio: A=Nomi, B=numeri telefonici) il prodotto cartesiano A B di A e B è l’insieme: A B = {<a,b> | aA, bB} es. Nomi NumTel = {<Filippo, 011 56 …>, <Caterina, 095 78 …>, ….} Una relazione insiemistica R su A e B è un sottoinsieme di AB Un data-base di tipo relazionale è una collezione di relazioni insiemistiche. Queste relazioni si rappresentano come tabelle. Una tabella schema tuple nomi dei campi COGNOME NOME TEL. Tanzi Rosario 095 89 ... Federici Susanna 011 55 ... De Bernardi Silvio 06 44 ... Implementazione Modello logico ENTITÀ-RELAZIONE DB relazionale ENTITÀ tabella attributo campo RELAZIONE campi in comune Studente Nome Corso Matricola Esame Materia Data Voto Matricola schemi studente sostiene Matricola Cognome esame Voto Data Corso Docente Materia Nome Studente Nom e Filippo C aterina … Esam e Materia Inorganica Lett. G reca O rganica C orso C him ica Lettere Matricola 9723456 8745666 … D ata Voto 23/02/00 24/30 15/12/99 28/30 08/07/99 22/30 Matricola 9723456 8745666 9723456 Nota: la RELAZIONE “sostiene” è implementata mediante la ripetizione del campo “Matricola” Vincoli di integrità I vincoli di integrità sono condizioni che debbono essere soddisfatte dalle istanze di una relazione (dagli elementi di una tabella) per evitare incoerenze e prevenire errori. valore fuori dominio Iscrizioni Studente Matricola Età Verdi 10345 25 Prodi 76890 230 Salemi 76890 21 replica scorretta Le chiavi Una chiave è un insieme di attributi i cui valori identificano univocamente le tuple (le righe di una tabella). Cognome Nome eMail Cognome Conoscenti Telefono Indirizzo Nome Tel ….. Rossi Andrea 02 78 ... Rossi Paolo Sorbi Andrea 081 43 ... Valentini ø 0347 17 ... 06 85 ... Una relazione (tabella) può avere più chiavi; una chiave i cui valori non siano mai nulli e quindi individuino tutte le tuple si dice primaria. Operazioni sulle relazioni (tabelle) Il recupero dei dati e le operazioni di incrocio con cui un linguaggio di interrogazione permette di rispondere alle richieste dell’utente si basano su operazioni sulle relazioni (tabelle), tra le quali consideriamo: • la proiezione (p) • la selezione (s) • il join naturale (incrocio) Proiezione La proiezione di una tabella è una tabella con un sottoinsieme delle colonne della prima. Proiezione su A, C A B a b a’ b’ T A C c a c c’ a’ c’ C pA,C(T) Selezione La selezione sP(T) costruisce una nuova tabella scegliendo le tuple della tabella T che soddisfano il criterio (predicato) P. A B N A B N a b 3 a b 3 a’ b’ 4 a” b” 9 a” b” 9 sP(T) T P = N multiplo di 3 Criteri non atomici Un criterio è un predicato sui valori degli attributi: questo predicato può essere “atomico”: Nome = “Pippo” oppure essere composto di parti atomiche collegate con operatori booleani: Nome = “Pippo” OR Cognome = “Rossi” Nome = “Pippo” AND Cognome = “Rossi” Connettivi booleani: tavole di verità Negazione Congiunzione Disgiunzione A Not A Vero Falso Falso Vero A B A A nd B V e ro V e ro V e ro V e ro F a ls o F a ls o F a ls o V e ro F a ls o F a ls o F a ls o F a ls o A B A Or B V e ro V e ro V e ro V e ro F a ls o V e ro F a ls o V e ro V e ro F a ls o F a ls o F a ls o Join naturale Il join naturale di due relazioni (tabelle) che abbiano coordinate (nomi dei campi) in comune e una relazione (tabella) le cui coordinate sono l’unione delle coordinate delle relazioni (tabelle) date, e le cui tuple sono quelle i cui valori nelle coordinate comuni sono eguali A B a b a’ b’ B C b c b” c” A B C a b c Le interrogazioni (query) Le interrogazioni sono espresse in una forma opportuna: • attraverso un linguaggio di interrgazione, ad es. SQL: SELECT COGNOME,ANNO FROM GIOCATO IN WHERE GOL>30 AND SQUADRA = JUVENTUS • attraverso schemi di risposta (query by example), come ad esempio in Access. In entrambi i casi il modulo di esecuzione della query compone opportunamente le operazioni proprie del DB su cui lavora (es. proiezione, selezione, join,…) per calcolare la risposta. Interrogazioni su DB relazionali Studente Nom e Filippo C aterina … Esam e Materia Inorganica Lett. G reca O rganica C orso C him ica Lettere Matricola 9723456 8745666 tabelle … D ata Voto 23/02/00 24/30 15/12/99 28/30 08/07/99 22/30 Matricola 9723456 8745666 9723456 SELEC T Materia FR O M Esam e W HER E Matricola IN SELEC T Matricola FR O M Studente W HER E Nom e = Filippo Materia Inorganica O rganica risultato Interrogazione