# Introduzione alle banche dati

## Che cos'è una banca dati?

Una banca dati può essere definita come una collezione di dati su un argomento. È organizzata in modo tale da rendere semplice scorrere le informazioni, apportare delle modifiche oppure aggiungere nuovi elementi.

Guarda il diagramma per uno degli esempi di sopra: una semplice rubrica telefonica.

Diagramma di una banca dati di numeri telefonici Diagramma di una banca dati di numeri telefonici

L'immagine di sopra mostra un insieme di contatti presentati su schede diverse. Sembra che tale scheda possa costituire una singola riga in una tabella:

Tabella Contatti

Nome | N. tel.
Joan | 699 23 43 12
Adam | 711 19 77 21

Termini e definizioni: un dato singolo che costituisce parte di una collezione più grande può essere chiamato riga o in maniera più professionale record. La collezione viene generalmente chiamata tabella. Inoltre, il nome più naturale per la tabella è quello che descrive i dati che offre/contiene, cioè Contatti. Ogni riga nella tabella è formata da colonne, spesso chiamate campi. Nella tabella Contatti ci sono due colonne (campi): Nome e N. tel.

Per utilizzi più semplici una banca dati può essere costituita da una singola tabella. Molti le considerano equivalenti. Come vedrai, tipicamente avremo bisogno di più di una tabella nel caso di banche di dati reali.

Per riassumere, hai appena visto una semplice banca dati con una tabella Contatti.

## Banca dati e foglio di calcolo

È molto probabile che tu abbia già usato applicazioni per fogli di calcolo come KSpread, OpenOffice.org Calc o Microsoft Excel. In tal caso, probabilmente ti starai chiedendo: visto che sia un foglio di calcolo che una banca dati hanno delle tabelle, perché dovrei usare l'ultimo?

Confrontando i fogli di calcolo con le banche dati puoi incontrare i seguenti problemi, che verranno affrontati in maggior dettaglio in seguito:

- Integrità referenziale sui dati

- Ridondanza di dati

- Integrità e validità dei dati

- Limitare la visualizzazione dei dati

- Prestazioni e capacità

- Voci di dati convenienti

- Rapporti

- Programmazione

- Utilizzo multiplo

- Sicurezza

### In cosa una banca dati differisce da un foglio di calcolo?

xxx, amplia la tua tabella Contatti aggiungendo una colonna (campo) Indirizzo. Aggiungi più numeri di telefono (ufficio, casa) per ogni persona ed aggiungi dei cognomi ai nomi. Per rendere il tutto più facile facciamo le seguenti assunzioni:

- la tabella è limitata a due persone (ovviamente ce ne potrebbero essere centinaia e migliaia in una vera banca dati)

- non esistono due persone con lo stesso nome e cognome

Tabella dei contatti

Nome e cognome | Tel | Indirizzo
Joan Smith | 699 23 43 12 | Western Gate 1, Warsaw
Adam Willson | 711 19 77 21 | London, Frogs Drive 5
Joan Smith | 110 98 98 00 | Western Gate 1
Smith Joan | 312 43 42 22 | Warsaw, Western Gate 1
ADAM Willson | 231 83 02 04 | Frogs Drive 5, London

Una tabella di questo tipo può essere realizzata sia un foglio di calcolo che in una banca dati. Utilizzare un foglio di calcolo è sicuramente molto semplice. Quali problemi emergono a questo punto?

#### Integrità referenziale sui dati

Supponi di utilizzare un foglio di calcolo e di avere la necessità di modificare l'indirizzo di almeno una persona. Nasce un piccolo problema: devi cambiare spesso l'indirizzo su diverse righe. Ad esempio, Joan appare su tre righe. Sorgerebbe un problema serio se dimenticassi di modificarne una - l'indirizzo associato a questa persona risulterebbe ambiguo, quindi i tuoi dati perderebbero l'integrità.

Inoltre non c'è un modo semplice per cancellare una determinata persona dalla tabella dato che devi ricordarti di cancellare tutte le righe che la riguardano.

#### Ridondanza dei dati

È direttamente connesso al problema precedente. Nei campi Nome e cognome e Indirizzo vengono inseriti più volte gli stessi dati. È tipico del modo inefficiente con il quale un foglio di calcolo memorizza i dati, poiché la banca dati cresce inutilmente, il che richiede più risorse (dimensione più grande dei dati ed accesso più lento).

Come puoi risolvere questi problemi con una banca dati? Puoi separare le informazioni in porzioni più piccole creando tabelle aggiuntive, come Persone con sole due colonne: Nome e cognome e Indirizzo:

Tabella Persone

Nome e cognome | Indirizzo
Joan Smith | Western Gate 1, Warsaw
Adam Willson | Frogs Drive 5, London

