Archivi di dati
Un archivio è una raccolta di informazioni relative a un determinato argomento:
• i libri di una biblioteca
• i dipendenti di un’azienda
• gli articoli di un magazzino
• gli abitanti di un comune
Un archivio è rappresentabile sotto forma di tabella in cui le righe sono dette
record e le colonne sono dette campi, ad esempio un archivio Clienti:
campi
record
Cognome
Nome
Cod. Fisc.
Indirizzo
Telefono
Rossi
Mario
rssmra….
Via Roma..
0961737..
Bianchi
Carlo
bnccrl….
Via Milano
096172..
……
…..
…..
….
…..
…..
….
….
…..
…..
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
1
Campi e record
Un campo o attributo contiene una singola informazione (un cognome, una
data, un codice o un prezzo, ecc.); i campi costituiscono le colonne della tabella
e ognuno è caratterizzato da
• un nome che lo identifica,
• un tipo che definisce la natura delle informazioni che esso può
contenere: un testo, un numero, una data ecc.
• una dimensione che definisce la quantità di memoria necessaria per
quel campo
Un record o ennupla è l’insieme dei campi relativi a un elemento (una persona,
un libro, un articolo di magazzino) dell’archivio; i record sono le righe della
tabella. La dimensione di un record è data dalla somma delle dimensioni dei
campi che lo compongono.
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
2
Database & DBMS
Un database ( o base di dati) è una struttura di archivi (tabelle) correlati tra loro
in modo da costituire una base di informazioni indipendente dall’uso che se ne
farà e sulla quale possano quindi essere eseguite procedure diverse e possano
lavorare utenti diversi. Ad esempio: la base di informazioni per la gestione di
una biblioteca (i libri, gli utenti, i prestiti); la gestione di un’azienda (clienti,
fornitori, dipendenti, ……); la gestione di una scuola (studenti, classi, docenti,
…..)
Un DBMS (Database Management System) è un software applicativo per la
gestione completa di un database :
• creazione
• aggiornamento
• interrogazione
• presentazione
• sicurezza
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
3
Modelli di database
Sono stati proposti, nel tempo, alcuni modelli di database, in ordine cronologico:
• Database gerarchici
I legami tra gli archivi sono di tipo gerarchico e quindi
implicano delle dipendenze di alcune entità rispetto
ad altre, ciò porta a una certa rigidità di struttura.
• Database reticolari
Non ci sono più livelli diversi tra le entità in quanto
esse sono nodi di un reticolo più o meno complesso.
• Database relazionali
Sono basati sul concetto matematico di relazione fra
insiemi. Una tabella può infatti essere vista come una
relazione tra gli insiemi costituiti dalle sue colonne
(domini): ad esempio l’insieme dei nomi, quello dei
cognomi, quello delle date di nascita,… ogni riga è
costituita da n elementi, uno per dominio, e si chiama
n-pla o tupla.
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
4
Database relazionali
Cognome
Nome
Cod._Fisc
Indirizzo
Telefono
Rossi
Mario
rssmra….
Via Roma..
0961737..
Bianchi
Carlo
bnccrl….
Via Milano
096172..
……
…..
…..
….
…..
…..
….
….
…..
…..
È una relazione tra i domini: Cognome, Nome, Cod_Fisc, Indirizzo, Telefono.
Ogni riga (n-pla o tupla) contiene un elemento per ogni dominio.
Non possono esserci due tuple uguali, come vedremo due tuple differiranno per
almeno un elemento (chiave)
Non esiste un ordine prestabilito tra le n-ple
I contenuti della relazione in un certo istante si chiamano istanze.
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
5
Un esempio di DBMS relazionale: Microsoft Access
Microsoft Access è un software per la gestione di basi di dati relazionali utilizzato su
personal computer, nel seguito faremo riferimento a questo programma. Il
programma mette a disposizione dell’utente una serie di strumenti a interfaccia
grafica per la realizzazione di tutte le funzioni di gestione di un database:
• tabelle
per la definizione dei dati
• maschere
per l’accesso ai dati (sia in ingresso che in uscita)
• query
per l’interrogazione della base di dati
• report
per la presentazione in stampa delle informazioni
• macro
per la preparazione di serie di comandi da eseguire in sequenza
• moduli
per la programmazione di intere applicazioni
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
6
Gli strumenti
di Access
utente
maschera
maschera
tabella
maschera
tabella
tabella
report
report
query
query
report
maschera
Le tabelle sono i contenitori dei dati, le queries prendono i dati da una o più tabelle o queries
in base a determinati criteri di interrogazione e si comportano a loro volta come tabelle, le
maschere danno accesso ai dati (tabelle e queries), i report presentano in stampa i contenuti
di tabelle e queries.
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
7
Collegamenti tra tabelle
In un database normalmente gli archivi (tabelle) sono tra loro correlati per rendere
massima l’efficienza e minima la ridondanza di informazioni che consiste nel ripetersi
degli stessi dati più volte nello stesso archivio o in archivi diversi.
La ridondanza, oltre all’evidente spreco di spazio di memoria, può comportare anche
veri e propri errori, infatti un’informazione ripetuta più volte in posizioni diverse può
essere aggiornata in alcune posizioni e non in altre provocando inconsistenza nei dati.
Due tabelle possono essere collegate tra loro attraverso alcuni campi particolari detti
chiavi.
Una chiave primaria è un campo che individua univocamente ogni record all’interno di
una tabella. In altre parole non possono esserci due record con la stessa chiave
primaria.
Ad esempio, in un archivio anagrafico, il codice fiscale è un campo che può essere
usato come chiave primaria mentre non lo sono, normalmente, il cognome o il nome.
Inserendo, in una tabella correlata, un campo (detto chiave esterna) corrispondente alla
chiave primaria della prima tabella si può stabilire un’associazione tra le due tabelle.
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
8
Collegamenti tra tabelle
Chiave primaria
CLIENTI
cognome
nome
cod_fisc
indirizzo
telefono
1
Chiave esterna
ORDINI
num_ordine
molti
data
importo
cod_fis_cli
Le due tabelle CLIENTI e ORDINI sono correlate attraverso il campo codice fiscale che
lega ogni cliente agli ordini da lui effettuati e ogni ordine al cliente che lo ha effettuato.
Senza questo collegamento bisognerebbe ripetere i dati del cliente per ogni ordine
presente nell’archivio ordini creando una notevole ridondanza.
In questo modo i dati di un cliente, a parte il codice fiscale, sono memorizzati una sola
volta nell’archivio clienti e si devono aggiornare solo li. Il campo cod_fis_cli si chiama
chiave esterna e, poiché ogni cliente può fare più ordini, il collegamento creato è di tipo
uno a molti. È evidente che nella tabella ORDINI ci possono essere più record con lo
stesso codice fiscale che infatti non è una chiave primaria ma una chiave esterna.
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
9
Database esempio 1
Ogni rettangolo rappresenta una tabella con i suoi attributi (campi);
gli attributi sottolineati sono le chiavi primarie;
i collegamenti sono indicati da frecce che partono da una chiave primaria e arrivano alla
corrispondente chiave esterna
Prescrizioni mediche
Medici
Prescrizioni
Pazienti
IDPrescrizione
CodMedico
CodPaziente
Farmaco
Data
Costo
CodPaziente
Nome paziente
Cognome paziente
Età paziente
Sesso paziente
1
CodMedico
Nome
Cognome
Specializzazione
Sesso
N
N
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
1
10
Database esempio 2
Palestra: iscrizioni ai corsi
Iscritti
Iscrizioni
Corsi
CodIscritto
Nome
Cognome
Età
Sesso
IDIscrizione
CodIscritto
CodCorso
Data
CodCorso
Denominazione
CognomeIstruttore
NomeIstruttore
Costo
Durata
1
N
N
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
1
11
Database esempio 3
Analisi cliniche
Esami_Clinici
Esami_Eseguiti
Pazienti
CodEsame
Denominazione
Costo
IDEsame
CodEsame
CodPaziente
Data
Risultato
CodPaziente
Nome paziente
Cognome paziente
Età paziente
Sesso paziente
1
N
N
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
1
12
Indici
Un indice è uno strumento per rendere più efficienti e veloci le ricerche all’interno di una
tabella.
Ogni campo può essere associato a un indice, una tabella in cui ad ogni valore del campo
è indicato il numero della riga in cui si trova quel valore, per rendere più veloci le
ricerche secondo quel campo.
Un indice, però, occupa spazio di memoria e rende più lento l’aggiornamento della
tabella (perché bisogna aggiornare anche l’indice), quindi è opportuno indicizzare solo i
campi secondo cui si prevede di effettuare prevalentemente le ricerche.
Un campo può essere indicizzato
con duplicati ammessi
nel caso in cui più righe possono
avere lo stesso contenuto per quel
campo
con duplicati non ammessi
nel caso in cui più righe non
possono avere lo stesso contenuto per
quel campo
Una chiave primaria è, per sua natura, sempre indicizzata con duplicati non ammessi
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
13
Integrità referenziale
L’integrità referenziale è un sistema di controlli che assicurano la congruenza
delle informazioni di un database.
Ad esempio, nel caso delle due tabelle correlate CLIENTI e ORDINI
Se esiste, nella tabella ORDINI, un ordine con un certo codice fiscale non
deve essere cancellato, dalla tabella CLIENTI, il cliente con quel codice
fiscale
Non si può modificare un codice fiscale nella tabella CLIENTI se esistono
record correlati nella tabella ORDINI
Non si può inserire un ordine con un codice fiscale che non appartiene a
nessun cliente della tabella clienti
Ne consegue che, normalmente, prima di inserire un ordine bisogna aver
creato il relativo cliente nella tabella CLIENTI e quando si cancella un
cliente vengono cancellati anche tutti i suoi ordini
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
14
L’inserimento dei dati
Una volta definite le tabelle e i collegamenti tra queste, il DBMS consente
l’inserimento dei dati in due modi:
• direttamente nelle tabelle (modalità foglio dati)
• attraverso una maschera o vista, associata alla tabella, che consente di
inserire e vedere i contenuti della tabella in una forma personalizzata
Sia in modalità foglio dati che nell’uso di maschere il DBMS offre una serie di
strumenti per la visualizzazione dei dati:
• sistemi di navigazione
• filtri di selezione e ricerca
• ordinamenti secondo uno o più criteri
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
15
Le queries
Una query è uno strumento per interrogare il database, cioè per estrarre dall’insieme delle
tabelle le informazioni desiderate con i criteri di scelta necessari.
Il punto di partenza di una query è quindi costituito da una o più tabelle e il risultato di una
query è, in generale, un’altra tabella che contiene le risposte all’interrogazione impostata.
In alcuni casi il risultato di una query può essere costituito da valori risultanti da calcoli o
conteggi.
Il DBMS Access offre un sistema visuale per definire la query cioè:
• Definire la o le tabelle di partenza
• Definire i campi interessati
• Definire i criteri di selezione
• Definire eventuali ordinamenti
• Effettuare conteggi o calcoli su particolari campi
Il sistema visuale consente di aggirare l’uso dello strumento più generale per la gestione
dei database e la definizione di query che è il linguaggio SQL ( Structured Query
Language) che rimane comunque
disponibile per gli utenti in grado di usarlo.
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
16
Esempio di query (1)
Si vogliono il cognome, il nome del cliente e la data degli ordini con importo
superiore a 100 €, ordinati per importo decrescente
Sono richiesti dati provenienti dalla tabella CLIENTI (cognome e nome) e dalla
tabella ORDINI (data e importo). La struttura della query può essere impostata in
Access:
Campo
cognome
nome
data
importo
Tabella
Clienti
Clienti
Ordini
Ordini
Ordinamento
Mostra
decrescente
√
√
√
Criteri
√
> 100
Il risultato sarà una tabella con quattro colonne e un numero di righe pari al
numero di ordini con importo maggiore di 100 € e le righe saranno ordinate
per importo decrescente
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
17
Esempio di query (2)
Se invece si vuole il numero totale degli ordini ricevuti in un certo intervallo
di tempo: 1/12/05 – 31/12/05
Campo
Num_ord
Data
Tabella
Ordini
Ordini
Formula
Conteggio
Espressione
Ordinamento
Mostra
Criteri
√
<=#31/12/2005# And >=#01/12/2005#
Nella struttura della query è stata inserita la riga formula che permette di
inserire funzioni come conteggio, somma, media ecc. che effettuano calcoli su
determinati campi. Nella colonna data si inserisce il criterio di selezione che, in
questo caso, usa l’operatore logico AND. Il risultato è un valore numerico.
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
18
Esempio di query (3) Query parametrica
Nelle queries viste finora i criteri di selezione dei dati erano espressi
esplicitamente: importo>100, data compresa tra 1/12/2005 e 31/12/2005.
Si possono definire delle queries in cui, invece, i criteri sono espressi tramite
parametri il cui valore può cambiare ogni volta che la query viene eseguita.
Campo
cognome
nome
data
importo
Tabella
Clienti
Clienti
Ordini
Ordini
Ordinamento
Mostra
decrescente
√
√
√
Criteri
√
>[importo=]
Nella riga criteri invece del valore costante 100 si inserisce una domanda tra
parentesi quadra, tale domanda verrà riproposta all’utente ogni volta che verrà
attivata la query e ogni volta si potrà inserire un valore diverso.
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
19
I report
I contenuti di tabelle e queries possono essere mandati in stampa col formato
e l’organizzazione desiderati utilizzando i report che svolgono una funzione
analoga a quella delle maschere ma limitatamente all’uscita (presentazione)
dei dati.
Il DBMS offre dei formati standard di report (report tabulare, report a
colonne) oppure la possibilità di definire liberamente la struttura delle
stampe.
In ogni caso è possibile definire oltre al formato della stampa anche
particolari modalità grafiche, raggruppamenti e ordinamenti.
Corso di informatica - Database & DBMS - Raffaele Grande - 2006
20