LA PROGETTAZIONE DI UN
DATABASE
IL DISEGNO RELAZIONALE
INTRODUZIONE
Fin dall'antichità l'uomo ha sempre avuto
bisogno di memorizzare ed elaborare
informazioni.
Che fossero parole o numeri poco importava,
quello che serviva era uno strumento per far sì
che queste informazioni non fossero affidate
solo alla memoria umana, ma continuassero ad
esistere e ad essere disponibili a tutti.
Prima dell'avvento dei computer l'unico
supporto su cui era possibile memorizzare i dati
era la carta (fogli, libri, ecc.) con tutte le
limitazioni che essa comportava
Con l'introduzione dei computer le cose
migliorarono decisamente si cominciarono a
studiare metodi e sistemi di gestione delle
informazioni tali da ottimizzarne la ricerca e
l'elaborazione.
Si sentì quindi il bisogno di organizzare il
contenuto dei file in maniera organica; perché
ciò fosse possibile furono realizzati dei
programmi che generavano DATABASE, vale a
dire dei file in cui i dati erano memorizzati
secondo precisi criteri di omogeneità e
sequenzialità.
Sulla base di tali criteri i suddetti programmi
furono poi in grado di ricercare ed elaborare i
dati con notevole velocità.
Un DBMS (Data Base Management System) è un
programma in grado di generare ed elaborare uno o
più DATABASE, cioè uno o più file in cui i dati
relativi a determinate entità (animali, persone,
prodotti, fatture, ecc.) sono organizzati secondo i
seguenti criteri:
- ciascun elemento appartenente all'entità viene
descritto da un RECORD (riga);
- ogni record è suddiviso in CAMPI (colonne),
ciascuno dei quali contiene un attributo
(caratteristica) della suddetta entità.
Un database di clienti, ad esempio, può contenere i
seguenti campi che descrivono le caratteristiche di
ciascun cliente:
- codice cliente
- nome
- cognome
- indirizzo
- città
- CAP
Cercando di ottimizzare le prestazioni dei
programmi DBMS ci si accorse ben presto che i
database, così come erano strutturati,
contenevano molti dati inutilmente ripetuti.
Dovendo archiviare gli ordini dei clienti, ad
esempio, era necessario ripetere per ogni ordine
i dati anagrafici dei clienti che avevano
effettuato più di un ordine.
Se, in aggiunta, si volevano memorizzare le
fatture emesse, ecco che i dati anagrafici dei
clienti dovevano essere di nuovo ripetuti, con
un evidente spreco di tempo degli operatori e di
spazio sui dischi dei computer.
Si cercò allora il modo di ovviare a questo
inconveniente progettando dei programmi in
grado di archiviare i dati in contenitori differenti,
in base alla loro natura: le cosiddette TABELLE, e
di mettere queste tabelle in relazione tra loro,
secondo le necessità.
Nacquero così gli RDBMS (Relational Data Base
Management System). |
Nelle suddette tabelle ciascun record è contraddistinto
da un campo contenente un identificatore univoco (un
dato che compare una volta soltanto nell'intera
tabella); questo identificatore viene utilizzato nelle
altre tabelle, invece di ripetere per intero il record che
lo contiene.
Se ad esempio, ogni cliente contenuto nella tabella
anagrafica dei clienti viene identificato da un
numero progressivo (ID Cliente), nella tabella degli
ordini e in quella delle fatture emesse sarà
sufficiente inserire questo numero invece di ripetere
ogni volta tutti i dati anagrafici del cliente.
Programma del corso
Partiamo da un semplice esempio...
 Il modello relazionale
 I vantaggi della tecnologia relazionale
 Il processo di progettazione di un database
 La “normalizzazione” di un database

Partiamo da un semplice esempio...




Desideriamo costruire
l’archivio dei nostri
contatti.
Si tratta di persone che
normalmente operano
in azienda
Possono svolgere ruoli
diversi
Vogliamo rintracciarle
per azienda o per
nome
I ipotesi: organizzazione
“piatta” per azienda
Azienda
Amm.Del. Dir. Gen.
Dir.Comm Dir.Amm
Martini
s.r.l.
Flower
s.p.a.
Mario
Martini
Renzo
Bertasi
Ettore
Verdi
Flavio
Noaro
Gianni
Rossi
Franca
Ferrini
Marco
Martini
Stefano
Renzi
•
L’archivio è organizzato per azienda
•
Vengono predeterminati gli incarichi previsti
I ipotesi: organizzazione “piatta” per
azienda: i problemi
Alcuni incarichi potrebbero non esistere in
particolari aziende
 Come memorizzare un nominativo che non lavora