Ogni riga della tabella Persone corrisponde ad una singola persona. La tabella Contatti è d'ora in poi in relazione con la tabella Persone.

#### Integrità e validità dei dati

Fai attenzione al modo con il quale vengono inseriti i dati nei campi Nome e cognome e Indirizzo. Chi inserisce i dati potrebbe commettere degli errori, alcune volte potrebbe essere addirittura negligente. Tra i nostri dati campione abbiamo sia sequenze diverse di nome e cognome (Joan Smith e Smith Joan; Adam e ADAM) che molti altri modi di inserire lo stesso indirizzo. Puoi certamente immaginarne altri.

Il problema suddetto mostra come, ⪚, quando si cerca un numero di telefono di una persona il cui indirizzo è "Western Gate 1, Warsaw" non si ottiene un risultato completo. Otterrai solo una riga invece di tre. Inoltre, non troverai neanche tutti i numeri di telefono cercando il valore "Joan Smith" nel campo Nome e cognome, poiché "Smith Joan" non coinciderà con "Joan Smith".

Come puoi risolvere questi problemi usando una banca dati? Lo puoi fare modificando il progetto della tabella Persone attraverso:

1. Divisione dei dati nei campi Nome e cognome in due campi separati: Nome e Cognome.

2. Divisione dei dati nel campo Indirizzo in tre campi diversi: Via, Numero di casa e Città.

3. Garantendo la correttezza dei dati: assicurando che nessun campo sia vuoto; ⪚, dovrai sempre inserire il numero di casa.

Una tabella modificata ha il seguente aspetto:

Tabella Persone

Nome | Cognome | Via | Numero di casa | Città
Joan | Smith | Western Gate | 1 | Warsaw
Adam | Willson | Frogs Drive | 5 | London
Vincoli
campo obbligatorio | campo obbligatorio | campo obbligatorio | campo obbligatorio | campo obbligatorio

Grazie all'introduzione del vincolo di campo obbligatorio possiamo essere certi che il dato inserito sarà completo. In altri casi potresti ovviamente permettere l'omissione di alcuni campi quando si inseriscono i dati.

#### Limitare la visualizzazione dei dati

Un foglio di calcolo mostra tutte le righe e le colonne della tabella, il che risulta fastidioso con fogli di dati molto grandi. Puoi ovviamente filtrare ed ordinare le righe nei fogli di calcolo, tuttavia devi essere molto attento quando lo fai. Gli utenti dei fogli di calcolo rischiano di dimenticare che la visualizzazione dei dati è stata filtrata, situazione che può portare a commettere degli errori. Ad esempio, mentre si calcolano delle somme puoi pensare di avere 100 righe di dati mentre in realtà ce ne sono altre 20 nascoste.

Se vuoi lavorare su un piccolo sottoinsieme dei dati, ⪚ per inviarlo ad altri affinché lo modifichino, puoi copiarlo ed incollarlo su un altro foglio di calcolo e, dopo aver apportato le modifiche, ricopiare i dati modificati su quello principale. Una modifica "manuale" di questo tipo potrebbe causare la perdita di dati o calcoli scorretti.

Per limitare la visualizzazione dei dati, le applicazioni per banche dati offrono interrogazioni, moduli e rapporti.

Un modo molto pratico per limitare la visualizzazione dei dati è la seguente versione estesa della tabella Persone descritta in precedenza:

Tabella Persone

Nome | Cognome | Via | Numero di casa | Città | Entrata
Joan | Smith | Western Gate | 1 | Warsaw | 2300
Adam | Willson | Frogs Drive | 5 | London | 1900

Supponiamo che la colonna appena introdotta Entrata contenga dati confidenziali. Come puoi condividere, ⪚, i dettagli di un contatto con i tuoi colleghi senza rivelare le loro entrare? È possibile solo se condividi un'interrogazione e non la tabella intera. L'interrogazione potrebbe selezionare tutte le colonne eccetto quella Entrata. Nel gergo delle banche dati questo tipo di interrogazione viene spesso chiamata vista.

#### Prestazioni e capacità

Probabilmente il tuo computer è abbastanza veloce, tuttavia potrai notare come questo non sia di aiuto con fogli di calcolo lenti e di grosse dimensioni. La loro bassa efficienza è per prima cosa dovuta alla mancanza di indici che accelerano il processo di ricerca dei dati (le banche dati spesso li offrono). Inoltre, se usi cose come gli appunti di sistema, addirittura la copia dei dati potrebbe diventare problematica con il passare del tempo.

