Note su archivi e data base
Cesare Maioli - 2002
Ogni programma opera su dati che sono memorizzati su supporti fisici di vario tipo: nastri, floppy
disc, hard disc o dischi fissi, compact disc a sola lettura (cd-rom), compact disc riscrivibili.
I dati sono visti dai programmi come costituiti da campi (per esempio nome, facoltà, esami
sostenuti) , destinati a contenere singoli valori delle variabili, record, cioè insieme di campi correlati
per l’utilizzo che ne fa l’utente (per esempio il record studente) e file o archivi (per esempio il file
anagrafica studenti, il file iscrizioni) che sono una raccolta di record.
Dal punto di vista logico è importante definire la chiave come il campo che è utile per individuare i
singoli record e in base al quale i record sono organizzati e acceduti; quale tra i record sia la chiave
deriva dalle classi di dati e dagli utilizzi che il sistema informativo aziendale fa delle informazioni:
per esempio, in un’anagrafe fiscale il campo codice fiscale è la chiave che consente di individuare
record costituiti da numerosi altri campi, come in un file del sistema informativo ospedaliero, la
chiave è di solito rappresentata dal cognome e nome della persona ricoverata.
I file sono organizzati in maniera sequenziale o in maniera diretta (random) nel senso che l’ordine
con cui i record si susseguono sul supporto magnetico o ottico destinato a contenerli può essere di
contiguità o seguire criteri di successione legati ad algoritmi che associano la chiave dei singoli
record agli indirizzi fisici dei supporti.
L’accesso ai file può avvenire in modo sequenziale (per esempio la stampa delle bollette, una volta
al trimestre, da parte di aziende che forniscono servizi di base ai cittadini) o in modo random (per
esempio l’accesso ai dati di un conto corrente da parte di una procedura bancaria di sportello).
Le diverse modalità di organizzazione e accesso, avvengono tramite la consultazione di una
directory facente parte del file stesso che indica il posizionamento dei record all’interno del file e
che quindi regola l’associazione tra record “simbolici” cioè rappresentati nei programmi applicativi
e record fisici cioè la rappresentazione dei dati su supporti hardware.
Dal punto di vista applicativo, gestire archivi di dati significa svolgere una seri di azioni che
trattano di:
• definizione dei campi, loro caratteristiche di rappresentazione (per esempio i nomi sono
successioni di lettere dell’alfabeto che non supererà le 20, le date sono nella forma gg/mm/aa,
gli eventi sono rappresentati da codici di 5 caratteri e tre cifre)
• definizione dei record aggregando i campi, predisponendo le azioni possibili sul campo chiave
• definizione di procedure organizzative per la gestione e la modifica delle definizioni precedenti;
esse comprendono l’individuazione dei formati, delle frequenze temporali di intervento, del
controllo di qualità
• gestione di varie azioni sul file e i record come: inserimento di nuovi record (talora detta
‘creazione’), aggiornamento (update) di campi in record esistenti, eliminazione di record,
reperimento (retrieval) di campi in seguito a una richiesta (query), redazione di report, copia,
detta ‘salvataggio’, di un intero file su altro supporto fisico (backup) per prevenire eventuali
perdite o danni, ripristino (recovery) di un file da una copia opportunamente salvata
Per transazione si intende, operativamente, l’interazione tra utilizzatore e sistema software che sia
di senso compiuto per l’utilizzatore e che lasci il sistema in uno stato coerente con la sua
impostazione precedente. Una transazione è costituita tipicamente di alcune fasi come:
• introduzione dei dati di richiesta da parte dell’utilizzatore
• conferma che i dati sono stati o no recepiti
•
•
•
accesso (lettura/scrittura) dei dati nell’archivio
elaborazione dei dati per rispondere alla richiesta
uscita con cui il sistema comunica i dati all’utilizzatore
Concetti applicativi diffusi alla gestione di archivi di dati, che prescindono dalle tecnicalità, sono:
• le modalità di individuazione di record tramite chiave e indici
• la modalità di rappresentazione dei dati come, per esempio, tabelle, strutture, record
• le procedure di update di file, aggiunta e cancellazione di record
• le procedure di ordinamento (sort) dei record in base a campi diversi dalla chiave
• le procedure di gestione tecnica degli archivi come il backup/recovery, la protezione dei dati, la
sicurezza delle transazioni
• le modalità di interrogazione ai dati cioè i linguaggi di interrogazione
I linguaggi di interrogazione variano in uno spettro di difficoltà di utilizzo crescente; si va dalla
possibilità di effettuare le query in linguaggio naturale (al momento esistente per sotto insiemi di
settori applicativi per esempio in campo bancario e di sicurezza logistica) alla tradizionale modalità
di accesso tramite linguaggi di programmazione o loro insiemi specializzati per le query.
I più diffusi sono quelli della famiglia dei linguaggi basati su SQL (Structured Query Language), un
linguaggio commerciale di interrogazione strutturata con cui tipicamente si selezionano archivi e
campi da interrogare (per esempio campo anno-di-nascita nel file anagrafe-dipendenti) e si
specificano alcuni predicati (come data-di-nascita compresa tra il 1960 e 1965, laurea in
ingegneria) ottenendo rapporti che presentano i dati selezionati elaborati secondo criteri di varia
complessità (per esempio ordinamenti, aggregazioni e applicazione di formule).
Con la diffusione delle interfacce grafiche e dei browser di internet sempre più diffuse sono le
modalità di interrogazione definite QBO (query-by-example), basate cioè su moduli in cui sono
evidenziati alcuni campi tra cui scegliere e opzioni di elaborazione.
Storicamente sono stati sviluppati dagli anni 60 insiemi di programmi applicativi che forniscono
servizi all’utente dove ogni programma definisce e gestisce i suoi dati.
I limiti di questo approccio sono:
• la separazione e isolamento dei dati; gli utenti di un programma non hanno possibilità di
accedere a dati utili gestiti da altri programmi
• data dependance; la struttura dei file è definita nel codice del programma
• la duplicazione dei dati; gli stessi dati sono gestiti da programmi diversi.
• format diversi per lo stesso dato e talora incompatibili per via delle diverse piattaforme
tecnologiche utilizzate da programmi diversi
• spazio di memoria sprecato
• proliferazione dei programmi applicativi per rispondere a esigenze che si vanno manifestando
nel tempo, per esempio per effettuare query
E’ capitato così che in grosse aziende esistessero anche alcune decine di master file, archivi
centrali diversi solo per un campo, sorti in periodi diversi per rispondere a crescenti
esigenze di informazione.
La definizione dei dati era incorporata nei programmi applicativi piuttosto che essere
memorizzata separatamente e indipendentemente e non vie era alcun controllo sugli accessi
e la manipolazione di dati se non quella imposta dal programma applicativo.
La concezione organizzativa per cui dati e informazioni sono considerati una risorsa
aziendale al pari delle persone, delle finanze, della logistica, della immagine, dei prodotti,
dei clienti, dell’ambiente ha portato ad accentuare la necessità di definire meglio le
architetture logiche che legano i dati tenendo conto del loro ciclo di vita e valore.
Parimenti, come rilevato, a livello aziendale sono andate crescendo, per l’accesso agli
archivi di dati, le necessità di rapidità, aggregazione per più livelli aziendali, incrocio di dati
da archivi diversi, l’integrazione di funzioni per unità organizzative diverse, l’importanza di
proiezioni e previsioni a supporto delle decisioni.
Sono sorti allora (anni 70) i data base che sono sistemi di gestione di archivi integrati in cui
i dati sono mantenuti in modo non ridondante, che garantiscono l’integrità delle
informazioni e dove l’utente può attivare con un comando unico una transazione anche
complessa tra più archivi logici.
(dal libro di Sartor, 2002)
“La progettazione di basi di dati relazionali presuppone quindi la costruzione di un
modello concettuale di tipo entità-rapporti (entity-relationship)1.
Modello entità-rapporti: rappresentazione di un certo ambito della realtà mediante insieme
di entità e di loro rapporti.
Entità e rapporti sono caratterizzati da determinate informazioni, che ne costituiscono
gli attributi. Consideriamo un semplice esempio: si supponga di voler rappresentare le
informazioni riguardanti i corsi frequentati dagli studenti di una ipotetica università. Vi sono
tre tipi di entità rilevanti:
• i docenti,
• gli studenti,
• i corsi.
L’entità Docenti ha gli attributi Nome e Qualifica; Nome è la chiave di tale entità, cioè
l’attributo (o l’insieme di attributi) che identifica univocamente ogni istanza di tale entità
(ogni singolo docente). L’entità Corsi ha gli attributi Titolo e Orario, che indicano
rispettivamente la denominazione del corso (diritto privato I, diritto privato II, ecc.) e il
tempo delle relative lezioni. In questo caso la chiave è costituita dall'attributo Titolo.
L’entità Studenti ha gli attributi Nome e Matricola (che ne costituisce la chiave). Il rapporto
Insegna collega ciascun docente ai corsi da questo insegnati. Si tratta di una relazione da
uno a molti nel senso che ogni docente può insegnare più corsi, ma per ogni corso c’è un
solo docente. Il rapporto Frequenta collega ogni studente ai corsi seguiti. Si tratta di un
rapporto da molti a molti, nel senso che ogni studente può seguire più corsi e ogni corso
può essere seguito da più studenti.
Un modello entità-rapporti può essere trasferito facilmente in una base di dati
relazionale:
1 Preferiamo tradurre l’espressione inglese entity-relationship come entità-rapporto (anziché
entità-relazione) per evitare confusioni con la nozione di relazione come tabella, nozione che dà il
nome al modello dei database relazionali.
• ogni entità e ogni rapporto è rappresentato mediante una distinta tabella;
• ogni riga (record) della tabella rappresenta un’istanza dell’entità (ad esempio un
determinato docente);
• ogni colonna della tabella rappresenta i valori di un determinato attributo (ad esempio,
la seconda colonna della tabella docenti riporta i valori dell’attributo qualifica)
Per realizzare una base di dati relazionale è fondamentale la definizione di un buon
modello concettuale. Ciò significa che le entità e i rapporti definiti nel modello debbono
rispecchiare la struttura della realtà: non si debbono costruire entità artificiose che
conglobano informazioni relative a diversi oggetti. Ad esempio, avremmo potuto costruire
l’entità Corsi in modo che essa inglobasse le informazioni relative al docente del corso
stesso.
Ciò avrebbe però comportato due problemi:
• la ridondanza delle informazioni, poiché nel caso di docente che insegni più corsi, si
sarebbero dovuti riportare più volte i dati relativi a tale docente (uno volta per ogni corso
da insegnato dal docente);
• la conseguente moltiplicazione delle operazioni di modifica, poiché per registrare la
modifica di un’unica informazione relativa ad un docente (ad esempio la promozione di
Verdi da professore associato a professore ordinario), si sarebbe dovuti intervenire su
tutte le righe della tabella che riguardano quel docente.”
DBMS
Un DBMS (Data Base Management System) è un sistema software che consente all’utilizzatore di
definire, creare e mantenere il database e fornisce un accesso controllato ad esso.
Un database si presenta come:
• una raccolta condivisa di dati logicamente correlati (e di una loro descrizione) progettata per
rispondere alle esigenze informative di un’organizzazione
• un catalogo (data dictionary o metadata) fornisce la descrizione dei dati per consentire la
indipendenza dai programmi
• una organizzazione logica in cui i dati correlati comprendono entità, attributi e relazioni tra le
informazioni di un’organizzazione
Si definiscono strumenti software funzionali a questa nuova modalità di organizzare i dati; esistono
almeno due famiglie di linguaggi:
• DDL - Data Definition Language che permette la specifica di tipi di dati, strutture e vincoli tra
essi. Tutte tali specifiche sono memorizzate nel database stesso
• DML - Data Manipulation Language che fornisce funzionalità generali per effettuare le query ai
dati
L’accesso controllato al database comprende:
• un sistema di sicurezza che garantisca da intrusioni e alterazioni accidentali
• un sistema di integrità dei dati che assicuri l’attendibilità delle situazioni rappresentate, la
persistenza nel tempo
• un sistema per il controllo della concorrenza da parte di più transazioni contemporaneamente
che assicuri l’isolamento di ogni singola transazione durante la sua effettuazione
• un sistema di software di base che consenta efficienti procedure di gestione di errori durante le
transazioni e di ripristino del database
•
un catalogo accessibile all’utente, organizzato per livelli e con sofisticati legami tra dati,
procedure applicative, dispositivi fisici, autorizzazioni per fasce di utenti.
(dal libro di Sartor, 2002)
“Coerenza dei dati Il DBMS permette a diverse applicazioni di utilizzare gli stessi dati,
integrandoli ed eliminando la ridondanza L'eliminazione della ridondanza permette di
garantire una maggiore coerenza: se lo stesso fatto viene registrato una sola volta nella
base dei dati, non vi è il rischio che vi siano registrazioni discordanti (cosa che si verifica
se si ha ridondanza, ogni qual volta non si aggiornino tutte le registrazioni relative al dato
modificato). Tuttavia, non sempre è opportuno eliminare completamente le ridondanze,
poiché un certo grado di duplicazione dei dati può permettere di conseguire una maggiore
efficienza. Tale aumento di efficienza, specialmente nella ricerca di informazioni, può
compensare il lavoro necessario per mantenere la coerenza (controlli, contemporanei
aggiornamenti, ecc.), e la spesa richiesta dall’occupazione di un maggiore spazio di
memoria.
Integrità Il DBMS assicura che la base di dati sia integra, cioè contenga solo dati
corretti. Ovviamente il DMBS non può garantire la verità dei dati, ma può imporre la loro
coerenza rispetto ad un certo insieme di vincoli (vincoli di integrità). I1 controllo
centralizzato facilita la definizione di procedure di convalida da eseguire prima di effettuare
le operazione di memorizzazione. Per esempio, si può controllare che nelle date non
venga indicato, per il giorno, un numero superiore al 31 o che l’età di una persona non sia
superiore a 150 anni, ecc. Un altro aspetto dell'integrità è costituito dal coordinamento dei
programmi che vogliono modificare contemporaneamente la stessa parte della base dei
dati (uso concorrente).
Ripristino
Il DBMS comprende procedure automatiche per il ripristino della base
dei dati in caso di errori e malfunzionamenti imputabili all'hardware o al software. La
ricostruzione di uno stato anteriore della base di dati si rende possibile memorizzando
periodicamente una seconda copia completa della stessa (data base dump), effettuando
con frequenza una ricopiatura dello stato completo della macchina (checkpoint), e
registrando le transazioni avvenute nel sistema e le variazioni apportate ai dati
(transaction log).
Sicurezza. Avendo tutti i dati sotto il proprio controllo il DBMS può garantire che alla
base dei dati si acceda solo secondo certe modalità e procedure, e dopo aver ottenuto
idonee autorizzazioni (che possono essere diverse per diversi tipi di dati).”
Schema e sottoschema
Dal punto di vista logico un DBMS consente alle applicazioni software aziendali di avere viste
diverse sulla stessa base di dati; in altri termini ogni unità organizzativa avrà una visione efficace e
sensata dei dati (sottoschema delle schema complessivo) di sua competenza e “proprietà” che si
rifletterà sugli accessi agli archivi senza tuttavia che le informazioni siano fisicamente memorizzate
come il sottoschema intende; si ha cioè la data independence tra software applicativi e dati
memorizzati.
Schema e sottoschema consentono accessi in maniera “personalizzata” da parte di utenti diversi agli
stessi dati e le relazioni virtuali che esistono sono prodotte su richiesta in seguito a query.
Quando si parla di ambiente DBMS si intendono, di solito un insieme di componenti eterogenee che
concorrono a una efficiente gestione delle informazioni aziendali, come:
• hardware; esistono DBMS per grandi mainframe ma anche per personal computer dalle
prestazioni limitate
• software; il DBMS e i programmi applicativi che lo utilizzano sono spesso associati a
componenti del sistema operativo specifiche per l’accesso ai dati, a componenti software di
controllo delle telecomunicazioni
• dati; le informazioni dell’organizzazione viste con schema e sottoschema
• modalità organizzative; procedure, regole, metodologie, strumenti da applicare al progetto e
all’utilizzo dei database
• personale; specialisti nella progettazione del database; programmatori delle applicazioni, gestori
dei dati per i diversi settori e, funzione chiave, il data base administrator che funge da filtro tra
le rappresentazioni logiche e quelle fisiche; dal lato utenti l’adozione di un DBMS porta a
razionalizzazioni d’uso e a ridefinizioni dei ruoli di chi accede agli archivi
I vantaggi che derivano dall’adozione di un sistema database sono:
• Controllo della ridondanza
• Coerenza dei dati
• Più informazioni dagli stessi dati
• Condivisione di dati
• Miglioramento dell’integrità dei dati
• Miglioramento della sicurezza
• Rafforzamento degli standard
Punti critici si sono rilevati essere:
• la necessità di adottare un approccio più disciplinato alla gestione della risorsa dati e
informazioni per tutta l’azienda
• la maggiore complessità di una volontà di gestire unitariamente tutti i dati
• l’ampiezza e la mole di dati da affrontare unitariamente
• i costi del software e della conversione
Le architetture dei DBMS si sono evolute dagli anni 70 a oggi seguendo alcuni paradigmi affermati
sul mercato che hanno cercato di descrivere e rappresentare le modalità di relazione tra le
informazioni di un’azienda.
La chiave di lettura è l’alternativa tra metodi che si basano sulla potenza della struttura dati e
metodi che si basano sulla potenza del software. Infatti si è assistito dapprima alla definizione di
modalità che sfruttavano la potenza delle strutture dati intrinseche nelle relazioni tra i dati (per
esempio gerarchia, grafo, indice invertito tra entità informative) per poi vedere la nascita di
modalità che, sfruttando la maggiore potenza elaborativa dei computer, realizzano la integrazione
dei dati secondo le richieste dell’utente, al momento della richiesta partendo da tabelle
‘razionalmente’ predisposte.
Alla prima modalità appartengono gli approcci detti gerachici e reticolare, alla seconda l’approccio
relazionale.
Il metodo gerarchico richiede che le relazioni tra i dati (e le prevedibili query) siano modellate
utilizzando strutture dati come gli alberi (radice, nodi, rami, foglie) dove le entità sono messe in una
gerarchia padre-figlio tra loro ovvero fratello-fratello.
Esistono gerarchie specifiche per le entità informative dei vari settori aziendali e, facendo previsioni
sulle loro possibili correlazioni di interesse nelle query, si introducono strutture addizionali che
rendono possibile, per esempio, la rappresentazione di relazioni molti-a-molti (ogni studente segue
più corsi e ogni corso è seguito da più studenti) in strutture ad albero, che tipicamente
rappresentano relazioni uno-a-molti (gli studenti di un corso, i corsi seguiti da uno studente).
Il modello gerarchico è efficace quando le query sono stabili e prevedibili.
Il metodo reticolare richiede che le relazioni tra i dati siano preferibilmente quelle che ci sono in un
grafo; i percorsi di accesso strutturati sono gli stessi del modello gerarchico; qui in più sono
possibili percorsi ad accesso multiplo e vengono facilmente rappresentate le relazioni molti-a-molti;
tuttavia il collegamento tra entità informative diverse avviene tramite navigazione (una curiosità è
la informazione che il termine “navigazione” tra le informazioni nacque nei sistemi DBMS
reticolari negli anni 70) da un elemento all’altro e, se i cammini sono imprevisti, i tempi di risposta
aumentano e le prestazioni divengono inefficaci.
Il modello relazionale, nella sostanza, aggrega le entità informative in tempo reale al momento della
query senza presupporre la definizione di cammini preferenziali ma partendo da un insieme di
tabelle (dette “relazioni”) costituite da righe (i record) e colonne (i campi) che rappresentano le
entità informative aziendali e le relazioni tra esse. L ’aggregazione di righe di più di una di tali
tabelle, la selezione di alcune di esse e l’eliminazione delle colonne irrilevanti in base ai parametri
della query, consente di rispondere con la stessa prestazioni a richieste comunque articolate.
Si tratta dunque di un modello molto semplice basato su tabelle cui si accede tramite poche
operazioni (select, project, join) espresse in un linguaggio algebrico.
L’affermarsi dei DBMS relazionali deriva da un fattore tecnologico (la potenza degli elaboratori
che collegano durante la transazione archivi anche molto articolati) e da uno logico legato alla
modalità con cui si costruiscono tali tabelle.
Tale processo è detto normalizzazione delle relazioni: si osserva come la normalizzazione sia
necessaria anche là dove si adottino gli approcci gerarchici e reticolari; infatti una volta costruite le
tabelle normalizzate, esse divengono rispettivamente i nodi della gerarchia ad albero e i nodi della
rete.
Il processo di normalizzazione viene descritto facendo riferimento a un esempio. La tabelle
seguente illustra un frammento dell’archivio dati relativo agli ordini che sono ricevuti per i prodotti
che un’azienda vende.
I campi Num e Ord sono sottolineati in quanto sono considerati campi chiave: la cultura
organizzativa dell’azienda ha individuato in essi gli identificatori delle classi di dati che
rappresentano la sua attività. Termini come Prodotto e Ordine rappresentano le entità caratteristiche
e dal significato non ambiguo per le varie unità organizzative che operano nell’azienda.
Num
151
248
Desc
Tavoli
Sedie
Qta
70
120
Ord
61
38
90
Clt
234
340
201
Prio
B
D
C
Qord
25
40
20
…
…
61
50
…
…
234
340
…
B
D
…
15
30
…
Num - Numero identificativo del prodotto
Desc - Descrizione del prodotto
Qta - Quantità disponibile
Ord - Numero dell’ordine da parte di un cliente
Clt - Numero identificativo di un cliente
Prio - Priorità del cliente
Qord - Quantità ordinata
Un Ordine consta di Ord, CLT, Prio, Qord e
un Prodotto consta di Num, Desc, Qta, (uno o più) Ordine.
Si osserva che nella tabella tra i campi relativi al prodotto vi sono ordini che sono record ripetuti e
vi sono informazioni relative all’ordine che non sono in domini atomici (cioè costituiti da un solo
dato).
Il processo di normalizzazione comprende tre passaggi; il primo prevede di rendere ogni campo non
ulteriormente decomponibile e dipendente dalla chiave. Occorre pertanto rendere atomici tutti i
campi e far dipendere i campi dell’Ordine da una combinazione di chiavi costituite da Num e Ord
assieme.
La prima forma normale richiede che tutti i domini (attributi) contengano solo valori atomici.
La versione in Prima forma Normale è dunque:
Num
Desc
151
Tavoli
248
Sedie
Relazione: Prodotto
Qta
Ord
Num
151
61
151
38
248
90
248
61
248
50
Relazione: Ordine
Clt
234
340
201
234
340
70
120
Prio
B
D
C
B
D
Qord
25
40
20
15
30
Si osserva che questa rappresentazione dei dati presenta vari criticità per una gestione generalizzata
delle operazioni; esse sono:
• aggiornamento; il campo Prio di un cliente non può essere modificato a meno che esso non
abbia emesso un ordine (si arriva a Prio solo tramite Num + Ord)
• inserimento; i dati su un nuove cliente possono essere inserti solo se esso ha emesso un ordine
• eliminazione; eliminando un prodotto (per esempio 248), si eliminano tutti i dati relativi a un
cliente (per esempio 201)
Occorre quindi passare a una forma delle relazioni di utilizzo più generale.
Per dipendenza funzionale di un dominio D2 da un dominio D2 legati da una relazione R si intende
il fatto che ogni valore di D1 è associato a uno e a un solo valore di D2 in R.
La relazione tra D1 e D2 è una dipendenza funzionale se è del tipo uno-a-uno a molti-a-uno. Per
esempio Ord e Clt, Clt e Prio, Num e Desc, Num e Qta.
Un dominio può dipendere funzionalmente da un dominio composto (cioè più di un dominio
contemporaneamente) come Qord e la composizione di Num e Ord.
Per dipendenza funzionale completa si intende il fatto che D2 dipende funzionalmente da D1 e non
dipende funzionalmente da alcun altro sottoinsieme di D1.
Quindi la dipendenza funzionale di Qta da Num + Ord è completa, quella di Qta da Num + Desc
non lo è in quanto Qta dipende funzionalmente da Num + Desc ma anche solo da Num.
La seconda forma normale richiede che tutte le relazioni siano in prima forma normale e che tutti
gli attributi, cioè i domini non chiave, siano funzionalmente dipendenti da tutti i domini chiave,
che si abbia cioè una dipendenza funzionale completa.
Si arriva così alle seguenti tre tabelle:
Desc
Num
151
Tavoli
248
Sedie
Relazione: Prodotto
Qta
70
120
Ord
Qord
Num
151
61
25
151
38
40
248
90
20
248
61
15
248
50
30
Relazione: Prodotti che sono stati ordinati
Ord
Clt
Prio
61
234
B
38
340
D
90
201
C
61
234
B
50
340
D
Relazione: Ordini dei clienti
Si osserva che permangono alcune criticità legate al fatto che vi sono dipendenze transitive: nella
relazione Ordini dei clienti Prio dipende da Ord solamente in quanto dipende da Clt; questo porta
all’inconveniente che la modifica della Prio di un cliente richiede molti interventi sulle tabelle se si
tratta di un cliente che emette molti ordini.
Si effettua l’eliminazione delle dipendenze funzionali transitive per addivenire alla terza forma
normale in cui i domini non chiave, se esistono, dipendono funzionalmente dalla chiave e sono
mutuamente indipendenti.
Si hanno quindi le seguenti quattro relazioni:
Num
Desc
151
Tavoli
248
Sedie
Relazione: Prodotto
Qta
70
120
Num
Ord
Qord
151
61
25
151
38
40
248
90
20
248
61
15
248
50
30
Relazione: Prodotti che sono stati ordinati
Prio
Clt
234
B
340
D
201
C
234
B
340
D
Relazione: Clienti
Ord
Clt
61
234
38
340
90
201
61
234
50
340
Relazione: Ordini
La terza forma normale richiede che ogni riga della relazioni consista del valore di una chiave
primaria che identifica un’entità e di un insieme di attributi mutuamente indipendenti che la
descrivono.
Schema concettuale
Il processo di normalizzazione delle relazioni è volto a costruire uno schema logico delle
informazioni presenti in azienda; questo, come è emerso dalle considerazioni sulla scelta dei campi
chiave, è preceduto da un’attività di analisi del sistema informativo che porta allo schema
concettuale ed è seguito da attività per la descrizione della struttura fisica del database nelle
memorie dell’elaboratore che individua lo schema fisico.
Lo schema concettuale viene ottenuto tramite l’esame delle descrizioni delle attività e delle entità
effettuate in linguaggio naturale o risultante da sistemi software precedentemente acquisiti da
un’azienda e tramite un processo di astrazione, atto a isolare le caratteristiche rilevanti dei processi
aziendali e delle classi di dati porta a un modello del funzionamento dell’azienda.
I meccanismi di astrazione utilizzati sono:
• la classificazione; si raggruppano gli oggetti di interesse per l’azienda che hanno proprietà
comuni
• l’aggregazione; si definiscono nuove entità a partire da entità esistenti più dettagliatamente
rappresentate
• la generalizzazione; si definiscono relazioni di sottoinsiemi
Information Retrieval
I database spesso sono confusi con le banche dati o con altri termini il cui significato è quello di
rappresentare una raccolta di dati, spesso contenuta in più file correlati tra loro, utilizzabile da più
utenti tramiti programmi software applicativi e che sono comprensibili come descrizione astratta
agli utenti.
Banche dati sono anche le raccolte di documenti i cui record hanno campi non così strutturati come
in precedenza che contengono informazioni, anche multimediali, nel campo giornalistico,
comunicativo, legale.
In tali sistemi documentari il record non è strutturato in campi e contiene righe di testo oppure
paragrafi, sezioni, capitoli. Le sequenza di dati elementari che vengono memorizzate non ricavano il
significato dalla loro collocazione in una struttura predeterminata.
Si classificano quindi le banche dati in due grandi famiglie: i database e i sistemi di information
retrieval o documentari destinati alla consultazione e al reperimento di dati come avvenimenti,
comunicati, norme, voci di enciclopedie.
Nei sistemi documentari i record (detti anche unità documentarie) consistono di alcuni campi
identificativi e caratterizzanti il documento oltre al suo contenuto.
Le relazioni tra i campi dei contenuti sono limitate mentre quelle tra i campi identificativi
obbediscono alla logica dei DBMS.
Le query sono qui basate su elaborazioni linguistiche di norma full-text cioè sul testo integrale;
esistono anche elaborazioni e query semantiche che si basano su sistemi di thesaurus, livelli di
indici, raccolte di termini spesso sofisticate e adattive rispetto all’evoluzione delle terminologie (per
esempio nel settore giornalistico).
I sistemi documentari sono di fondamentale importanza nell’informatica giuridica di cui
rappresentano una delle realizzazioni informatiche più significative.
Avendo un testo contenuto in un archivio normativo, identificato da campi strutturati come tipo,
data, titolo e da un campo a lunghezza indefinita che contiene il testo, un sistema di information
retrieval accetta query contenenti tipicamente parole presenti nel testo congiunte da operatori logici
elementari (and, or, not) e fornisce l’elenco degli identificativi dei documenti in cui sono presenti
quei termini.