in nessuna azienda?
 E se bisogna inserire un ruolo non previsto (ad
esempio il portinaio!)?
In realtà questo approccio risulta:

– POCO FLESSIBILE
– MOLTO COSTOSO IN TERMINI DI SPAZIO
II ipotesi: organizzazione
“piatta” per persona
Persona
Azienda
Ruolo
Bertasi Renzo
Ferrini Franca
Martini Marco
Martini Mario
Noaro Flavio
L’archivio
Flower s.p.a.
Flower s.p.a.
Martini s.r.l.
Martini s.r.l.
Flower s.p.a.
Amm. Del.
Dir. Gen.
Dir. Amm.
Amm. Del.
Dir. Comm.
è organizzato per persona
Per ogni persona viene memorizzato il ruolo e
l’azienda in cui opera
I dati dell’azienda sono replicati tante volte
quante sono le persone
II ipotesi: organizzazione “piatta” per
persona: i problemi
Vi è una inutile e costosa ripetizione delle
informazioni
 Quante modifiche sono necessarie se
cambia la ragione sociale dell’azienda?

Questo approccio è:
– molto flessibile
– presenta grosse difficoltà di gestione
Il modello relazionale
Aziende
Ragione Sociale
Partita IVA
Indirizzo
Pagamento
Banca
Persone
Cognome
Nome
Indirizzo
Ruolo
Cellulare
Aziende e Persone sono classi di entità diverse
della realtà, che devono essere descritte
indipendentemente l’una dall’altra
Il modello relazionale

Presuppone il riconoscimento del tipo di
legame, cioè di relazione, che lega le
diverse entità del fenomeno che si intende
rappresentare
Il modello relazionale
Costruire un database relazionale significa
quindi:
–
–
–
–
–
Individuare i dati elementari
Identificare le entità (tabelle)
Individuare, per ogni entità, la CHIAVE
Scoprirne le relazioni
Creare un modello della realtà che faccia
riferimento alle entità individuate ed alle loro
relazioni
Il modello relazionale

Garantisce espandibilità e flessibilità nella
costruzione del modello e delle applicazioni
che ne derivano

Elimina la necessità di duplicare i dati
Le Tabelle




Le informazioni relative ad una classe di entità
vengono memorizzate in una struttura chiamata
TABELLA
La Tabella è organizzata in righe (RECORD) e
colonne (CAMPI)
Ogni campo identifica una proprietà dell’entità ed
assume in ogni record un valore specifico
Ogni riga identifica un elemento dell’insieme delle
entità. In ogni riga viene registrata l’informazione
relativa a una specifica entità
Le Tabelle
CAMPI o COLONNE
Nome
Cognome
Età
Sesso
Rossi
Mario
34
M
Verdi
Marina
22
F
Bianchi
Massimo
45
M
Grigi
Luca
22
M
R
E
C
O
R
D
Costruzione del modello
Per costruire un modello relazionale bisogna
poter associare, se due tabelle (entità) sono in
relazione, ogni record di una tabella con il
record corrispondente della tabella collegata.
Quanti tipi di relazione possono esistere?
Relazione “uno a uno”

Ad ogni record di una tabella principale è
associato al più un record della tabella
relazionata:
Posti numerati
Galleria 1
Galleria 2
Platea 1
Platea 2
Platea 3
Prenotazioni numerate
Patrizia
Giovanna
Isabella
Relazione “uno a uno”
I posti esistono anche se non ci sono
prenotazioni
 Ogni prenotazione è relativa ad un posto
(deve esistere il record corrispondente nella
tabella POSTI)
 Non possono esserci più prenotazioni per lo
stesso posto

Relazione “uno a molti”

Ad ogni record di una tabella possono
essere associati nessuno o molti record di
una tabella collegata, ma ad ogni record di
questa è associato sempre un’unico record
di quella d’origine
Clienti
Rossi s.p.a.
Bianchi s.r.l.
Verdi s.n.c.
Ordini
123
124
125
126
127
Relazione “molti a molti”

Ogni record di una tabella può essere
associato a molti record della tabella
collegata, e viceversa
Clienti
Rossi s.p.a.
Bianchi s.r.l.
Verdi s.n.c.
Prodotti
Penne
Matite
Carta
Inchiostro
Calamai
Come vengono create le relazioni

Relazioni 1 a 1 e 1 a molti
– In ogni record della tabella relazionata si deve
inserire il riferimento al record corrispondente
della tabella principale
Come vengono create le relazioni

