ESEMPI DI ARCHIVI DI DATI Introduzione ESEMPI DI ARCHIVI DI DATI Elenco telefonico Conti correnti Catalogo libri di una biblioteca Orario dei treni – aerei ………. 1
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 2
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). 3
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. 4
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. 5
Struttura di un DB: i tre livelli di astrazione Livello fisico Livello logico Livello esterno (viste) 6
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. 7
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. 8
Campi, record e file record Scheda socio campi file Cognome Nome Indirizzo tel n. sedute campi file 9
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. 10
Il modello ENTITÀ/RELAZIONE Consiste in una descrizione diagrammatica i cui concetti base sono: ENTITÀ Classi di oggetti omogenei Classi di fatti omogenei che correlano istanze di ENTITÀ RELAZIONE attributi Proprietà di ENTITÀ o RELAZIONE 11
Esempio di modello ENTITÀ-RELAZIONE studente esame sostiene Matricola Voto Corso Cognome Docente Data Materia Nome 12
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 1,1 città Residente persona minimo 13
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 0,1 uomo sposato donna 14
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 0,n studente sostiene esame 15
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). 16
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. 17
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> | aÎA, bÎB} es. Nomi ´ NumTel = {<Filippo, 011 56 …>, <Caterina, 095 78 …>, ….} Una relazione insiemistica R su A e B è un sottoinsieme di A ´ B Un data-base di tipo relazionale è una collezione di relazioni insiemistiche. Queste relazioni si rappresentano come tabelle. 18
Una tabella schema nomi dei campi tuple COGNOME NOME TEL. Tanzi Rosario 095 89 ... Federici Susanna 011 55 ... De Bernardi Silvio 06 44 ... tuple 19
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 20
studente esame sostiene Matricola Voto Corso Cognome Docente Data Materia Nome 21
Nota: la RELAZIONE “sostiene” è implementata mediante la ripetizione del campo “Matricola” 22
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 23
Le chiavi Una chiave è un insieme di attributi i cui valori identificano univocamente le tuple (le righe di una tabella). Cognome Nome eMail Cognome Nome Tel ….. Rossi Andrea 02 78 ... Conoscenti Rossi Paolo 0347 17 ... Sorbi Andrea 081 43 ... Telefono Indirizzo Valentini ø 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. 24
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) 25
Proiezione La proiezione di una tabella è una tabella con un sottoinsieme delle colonne della prima. A B C a b c a’ b’ c’ A C a c a’ c’ Proiezione su A, C T pA,C(T) 26
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 27
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” 28
Connettivi booleani: tavole di verità Negazione Congiunzione Disgiunzione 29
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’ A B C a b c B C b c b” c” 30
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. 31
Interrogazioni su DB relazionali tabelle Interrogazione risultato 32