I fogli di calcolo che contengono grossi insiemi di dati potrebbero richiedere molto tempo per aprirsi. Un foglio di calcolo carica una grande quantità di dati sulla memoria del computer durante l'apertura. La maggior parte di essi sono probabilmente inutili/non necessari per il momento. Le banche dati, al contrario dei fogli di calcolo, caricano i dati dagli archivi solo quando necessario.

Nella maggior parte dei casi non dovrai preoccuparti di come la banca dati memorizza i suoi dati. Ciò significa che, a differenza dei fogli di calcolo, le banche dati non si curano circa:

- La sequenza delle righe, visto che puoi ordinarle in base alle tue esigenze. Inoltre, puoi visualizzare gli stessi dati in maniere diverse con ordinamenti diversi.

- Lo stesso vale per le colonne (campi) della tabella.

Insieme alla possibilità di limitare la visualizzazione dei dati, descritta nel paragrafo precedente, queste qualità costituiscono i vantaggi di una banca dati.

#### Voce di dato

Le ultime edizione delle applicazioni per la creazione di fogli di calcolo ti permette di progettare moduli per voci di dato. Questi tipi di modulo sono per lo più utili se i tuoi dati non possono essere mostrati in maniera conveniente con una visualizzazione tabulare, ⪚ se il testo occupa troppe righe oppure se tutte le colonne non entrano nello schermo.

In questo caso il modo con il quale lavorano i fogli di calcolo è problematico. I campi per le voci di dato vengono collocati liberamente all'interno del foglio di calcolo e molto spesso non sono sicuri rispetto all'intervento (intenzionale od accidentale) dell'utente.

#### Rapporti

Le banche dati permettono il raggruppamento, la limitazione e l'aggregazione di dati in un modulo o in un rapporto. I fogli di calcolo sono generalmente stampanti sotto forma di piccole tabelle senza un pieno controllo automatico sulla divisione delle pagine e sul layout dei campi.

#### Programmazione

Le applicazioni per la creazione di banche dati contengono spesso linguaggi di programmazione completi. I fogli di calcolo più recenti hanno la stessa capacità, tuttavia i calcoli si limitano alla modifica dei campi del foglio di calcolo e alla mera copia dei dati, senza tener conto della rilevanza e dei vincoli di integrità, citati nei paragrafi precedenti.

Il processamento dei dati all'interno di un foglio di calcolo è tipicamente eseguito attraverso una interfaccia utente di tipo grafico, cosa che potrebbe rallentarne la velocità. Le banche dati sono in grado di lavorare in background, al di fuori di interfacce grafiche.

#### Utilizzo multiplo

È difficile immaginare un utilizzo multiplo di un singolo foglio di calcolo. Anche se tecnicamente possibile nell'ambito delle applicazioni più recenti, richiede molta disciplina, attenzione e conoscenza da parte degli utenti, e ciò non può essere garantito.

Un modo classico per condividere i dati salvati in un foglio di calcolo con altre persone è di inviarlo come nella sua interezza come file (tipicamente utilizzando la posta elettronica) oppure rendendolo disponibile come file in una rete di computer. Questo modo di lavorare è porta vantaggi in un grosso gruppo di persone - i dati necessari in un particolare momento potrebbero essere bloccati da un'altra persona.

D'altro canto, le banche dati sono state progettate principalmente con gli accessi multiutente in mente. È permesso il blocco a livello di una riga di una determinata tabella persino nelle versioni più semplici, rendendo semplice la condivisione dei dati.

#### Sicurezza

Rende sicuro un foglio di calcolo oppure le sue specifiche sezioni con una password è solamente un'azione simbolica. Dopo aver fornito un foglio di calcolo in una rete di computer, ogni persona in grado di copiarlo potrà provare ad eludere la protezione. A volte non è così difficile dato che la password è memorizzata all'interno del file stesso.

È altrettanto facile eludere il blocco alle modifiche ed il blocco alla copia per un foglio di calcolo (o per una sua parte).

Le banche dati (ad eccezione di quelle salvate in un file invece che su un server) non hanno bisogno di essere disponibili su un singolo file. Potrai accedere ad esse tramite una rete di calcolatori, tipicamente fornendo un nome utente ed una password. Otterrai l'accesso solamente a quelle aree (tabelle, moduli o addirittura specifiche righe e colonne) che ti sono state assegnate impostando appropriati diritti di accesso.

I diritti di accesso possono influenzare la possibilità di modificare o di leggere i dati. Se non ti è reso disponibile alcun dato, non verrà neanche inviato al tuo computer in modo tale che non ci sia modo di crearne una copia così facilmente, come accade per i fogli di calcolo.

## Progettazione di una banca dati

La progettazione di una banca dati richiede una pianificazione attenta. Nota che la riprogettazione della tabella Contatti proposta nella sezione 1.2 può generare dei problemi quando la tabella viene riempita di dati. Ad esempio, rinominare un campo è un compito semplice, ma separare il campo Indirizzo in campi separati richiede attenzione e uno lavoro tedioso.