Relazioni molti a molti
– bisogna creare una tabella intermedia, legata
con una relazione “uno a molti” con entrambe
le tabelle originarie
Clienti
Rossi s.p.a.
Bianchi s.r.l.
Verdi s.n.c.
Ordini
123
124
125
126
127
Prodotti
Penne
Matite
Carta
Inchiostro
Calamai
La “Chiave Primaria”
E’ quindi necessario poter identificare in
maniera univoca ogni record della tabella
principale della relazione
 Questo compito è svolto dalla CHIAVE
PRIMARIA
 La chiave primaria garantisce l’unicità del
record: non ci possono essere due record di
una tabella con la stessa chiave primaria

La “Chiave Primaria”
Le tabelle collegate (relazionate)
conterranno un campo dove viene indicata
la chiave primaria del record della tabella
principale
 Questo campo viene chiamato CHIAVE
ESTERNA

La “Chiave Primaria”

La chiave primaria può consistere in un
singolo campo:
– Tabella FATTURE ---------> CP Numero fatt.

in una combinazione di campi:
– Tabella CITTA’ -----> CP Latitud. + Longitud.
–
PV + NUM (targhe)

in un valore esterno (artificiale):
– Tabella CLIENTI ---> CP Codice cliente
Esempio di relazione tra
tabelle (uno a molti)
Cod
001
002
003
TABELLA CLIENTI
Rag. Sociale
Indirizzo
Rossi s.p.a.
V.le Monza, 34
Verdi s.n.c.
P.zza Garibaldi, 6
Bianchi s.r.l.
Via Palladio, 2
TABELLA ORDINI
Data Numero
Cod. cliente
2/5/96 125
002
3/5/96 126
011
3/5/96 127
002
Gli indici

Una tabella è naturalmente ordinata:
– secondo l’ordine di inserimento dei record se la
tabella non ha una chiave primaria
– secondo la chiave primaria se esiste

Tuttavia i record di una tabella devono poter
essere ordinati secondo un qualsiasi campo,
in senso crescente o decrescente; questa
funzione è svolta dagli indici
Gli indici
Un INDICE è uno strumento che mantiene
costantemente ordinati i record di una
tabella secondo i campi su cui è applicato
 L’insieme dei record ordinati non è una
nuova tabella, ma un “altro punto di vista”
della tabella stessa.

Gli indici

Se esiste un indice corrispondente al criterio
di ordinamento, l’elenco è ordinato in ogni
momento
– viene rallentato l’aggiornamento, ma
l’ordinamento è immediato

Se non esiste un indice, i record vengono
ordinati quando ciò viene richiesto
– è più veloce l’aggiornamento, ma è lento
l’ordinamento
Gli indici

Di conseguenza conviene associare un
indice ai metodi di ordinamento utilizzati di
frequente:
– elenco clienti in ordine alfabetico --> indice
associato
– elenco dipendenti in ordine di età --> nessun
indice associato
La progettazione di un DB
1.Identificare gli oggetti (entità) ---> TABELLE
2.Scoprire le relazioni ---> RELAZIONI TRA TABELLE
3.Determinare le proprietà --> CAMPI
4.Controllare la validità dei dati inseriti
5.Individuare gli indici adatti
6.Gestire la sicurezza (accessi in lettura/scrittura)
7. Documentare l’applicazione
Approcci alla progettazione
Bottom
- up
–Applicazione --> Schema (analisi)--> Database
–Analisi limitata agli aspetti inerenti
all’applicazione
Top
- down
–Realtà --> Analisi --> Database --> Applicazioni
–Analisi completa della realtà e generazione della
applicazioni come conseguenza
I vantaggi dei DB relazionali
Il disegno dei dati è indipendente dalle
applicazioni e viene mantenuto aggiornato
 Il linguaggio di accesso al DB è
standarizzato (SQL - QBE)
 Il motore del database è intercambiabile
 E’ semplificato l’accesso al DB da
applicazioni standard (Microsoft Office)

Controllare la validità dei dati

Definire il tipo di dato di ogni campo
– numero intero o con la virgola, testo, data,
valuta, oggetto, ecc.

Definire i limiti dei valori del campo
– massimo e minimo di un numero, lunghezza di
un testo, ecc.
Aspetti formali (maiuscolo e minuscolo)
 Controllare un valore in funzione di un altro
campo

L’integrità referenziale

