Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer tutte le informazioni riguardanti i clienti. Per ogni cliente dovremo registrare: il cognome; il nome; l'indirizzo; il numero di conto; la disponibilità sul conto; la foto 133
Strutturazione logica dei dati: i file I dati riguardanti ciascun cliente devono essere raggruppati, mentre i dati riguardanti clienti diversi devono essere mantenuti separati tra di loro Le informazioni devono essere organizzate in modo tale che il loro reperimento e il loro uso risultino semplici È necessario introdurre dei meccanismi per la strutturazione dei dati, costruendo strutture di codifica delle informazioni composte Per l esempio della banca tutte le informazioni riguardanti un cliente possono essere viste, dal punto di vista logico, come un blocco le cui componenti possono eventualmente essere analizzate indipendentemente 134
File, record e campi Un file è un meccanismo di strutturazione delle informazioni che permette di aggregare informazioni elementari in strutture più complesse Un file può essere definito introducendo i concetti di campo e record: Un campo è costituto da un insieme di byte e serve per codificare una singola informazione che può essere: numerica; alfabetica o alfanumerica; un'immagine o un suono Un record è costituito da un insieme di campi logicamente correlati tra di loro (quindi è un insieme di byte) 135
File, record e campi Nell esempio della banca le informazioni relative ad un singolo cliente possono essere viste come un record i cui campi sono: un campo alfabetico per il nome; un campo alfabetico per il cognome; un campo alfanumerico per l'indirizzo; un campo numerico per il numero del conto; un campo numerico per la disponibilità sul conto; un campo immagine per la foto (tale campo conterrà la codifica digitale dell'immagine) Un file è costituito da una sequenza di record (quindi è un insieme di byte). Le informazioni riguardanti la banca possono essere viste come un file costituito da un insieme di record, uno per ogni cliente 136
File, record e campi Si possono distinguere due diversi tipi di file: file strutturati che sono effettivamente sequenze di record; file non strutturati in cui l'informazione è semplicemente una sequenza di caratteri (sequenza di byte) Un aspetto importante riguarda la lunghezza dei record. Vi sono due possibilità: file con record a lunghezza costante; file con record a lunghezza variabile 137
Record a lunghezza costante Solo per comodità, possiamo rappresentare graficamente un file con record a lunghezza costante come una tabella 114561 5135250 Massimiliano Rossi Via Milano 151 271564 23147432 Cristina Bianchi Corso Venezia 1 102574 56789980 Elena Rossi Via Milano 151 143256 2145234 Ada Bo Via Po 1 Per definire un file con record a lunghezza costante occorre precisare il numero di byte destinati a ciascun campo 138
Record a lunghezza variabile La scelta di avere file con record a lunghezza costante presenta due svantaggi: è difficile stimare a priori la dimensione di ciascun campo nella maggior parte dei casi, l'informazione che deve essere memorizzata all'interno di un campo occupa meno spazio di quello a disposizione L'alternativa allo stabilire a priori le dimensioni dei campi è quella di avere campi a dimensione variabile 139
Record a lunghezza variabile 114561 5135250 Massimiliano Rossi Via Milano 151 271564 23147432 Cristina Bianchi Corso Venezia 1 102574 56789980 Elena Rossi Via Milano 151 143256 2145234 Ada Bo Via Po 1 Nel caso di campi a dimensione variabile sorge tuttavia il problema di separare le informazioni tra di loro Sebbene abbiamo usato una struttura a tabella per descrivere logicamente le informazioni contenute in un file è importante notare che un file è una struttura lineare 140
Struttura fisica di un file record1 record2 record3... Questo è anche il modo in cui un file viene memorizzato fisicamente nella memoria di un elaboratore Nel caso di campi, e quindi di record con dimensione variabile, è necessario introdurre dei caratteri speciali per separare le varie informazioni (per es. & per separare i record e # per separare i campi)...&1146561#5135250#massimiliano#rossi#via Milano 151&271564#23147432#Cristina#Bianchi#Corso Venezia 1&... I separatori # e & non sono necessari nel caso di file con campi a dimensioni costanti 141
Struttura fisica di un file Un altro aspetto fondamentale riguarda il problema del reperimento delle informazioni. I dati che vengono memorizzati in un file devono poter essere letti e modificati I principali metodi di accesso sono: accesso sequenziale accesso diretto accesso con chiave 142
I file ad accesso sequenziale La ricerca dei record avviene sempre a partire dall'inizio del file, leggendo tutti i record uno dopo l'altro, fino a quando non si arriva a quello desiderato Esempio: supponiamo di voler leggere i dati sul cliente Bianchi. Dobbiamo leggere tutte le informazioni fino ad arrivare al cognome cercato...&1146561#5135250#massimiliano#rossi#via Milano 151& 271564#23147432#Cristina#Bianchi#Corso Venezia 1&... Questo metodo di accesso non è efficiente perché ogni volta la ricerca viene effettuata a partire dall'inizio del file 143
I file ad accesso diretto L'ideale, dal punto di vista della velocità di accesso, sarebbe di poter accedere direttamente ad un record senza dover considerare tutti quelli precedenti Per fare questo è necessario conoscere esattamente il punto del file in cui inizia il record cui si è interessati Il punto di inizio di un record all'interno di un file prende il nome di indirizzo del record Un file è una sequenza di byte e l indirizzo di un byte è il numero che corrisponde alla posizione del byte nella sequenza (il primo byte ha indirizzo 0, il secondo ha indirizzo 1, ecc.) L'indirizzo di un campo è quindi l'indirizzo del primo byte del campo e l'indirizzo di un record è l'indirizzo del primo campo del record 144
I file ad accesso diretto Se l'indirizzo di un record è noto, è possibile posizionarsi direttamente in quel punto ed accedere all'informazione in modo diretto, senza considerare le informazioni precedenti In questo caso il tempo necessario per accedere a un dato non dipende dal punto in cui esso è memorizzato nella sequenza L'accesso diretto ai record non è possibile nel caso di file con record a lunghezza variabile 145
File con accesso a chiave La possibilità di effettuare l'accesso ai record in modo veloce è legata alla conoscenza degli indirizzi dei record stessi Per poter realizzare l'accesso in modo veloce si può pensare di mantenere le informazioni sugli indirizzi al di fuori del file Per fare questo è necessario avere un meccanismo per identificare i record in modo univoco e per ricordare l indirizzo di ognuno di essi 146
File con accesso a chiave L'idea che sta alla base del metodo di accesso con chiave è la seguente: Si deve individuare un campo, detto campo chiave, che è presente in tutti i record e fornisce un riferimento unico ai record stessi (non vi devono essere due record con lo stesso valore del campo chiave) Si costruisce un nuovo file che prende il nome di file delle chiavi che è costituito da record a dimensione costante (si potrebbe usare l accesso diretto) formati da due campi: un campo per contenere il valore della chiave; un campo per contenere l'indirizzo del record all'interno del file Il file delle chiavi ha tanti record quanti sono i record del file originario 147
File con accesso a chiave Esempio della banca: la chiave può essere il numero di conto. La tabella delle chiavi può essere organizzata come un insieme di record costituiti da: una chiave, ossia il numero di conto; l'indirizzo del record corrispondente nel file delle informazioni Dato un numero di conto corrente, l'accesso ai dati del record corrispondente nel file delle informazioni avverrà in due passi: prima si accede alla tabella delle chiavi, si cerca il numero di conto, e si legge l'indirizzo del record corrispondente nel file delle informazioni; quindi si accede in modo diretto al record nel file delle informazioni, utilizzando il suo indirizzo 148
File con accesso a chiave chiave indirizzo del record file delle chiavi 102574 222 114561 135 143256 259 file delle informazioni 271564 178 135 178 222 259 114561 271564 102574 143256 5135250 23147432 56789980 2145234 Massimiliano Rossi Via Milano 151 Cristina Bianchi Corso Venezia 1 Elena Rossi Via Milano 151 Ada Bo Via Po 1 149
File con accesso a chiave Questa tecnica presenta tuttavia uno svantaggio dovuto alla necessità di memorizzare anche la tabella delle chiavi, che può talvolta avere delle dimensioni molto grandi È necessario scegliere come chiave un campo che assume valori sempre diversi per non creare delle ambiguità Per poter utilizzare la tecnica dell'accesso con chiave, il valore della chiave di un record deve essere noto al momento dell'accesso Possibilità di utilizzare più chiavi (numero conto, numero codice fiscale) Esistono delle tecniche che consentono di velocizzare la ricerca all interno del file delle chiavi 150