Per evitare queste situazioni, pensa di nuovo al progetto della tua banca dati prima di crearla sul tuo computer, e prima che tu e gli altri comincino ad utilizzarla. In questo modo, investendo del tempo all'inizio, probabilmente risparmierai del tempo durante l'uso quotidiano.

## Chi ha bisogno di una banca dati?

## Rimani ai fogli di calcolo se:

- Le tue esigenze sono limitate ed i tuoi dati non cresceranno mai così tanto (puoi realmente prevederlo?)

- Non riesci ad acquisire la metodologia necessaria alla costruzione di una banca dati. Tuttavia puoi considerare sia di delegare questa operazione a qualcun altro oppure di utilizzare strumenti più semplici.

- Utilizzi fogli di calcolo complicati e ti manca il tempo o il denaro per spostarti su una banca dati. Pensa, oppure chiedi a qualcuno, se questo non ti porti in un vicolo cieco. Non fare affidamento in strumenti "magici" (per quanto ben fatti) che convertono i tuoi fogli di calcolo in banche dati.

## Considera l'utilizzo di banche dati se:

- La tua collezione di dati si espande ogni settimana.

- Crei spesso nuovi fogli di calcolo, effettui delle operazioni di copia all'interno di essi e ti sembra che questo lavoro stia diventando sempre più noioso. In tal caso lo sforzo impiegato nella trasformazione in una banca dati ripaga facilmente.

- Crei dei rapporti per i quali la vista a tabelle di un foglio di calcolo non è sufficiente. Potresti allora pensare di utilizzare una banca dati con viste a modello.

## Software per la creazione di banche dati

Finora hai imparato le caratteristiche generali delle banche dati senza aver visto in dettaglio le applicazioni specifiche per la loro progettazione.

Le prime banche dati furono costruite all'interno di grandi computer mainframe negli anni 60, come gli IBM S⪚ystem/360. Non era ancora l'era dei PC e quindi queste banche dati avevano bisogno di personale altamente specializzato. Sebbene l'hardware dei vecchi computer fosse inaffidabile, fossero incredibilmente più lenti ed offrissero una capacità di memorizzazione minore, una caratteristica delle banche dati rimane ancora la più affascinante: l'accesso ai dati da parte di diversi utenti all'interno di una rete.

Negli anni 70 alcuni scienziati crearono la teoria della banche dati relazionali (termini come tabella, record, colonna (campo) e relazionalità e molti altri). Sulla base di questa teoria vennero create le banche dati IBM DB2 ed Oracle, che sono state sviluppate ed utilizzate fino ai nostri giorni. Negli ultimi anni 70 vennero costruiti i primi PC. I loro utenti poterono (gradualmente) utilizzare differenti tipi di applicazioni, incluse quelle per la costruzione delle banche dati.

Quando si tratta di grandi banche dati nelle aziende, la situazione cambia: richiedono ancora computer potenti o complessi chiamati cluster. Tutto questo va, però, oltre gli scopi del manuale.

Nell'ambito delle banche dati "accessibili" con interfacce utenti grafiche per PC puoi scegliere tra i seguenti:

- DBase - uno strumento per operazioni su banche dati per DOS, diffuso negli anni 80. I file nel formato DBase vengono ancora utilizzati in alcuni casi specifici a causa della loro semplicità.

- FoxPro - un'applicazione simile a DBase (primi anni 90). Dopo essere stato acquisito da Microsoft vennero introdotte le interfacce utente grafiche e venne utilizzato quindi per creare banche dati sui PC. Questo prodotto viene ancora distribuito, anche se è ormai un po' obsoleto.

- Microsoft Access - un'applicazione per banche dati (progettazione sui dati e attraverso l'interfaccia grafica) con molte semplificazioni, per questo adatta ai principianti, progettata nei tardi anni 80, basato su un'architettura a 16 bit. Questo prodotto viene offerto ed è ampiamente utilizzato ancora ora, specialmente nelle piccole aziende, dove l'efficienza ed i requisiti di utenza multipla non sono fortemente richiesti.

- FileMaker - applicazione diffusa simile a MS Access per la semplicità, operativa sulle piattaforme Windows e Macintosh, distribuito sin dal 1985.

- &kexi; - un'applicazione multipiattaforma (Unix/Linux, Windows, Mac OS X) progettata nel 2003, sviluppata nel rispetto dei principi OpenSource, parte del progetto globale KDE, &ie; un ambiente grafico per sistemi Unix/Linux. Un contributo significativo allo sviluppo di &kexi; è stato apportato dalla compagnia OpenOffice Poland.