Gestire l’integrità referenziale significa:
– rendere impossibile cancellare un record o
modificarne la chiave primaria se esso ha dei
record collegati in un’altra tabella

Ciò impedisce la possibilità che esistano
record della tabella collegata che fanno
riferimento a record della tabella principale
che non esistono
L’integrità referenziale
Quando si applica l’integrità referenziale non è
possibile:
 aggiungere record ad una tabella relazionata se
nella tabella principale non esistono record
associati
 modificare i record della tabella principale che
genererebbero record isolati in una tabella
correlata
 eliminare record dalla tabella principale se in una
tabella correlata sono inclusi dei record correlati
corrispondenti
Regole da seguire

Relazionare ogni campo al soggetto della
tabella
– un campo che descrive il soggetto di un’altra
tabella appartiene all’altra tabella
Non inserire nella tabella valori calcolati
 Indicare i campi nelle loro più piccole
suddivisioni logiche

La normalizzazione del DB

La normalizzazione è un processo
formalizzato di costruzione e verifica del
DB che garantisce la correttezza della
progettazione e grazie a ciò:
–
–
–
–
la semplicità
la flessibilità
la manutenibilità
la capacità analitica
delle applicazioni costruite sul DB
I forma normale:
campi ripetitivi

Richiede che le tabelle siano “piatte” e che
non contengano gruppi ripetitivi: una tabella
piatta ha solo due dimensioni - lunghezza
(numero dei record) e larghezza (numero
dei campi) e non può contenere caselle di
dati con più di un solo valore
II forma normale:
dipendenza da CP

Richiede che i dati contenuti in tutte le
colonne non chiave siano completamente
dipendenti dalla chiave primaria:
– ciò significa che i valori dei dati in ogni
colonna siano determinati univocamente dal
valore della chiave primaria
III forma normale:
indipendenza dei campi

Richiede che tutte le colonne (campi) non
chiave siano dipendenti dalla chiave
primaria ed indipendenti tra loro
IV forma normale:
no relazioni “molti a molti”

Richiede che le entità dei dati indipendenti
non siano contenute nella stessa tabella
quando esistono delle relazioni “molti a
molti” tra quelle entità
V forma normale

Richiede che deve essere possibile la
ricostruzione della tabella di origine dalle
tabelle in cui essa è stata scomposta
– questa operazione viene eseguita per mezzo di
“query”
Ora quanto abbiamo capito ?
RIPRENDIAMO ALCUNI CONCETTI CHIAVE:
•ENTITA’
•TABELLE
•RELAZIONI
•CHIAVE PRIMARIA, CHIAVE ESTERNA
•INDICI
•ITER DI PROGETTAZIONE
•INTEGRITA’ REFERENZIALE
•NORMALIZZAZIONE
I database relazionali: un esempio
Cos’è Access
Access è un DBMS, cioè una applicazione nata per
gestire delle grosse quantità di dati.
 Per realizzare questo compito, è necessario che i
dati abbiano una loro strutturazione ben definita e
retta da regole
 Quindi Access consente di definire queste regole e
di creare sui dati delle vere e proprie applicazioni
per scopi specifici (applicazioni verticali)

ACCESS serve anche per creare APPLICAZIONI
Una applicazione è un database automatizzato, lo
scopo è creare un prodotto che tutti possano
utilizzare, anche le persone che non sanno nulla di
Access.
ACCESS E I DUE PUNTI DI VISTA
SVILUPPATORE: colui che crea l’applicazione
UTENTE: la persona che utilizza l’applicazione,
potrebbe essere anche un neofita di computer.
Con Access si fa ingresso nella categoria di
sviluppatori di applicazioni che verranno utilizzate da
persone con poca o nessuna esperienza di computer.
Perché usare un RDBMS come
Access?





Perché si hanno molte informazioni da gestire e magari e si
vogliono organizzare e razionalizzare
Perché si vogliono utilizzare gli stessi dati per molti scopi
diversi
Perché le informazioni devono essere condivise tra molti
utilizzatori (utenti)
Perché si vuole garantire la correttezza dei dati (tramite dei
meccanismi automatici di input)
Perché si vuole rendere le informazioni disponibili solo a
chi serve e “nascoste” agli altri
Access Base: Contenuti
Definizioni: che cos’è un database e che cos’è
Access
 Progettare un database
 L’interfaccia e gli oggetti di Access
 Tabelle, dati e tipi di dati
 Relazioni, chiave primaria e chiave straniera
 Dai dati alle informazioni: le Query
 Importazioni ed esportazioni semplici
 Input e output con Maschere (schede) e Report
