1.1. Data base relazionali - Digilander

1.1.
Data base relazionali
1.1.1. Cosa è un database
Una base di dati (BD) o Data Base (DB) è un sistema di archivi (file) opportunamente
organizzati per consentirne una facile consultazione da parte di altri programmi oppure da parte
direttamente dell'utente finale. Il software di gestione di dette basi di dati è in genere organizzato
in un apposito Sistema di Gestione di Basi di Dati (Data Base Management System - DBMS),
spesso inglobato in appositi prodotti software commerciali.
Tra i modelli classici delle basi di dati (gerarchico, reticolare, a liste invertite e relazionale),
viene presentato unicamente il modello relazionale, quello più usato allo stato.
L'architettura di un sistema di base di dati, così come per la maggioranza del software, è
suddivisa essenzialmente in due livelli:
- livello interno, che riguarda la struttura fisica degli archivi, la loro memorizzazione, le
tecniche interne per la ricerca dei dati, l'efficienza del sistema e così via;
- livello esterno, che riguarda la struttura logica dei dati così come viene vista dagli
utenti.
Lo studio delle basi di dati sviluppa in generale il livello esterno, mentre per il livello interno
occorrono nozioni sulla struttura ed il trattamento degli archivi che non sono illustrate in questo
corso.
1.1.2. Il DBMS e i linguaggi per il database
Un DBMS è un sistema attraverso il quale l'utente esegue le seguenti operazioni:
- Definizione dei dati del database,
- Manipolazione dei dati,
- Interrogazioni del database.
A tale scopo esistono appositi linguaggi del DBMS, in genere associati ai sistemi commerciali
che gestiscono le basi di dati e si confondono con essi: il linguaggio di DB2, DBASE-X,
ORACLE, INFORMIX e così via. Uno standard de facto è il linguaggio SQL (Structured Query
Language), comune a molti pacchetti, nato come linguaggio per l'interrogazione del database, ma
adatto anche per la sua definizione e per la manipolazione dei suoi dati.
Nei primi capitoli dei questo corso, ove non faremo riferimento ad uno specifico DBMS,
useremo, limitatamente agli approfondimenti, il linguaggio SQL per illustrare alcune operazioni
fondamentali di un database.
Altra tecnica di interfaccia fra DBMS e operatore umano è la classe di linguaggi cosiddetti
QBE (Query By Example), che realizzano le operazioni sul data base a mezzo di strumenti grafici,
menù, tabelle ed icone. In realtà, la tecnica tipica dei linguaggi di quarta generazione e dei
pacchetti specializzati consiste nell'interfacciare il DBMS con un sistema grafico e quindi nel
tradurre in linguaggio SQL le operazioni richieste dall'utente in modalità grafica. Alcuni pacchetti
DBMS rendono evidente, a richiesta, il testo SQL associato ad una operazione programmata
graficamente. Useremo un linguaggio QBE specifico nei capitoli di coda di questo corso.
1.1.2.1. I linguaggi del database (approfondimento)
In generale, esistono tre linguaggi distinti per programmare le attività di un DBMS, oppure tre
sezioni distinte di un medesimo linguaggio, come per SQL:
- Data Definition Language, DDL, che si rivolge al progettista che deve definire il
database.
- Data Manipulation Language, DML, che si rivolge al gestore della base di dati (Data
Base Administrator).
- Query Language, QL, che si rivolge all'utente che vuole trarre informazioni dal database,
programmando quindi apposite interrogazioni.
1.1.2.2. Modalità operative del linguaggio SQL (approfondimento)
SQL si presenta in tre distinte modalità applicative:
- interattiva: l'utente fornisce una singola interrogazione ed ottiene in risposta il risultato
a video (oppure su stampante); l'utente può poi proseguire con altre attività sul DB;
- batch o programmata: viene scritto un programma contenente più manipolazioni o
interrogazioni e quando il programma viene lanciato vengono eseguite in sequenza le
interrogazioni richieste e visualizzati i risultati;
- incorporata (embedded): SQL opera come sezione di un linguaggio di programmazione
general purpose, ad esempio C++
1.1.3. Le tabelle di un database
Il modello di database relazionale trova i suoi fondamenti nel concetto di relazione o
corrispondenza fra insiemi. La relazione è un concetto matematico, che trova peraltro una semplice
realizzazione pratica: una relazione è una tabella costituita da colonne (dette anche campi) e da
righe (dette anche record).
Sul concetto e sulla strutture di una tabella si tornerà ampiamente in seguito, ma vogliamo fin
d'ora introdurlo con un esempio (vedi figura) ove si presenta la tabella "anagrafica" di un ipotetico
database.
Una tabella di un database
Nome
Cognome
DataNascita
LuogoNascita
..........
Gennaro
Ambrogio
Romolo
…..
Esposito
Rossi
Romano
….
1/1/70
1/2/71
2/1/72
….
Napoli
Milano
Roma
….
.....
.....
.....
….
1.1.4. Data base relazionale: definizione ed esempio
Si può dare la seguente, banale, definizione:
Una base di dati relazionale è un insieme di tabelle (che, abbiamo detto, sono
altrettante relazioni).
1.1.4.1.
Il database Editrice (esempio)
A titolo di esempio, si mostra un database semplificato, che ipotizza l'organizzazione dei dati di
una casa editrice (per motivi di spazio, sono rappresentati pochi campi ed in ogni tabella pochi
record).
AUTORI
Nome
Data
Bianco Ugo
Bruni Bruno
Esposito Gennaro
Neri Marco
Rossi Carlo
Verde Mario
10/02/1980
30/01/1957
30/01/1970
31/12/1975
27/03/1965
01/01/1978
Indirizzo
via Roma 27
via Rossi 34
via Tale 20
via Po 100
p,za Dante 27
via Francia 27
CF
BNCGUO80B10F835W
BRNBRN57A30F839W
GNNSPS70A30F839X
NREMRC751231G548
RSSCRL55C27G984Y
VRDMRA780101F839
AUTORI_LIBRI
LIBRI
CodiceLibro
Titolo
Costo
AAA1111
AAA2346
AAA2789
AAA2878
AAA3456
AAA7890
La montagna spaccata
Squadra omicidi
Uno contro tutti
Il tramonto
Il commissario Angel
Il pirata Neil
€ 27,00
€ 15,50
€ 20,80
€ 27,30
€ 14,00
Genere
Avventura
Gialli
Avventura
Poesia
Gialli
Avventura
CodFisc
BNCGUO80B10F835W
BNCGUO80B10F835W
BRNBRN57A30F839W
BRNBRN57A30F839W
GNNSPS70A30F839X
NREMRC751231G548
RSSCRL55C27G984Y
VRDMRA780101F839
CodLibro Contratto
AAA1111 CT001
AAA2346 CT002
AAA2346 CT004
AAA2789 CT006
AAA2878 CT006
AAA2878 CT007
AAA3456 CT008
AAA7890 CT009
GENERE
Genere Collocazione Responsabile
Avventura
Gialli
Poesia
Saggistica
a001
a002
a003
a004
Lippo Saverio
Frangia Bruno
.
Mitocca Vincenzo
Il database: "Editrice"
La base di dati è costituita dalle tabelle:
- AUTORI, che contiene i dati anagrafici degli autori;
- LIBRI, che memorizza i libri pubblicati, identificati da un codice, il loro titolo , il costo
di copertina e il genere cui appartengono (libro giallo, avventure, saggistica,...);
- AUTORI-LIBRI, che pone in corrispondenza ciascun autore con i libri che egli ha
scritto e con il relativo contratto stipulato;
- GENERE: si suppone che la casa editrice abbia organizzato la produzione in generi, che
ogni genere abbia un responsabile e che associata alla casa editrice vi sia una biblioteca,
ove i testi sono collocati per generi: il genere G1 nel reparto L1 e così via.
In particolare si precisano alcuni aspetti di dettaglio relativi al significato dei dati in esame:
- ciascun autore può scrivere uno o più libri;
- ciascun libro può essere scritto da uno o più autori;
- ogni coppia libro-autore determina un contratto di per diritti di autore.
1.1.5. Ciclo di vita di una base di dati
Le basi di dati vengono create, sviluppate e gestite in fasi distinte, sotto la cura di distinte figure
professionali: il progettista, l'amministratore del database, l'utente finale a diversi livelli. In
particolare si considerano le seguenti fasi.
•
Progettazione del database: consiste essenzialmente nella definizione della sua struttura (si
vedrà in seguito che ciò significa definire lo schema del database e delle sue tabelle).
•
Popolamento iniziale: consiste nella prima immissione da parte dell'utente dei valori nelle
tabelle (si vedrà in seguito che ciò si dice istanziazione dello schema con i dati concreti. Con
tale operazione via via si accodano nuovi record a quelle già esistenti mentre il DBMS effettua
tutti i controlli di coerenza e compatibilità dei dati previsti in fase di progetto.
•
Interrogazione del database: dalle tabelle memorizzate nel database si possono estrarre
informazioni selezionando ed associando dati. Ciò si ottiene con le cosiddette query che
descrivono le regole secondo le quali i dati vengono estratti ed associati. Le query sono
programmate e possono essere memorizzate, in modo da richiamarle ed usarle all'occorrenza
(ad esempio, per una applicazione di contabilità una query potrebbe essere memorizzata per
preparare la denuncia mensile dell'IVA), ma possono nascere esigenze di interrogazioni
estemporanee che si programmano quando servono.
•
Aggiornamento dei dati: i dati contenuti nella BD sono periodicamente aggiornati, cioè si
inseriscono nuovi record nelle tabelle, se ne cancellano alcuni, si variano alcuni dati. Tutte
queste operazioni, analogamente al caricamento iniziale, devono essere espletate con apposite
verifiche dei vincoli di integrità.
1.1.6. La manutenzione del database
A fianco alle operazioni legate al suo ciclo di vita, un database richiede operazioni di
"manutenzione", tipicamente affidate al DBA (Data Base Administrator). Segnaliamo
fondamentalmente:
•
Revisione dello schema: eccezionalmente è possibile ritoccare la struttura (lo schema) del
database; questa è una operazione delicata, ma può essere richiesta per il miglioramento delle
prestazioni oppure per il sopravvenire di nuove esigenze.
•
Revisione della struttura interna del database: per mantenere l'efficienza del database è
necessario anche agire sul livello interno (vedi RICHIAMO) dello stesso, non trattato in questo
corso, oppure operazioni attinenti gli aspetti fisici del database come ad esempio il
compattamento del database per cancellare fisicamente gli oggetti cancellati logicamente e
riorganizzare il tutto oppure il riordinamento fisico degli archivi, detto sort (si vedrà in seguito
che sono possibili anche ordinamenti logici degli archivi).
•
Salvataggio (backup) periodico: I dati di un database costituiscono un prezioso patrimonio
aziendale, che va salvaguardato rispetto ad eventi occasionali quali il danneggiamento fisico dei
supporti oppure l'introduzione di informazioni errate. Per tale motivo è buona norma effettuare
periodicamente un backup del database, ad esempio su supporti magnetici a nastro. Tale
salvataggio è un'operazione essenziale e pesante (può durare anch'essa qualche ora) e di solito
va eseguita anche nottetempo.
RICHIAMO: § 1.1.1 - Cosa è un database