68003 Letture

Progettazione di database: aspetti teorici

Con questo primo articolo diamo il via ad una serie di lezioni dedicate alla progettazione, allo sviluppo ed alla gestione di database.
Abbiamo scelto di partire, prima, da alcune importanti informazioni teoriche che costituiscono la chiave di volta per comprendere tutte le problematiche più complesse legate alle basi di dati.
La trattazione dei temi presentati in questo articolo necessiterebbero un'analisi certamente più ampia e dettagliata. Il nostro obiettivo primario è e resta comunque quello di fornire buone basi per approfondire, poi, successivamente l'argomento.

Ecco le linee guida dei nostri quattro articoli dedicati ai database:

1. Introduzione alla progettazione di database
2. Progettazione di database in pratica (modello Entity-Relationship; implementazione in Access)
3. Linguaggio SQL (introduzione all'algebra ed al calcolo relazionale; uso di SQL per effettuare interrogazioni sulle basi di dati)
4. Esempi pratici di utilizzo del linguaggio SQL: basi di dati esemplificative

Un DBMS (Database Management System) è un sistema (prodotto software) in grado di gestire insiemi di dati che siano grandi (di dimensioni molto maggiori della memoria centrale dei sistemi di calcolo utilizzati), persistenti (con un periodo di vita indipendente dalle singole esecuzioni dei programmi che attingono ai dati), condivisi (utilizzati da applicazioni diverse).
Il DBMS deve garantire affidabilità (resistenza a malfunzionamenti hardware e software) e privatezza (controllo degli accessi). Come ogni prodotto informatico, un DBMS deve essere anche efficiente ed efficace.


Oggi chiunque, a vari livelli, desideri memorizzare e gestire semplicemente dei dati e delle informazioni deve ricorrere all'utilizzo di DBMS: dal libero professionista che vuole servirsi di uno strumento per la gestione delle proprie fatture, alla banca (che necessita di un sistema informativo sicuro e performante per la gestione delle operazioni dei propri clienti).

Probabilmente il DBMS più famoso a livello "consumer" è Microsoft Access. Esistono comunque decine di DBMS, particolarmente indicati per usi professionali (MySQL, PostgreSQL, IBM DB2, Oracle, Microsoft SQL Server, Sybase, FileMaker,...).

Dati e informazioni
Cominciamo col fare un pò di chiarezza sulla differenza che intercorre tra il concetto di dato e quello di informazione.
Il dato può essere definito come "la registrazione, tramite uno speciale codice, di un aspetto della realtà". I dati hanno bisogno di essere interpretati per fornire conoscenza: di per sé, quindi, i dati non forniscono informazione. L'insieme di dati, invece, opportunamente organizzati, può dare informazione.
L'informazione può essere definita come "la percezione di un insieme di dati, attraverso un processo di interpretazione".
"212" e "Mario" sono due dati. Di per sé non significano nulla. In risposta alla domanda: "Qual è l'interno della persona che si occupa della gestione del personale?" i due dati vengono invece a fornire informazione.

Basi di dati e sistemi informativi
I DBMS gestiscono basi di dati. Ciò significa che i database sono in grado di operare su collezioni di dati (basi di dati) utilizzate per rappresentare le informazioni di interesse, necessarie per le applicazioni più disparate.
Il concetto di sistema informativo si collega direttamente alle basi di dati: si tratta infatti dell'insieme di informazioni utilizzate, memorizzate ed elaborate. Un sistema informativo, in senso informatico, può utilizzare più basi di dati e costituisce la piattaforma utilizzata da un'azienda per la gestione automatizzata delle proprie attività.
Va comunque sottolineato che il concetto di sistema informativo esula anche dall'ambiente informatico: esistono organizzazioni la cui ragion d'essere è la gestione di informazioni (per esempio i servizi anagrafici e le banche) che operano da secoli (ben prima dell'avvento dei computer e dei sistemi informatici in generale).

Il modello relazionale. Relazioni e tabelle.
Per l'organizzazione dei dati all'interno di un DBMS vengono utilizzati dei modelli logici totalmente indipendenti dalla struttura fisica del database.
Il modello relazionale è certamente quello oggi più utilizzato: proposto già nel 1970 da E.F. Codd diventò disponibile in DBMS reali solo a partire dal 1981.
La sua peculiarità consiste nel fatto che è basato sui valori. Ciò significa che i riferimenti tra dati in strutture (relazioni o tabelle) diverse sono rappresentati per mezzo dei valori stessi.
Avviando Microsoft Access ci si imbatterà subito nelle tabelle.
Una tabella (coincide con il concetto di "relazione" di E.F. Codd) è costituita da righe e colonne; ad ogni colonna (dominio) è associato un attributo univoco (diverso da tutti gli altri) che ne descrive il ruolo. Ad esempio:

InCasaFuoriCasaRetiInCasaRetiFuoriCasa
InterLazio30
RomaJuventus21
JuventusBologna10
RomaInter02
ChievoUdinese43
ParmaAtalanta10


Gli attributi sono "InCasa", "FuoriCasa", "RetiInCasa" e "RetiFuoriCasa".
In una tabella, inoltre, i valori di ogni colonna sono tra loro omogenei (non è ammissibile, ad esempio, trovare il valore "Inter" nella colonna "RetiInCasa").
Va sottolineato, infine, che in una tabella l'ordinamento delle righe (così come quello delle colonne) è del tutto irrilevante. L'informazione, insomma, non è legata alla posizione dei dati: conoscendo la semantica (ossia il signficato degli elementi memorizzati in ogni singola colonna), grazie agli attributi, pur scambiando la posizione delle colonne, l'informazione non viene alterata.
Ecco perché Microsoft Access ed altri database simili sono detti database relazionali. Si tratta di un modello basato su valori perché i riferimenti fra dati in tabelle diverse sono rappresentati per mezzo dei valori che compaiono all'interno delle varie righe di ciascuna tabella.


Perché usare più tabelle?
Chi non ha mai utilizzato un DBMS è facile che si chieda per quale motivo si renda necessario l'utilizzo di più tabelle quando, probabilmente, sarebbe possibile memorizzare le varie informazioni in un'unica tabella. In realtà una pratica simile deve essere assolutamente evitata.
Immaginate di avere a che fare con il database di un hotel: se esso fosse costituito da un'unica grande tabella, qualora volessimo intervenire sui dati anagrafici di un cliente dovremmo modificare ogni sua prenotazione memorizzata; se volessimo cancellare una prenotazione, inoltre, elimineremmo tutti gli altri dati relativi al cliente.
L'uso di più tabelle ci consente di organizzare i dati secondo tipologie ben definite (è possibile, per esempio, creare una tabella per l'anagrafica di tutti i clienti; una per le prenotazioni; un'altra per i servizi erogati; un'altra ancora per le fatture emesse e così via...). Non solo, usando più tabelle si evita il problema della ridondanza (non è necessario memorizzare più volte gli stessi dati), si risolvono problemi legati all'inconsistenza dei dati, si velocizzano in generale le operazioni di recupero, modifica e cancellazione dei dati.


Progettazione di database: aspetti teorici - IlSoftware.it