DATABASE
Sistemi di gestione di basi di dati (DBMS)
I database (basi di dati) sono degli insiemi organizzati di dati.
Un sistema di gestione delle basi di dati (DBMS - Data Base
Management System ) è un gestore di basi di dati che ha lo scopo
di effettuare sul database particolari operazioni che gli vengono
richieste, ad esempio:
- definire gli archivi specificandone i dati e le regole per il
loro utilizzo
- inserire, modificare o cancellare dati
- effettuare ricerche di diversa natura per reperire rapidamente
i dati che interessano, visualizzare, stampare i dati, ecc.
e per attuare questa gestione utilizza un software specifico.
Modelli e caratteristiche dei database
I database possono essere strutturati in diversi modi:
• Modello gerarchico. Si basa su una struttura ad albero
• Modello reticolare. Elementi caratterizzanti sono i grafi.
• Modello Object Oriented. Fondato sulle proprietà degli oggetti.
• Modello Relazionale. Si organizzano i dati in tabelle in
relazione tra di loro.
Indipendentemente dal modello utilizzato un DBMS deve gestire:
• Inconsistenza e ridondanza dei dati
• Riservatezza
• Integrità (assicurata dai vincoli di consistenza sui campi)
• Concorrenza
Modello relazionale di database
e sistemi RDBMS
Noi utilizzeremo ed analizzeremo il modello relazionale:
un modello relazionale di un database è un
particolare modello in cui tutti i dati che
compongono il database e le relazioni che
intercorrono fra di essi sono rappresentati
attraverso delle tabelle.
Il sistema di gestione di un database relazionale è chiamato
RDBMS (Relational Data Base Management System).
tramite un RDBMS si può:
creare nuove basi di dati specificandone la struttura
logica,
memorizzare una grossa quantità di dati,
interrogare e modificare i dati,
controllare che l’accesso contemporaneo di più
utenti agli stessi dati non li danneggino.
Tabelle
Esempio: tabella CALCIATORI
CodGioc
3001
3002
3003
……
Nome
Ruolo
Buffon Gianluigi Portiere
Totti Francesco Attaccante
Trezeguet David Attaccante
……
……
Nazione
Italia
Italia
Francia
……
Una tabella è formata da righe (record, tupla) e colonne
(campi, attributi)
- Non è significativo l’ordine delle righe in una tabella
- Non devono esistere due righe uguali
Chiavi
Sono dei campi speciali all’interno di una tabella. Una chiave è
costituita da un sottoinsieme di attributi che garantisce unicità
(da due record differenti non si può costruire la medesima
chiave) e minimalità (non si possono sottrarre campi alla chiave
mantenendo l’identificazione del record).
Chiave primaria (primary key): campo che identifica in modo
univoco ogni record all’interno della tabella.
Es.: la chiave primaria della tabella “calciatori” è CodGioc.
Chiave esterna (foreign key): campo di una tabella che
rappresenta una copia della chiave primaria di un’altra tabella
(permette di stabilire relazioni fra tabelle).
Relazioni
Indicano le associazioni tra i record di una
tabella con quelli di un’altra tabella
• Relazione uno a uno
• Relazione uno a molti
• Relazione molti a molti
Relazione uno a uno (“di tipo 1:1”)
Si ha una relazione uno a uno quando un unico record
della prima tabella è legato ad un unico record della
seconda tabella e viceversa.
Esempio:
chiave primaria
tabella professori
CodProf
01
02
03
04
05
Nome
Tosoni
Pesenti
Borghesan
De Nadai
Luccio
Tabella professori
chiave primaria
tabella corso
CodCorso
01
02
03
04
05
Lettere
A-Ga
Gb-Sc
Sd-Z
Portogruaro
Treviso
Tabella corso
Per collegare le due tabelle
chiave primaria
tabella professori
chiave esterna
tabella professori
CodProf
01
02
03
04
Nome
Tosoni
Pesenti
Borghesan
De Nadai
CodCorso
04
01
03
05
05
Luccio
02
Tabella professori
Si aggiunge come chiave
esterna alla tabella professori,
l’attributo che costituisce la
chiave primaria della tabella
corso
chiave primaria
tabella corso
CodCorso
Lettere
01
02
03
04
05
A-Ga
Gb-Sc
Sd-Z
Portogruaro
Treviso
Tabella corso
chiave esterna
tabella corso
CodProf
02
05
03
01
04
oppure
II) Si aggiunge come chiave
esterna alla tabella corso,
l’attributo che costituisce la
chiave primaria della tabella
professori
La tabella la cui chiave primaria viene inserita nell’altra tabella è
detta tabella principale, mentre l’altra tabella è detta secondaria.
Relazione uno a molti (“di tipo 1:N”)
Si ha una relazione uno a molti tra due tabelle
quando ciascun record della prima tabella può
essere associato a molti record della seconda
tabella, mentre ciascun record della seconda
tabella può essere associato ad un solo record della
prima tabella.
Ad ogni squadra possono corrispondere più giocatori
ma un calciatore gioca in una sola squadra: si ha una
relazione “uno a molti”
Tabella SQUADRE
CodSq.
01
02
03
04
Squadra
Juventus
Milan
Inter
Roma
Tabella CALCIATORI
C.T.
Ranieri
Ancelotti
Mourinho
Spalletti
CodGioc
3001
3002
3003
3004
Nome
Ruolo
Buffon Gianluigi
Portiere
Totti Francesco
Trezeguet David
Attaccante
Attaccante
Maldini Paolo
Difensore
Chiave primaria
tabella squadre
Tabella SQUADRE
CodSq
Squadra
01
02
03
04
Juventus
Milan
Inter
Roma
Chiave primaria
tabella calciatori
3001
3002
3003
3004
Buffon Gianluigi
Totti Francesco
Trezeguet David
Maldini Paolo
Ranieri
Ancelotti
Mourinho
Spalletti
Chiave esterna
tabella calciatori
Tabella CALCIATORI
CodGioc Nome
C.T.
Ruolo
Portiere
Attaccante
Attaccante
Difensore
Nazione
Italia
Italia
Francia
Italia
CodSq
01
04
01
02
Nella tabella CALCIATORI l’attributo CodSq
corrisponde alla chiave primaria della tabella
SQUADRA esprimendo in questo modo la relazione
che sussiste tra CALCIATORI e SQUADRA. CodSq è
quindi una chiave esterna per la tabella CALCIATORI.
Qualora si osservi che due tabelle possono avere una
relazione, normalmente si stabilisce la relazione
inserendo in una delle due tabelle una copia della
chiave primaria dell’altra, dove diviene chiave esterna.
Relazione molti a molti (“di tipo N:N”)
Una relazione molti a molti si realizza quando un singolo record
della prima tabella è legato a molti record della seconda tabella e
viceversa.
Nell’esempio precedente si avrebbe una relazione “molti a
molti” nell’ipotesi che si vogliano determinare le squadre in cui
un giocatore ha militato in carriera: ad ogni squadra possono
corrispondere più giocatori e un calciatore può aver giocato in
più squadre.
In questo caso, per realizzare una relazione fra le due tabelle
occorre costruire una terza tabella (detta tabella di
collegamento), i cui attributi sono quelli che compongono le
chiavi primarie delle due tabelle.
I singoli elementi di questa terza tabella CALCIATORISQUADRA sono costituiti da tutte le possibili coppie di
elementi in relazione fra di loro.
Tabella CALCIATORI
CodGioc
Nome
Ruolo
Nazione
3004
Maldini Paolo
Difensore
Italia
3005
Cannavaro Fabio
Difensore
Italia
3006
……
Zambrotta Gianluca
Difensore
……
Italia
……
……
CodGioc
3004
3005
3005
3006
3006
3006
3006
CodSq
01
CodSq
02
01
101
02
01
05
102
Squadra
Juventus
C.T.
Ranieri
02
Milan
Ancelotti
03
……
Inter
……
Mourinho
……
25
……
Bari
……
Conte
……
101
102
Real Madrid
Barçelona
Ramos
Guardiola
Tabella
CALCIATORISQUADRA
Tabella
SQUADRA
SQL
(Structured Query Language)
Una Query è una domanda posta al database per estrarre
dei dati. Il linguaggio più comunemente usato per
formulare query è SQL.
SQL (linguaggio strutturato per le interrogazioni) è il più
comune linguaggio standardizzato per la gestione di basi di
dati relazionali.
In SQL esistono diverse categorie di comandi
I)
Comandi DDL (Data Definition Language):
comandi che permettono di creare, modificare ed eliminare oggetti e
modificare la struttura fisica del database
ALTER
modifica strutture/parametri
CREATE
crea database/tabelle
DROP
elimina database/tabelle
……..
II)
Comandi DML (Data Manipulation Language)
comandi che permettono di manipolare i dati nel database
SELECT
seleziona dati da una o più tabelle
INSERT
inserisce nuovi dati da una tabella
UPDATE
aggiorna (modifica) i dati da una tabella
DELETE
elimina i dati da una tabella
………
III)
Comandi DCL (Data Control Language)
comandi che consentono il controllo della sicurezza e permettono di
gestire gli accessi al database
GRANT
fornisce privilegi agli utenti
REVOKE
toglie privilegi agli utenti
………
Aprire o creare un database con Access
• Lanciare Access
• Scegliere il file dall’opzione Apri file esistente oppure Database di
Access vuoto dall’opzione Crea nuovo database
• Se si sta creando un nuovo database, nominare il file e salvarlo
prima di iniziare a lavorarci.
La visualizzazione del database
Finestra Access
Barra degli strumenti Database
Finestra Database
Oggetti esistenti
Tipo di Oggetti
Creare una tabella (1)
Oltre alla possibilità di importare una tabella da un altro database o
da un foglio elettronico, si possono utilizzare 3 opzioni:
1. Creare una tabella mediante l’immissione dei dati con le stesse
modalità previste per un foglio di lavoro. I nomi dei campi
verranno successivamente inseriti.
L’indicatore segnala
il record in scrittura
Aprire una tabella, modificarla, inserire nuovi dati
Mediante i tasti
e
della Finestra Database si apre una tabella
nelle modalità Foglio dati e Struttura. Nel primo caso è possibile
spostarsi tra i record tramite il mouse, la tastiera o i tasti posti nella parte
bassa della finestra (
). Per inserire o modificare un
record di una tabella è sufficiente cliccare all'interno di un campo e
digitare dalla tastiera. Le modifiche vengono automaticamente salvate
appena lasciato il campo. Se in una tabella compare un campo che è una
chiave esterna bisognerebbe inserire il valore corrispondente. Per far ciò
si può creare un collegamento fra tabelle, per poi scegliere da un elenco.
In modalità Struttura non si modificano i dati, quanto la loro natura. È
possibile indicare il nome e la tipologia del campo, oltre ad indicare una
serie di caratteristiche aggiuntive.
Creare una tabella (2)
2. Creare una tabella mediante una creazione guidata seguendo le
indicazioni forniteci da Access.
3. Creare una tabella in visualizzazione struttura definendone I
campi e le proprietà degli stessi. I record saranno inseriti in un
secondo momento.
Tipo di dati: Testo, numerico,
contatore, Sì/No, Data/Ora, ecc.
Qui
inseriremo
i nomi dei
campi
Qui è possibile inserire una
sintetica descrizione del campo
Qui leggeremo le
caratteristiche del
campo
database corso di studi
tabella corsi
IdCorso
IdDocente
….
Nome
….
….
tabella docenti
IdDocente
Cognome
….
Nome
….
….
tabella studenti
Matricola
Cognome
Nome
….
….
….
tabella esami
IdRisultato Matricola
Studente
….
….
IdCorso
….
Data
….
Voto
….
La visualizzazione struttura (1)
1. Nome Campo può contenere fino ad un massimo di 64 caratteri (lettere,
numeri, spazi) esclusi . ! [ ] . Non si può iniziare con uno spazio.
2. Tipo dati definisce la caratteristica dei dati nel campo:
a. Testo: una qualunque combinazione di lettere, numeri, spazi,
punteggiatura. Fino a 50 caratteri (espandibili fino a 255).
b. Memo: come Testo ma fino a 65635 caratteri.
c. Numerico: un numero
d. Data/Ora: data e/o ora.
e. Valuta: utilizzabile per le somme di denaro.
f. Contatore: un numero univoco gestito da Access.
Qui è possibile inserire una
g. Sì/No: solo una delle due condizioni.
descrizione del campo
h. Oggetto OLE: un foglio sintetica
Excel, un
documento Word, …
3. Proprietà dei tipi di dato:
a. Dimensione campo: la dimensione massima di un campo di tipo
Testo, Numerico o Contatore.
b. Formato: è la modalità di visualizzazione.
c. Etichetta: è il nome del campo che sarà visualizzato.
La visualizzazione struttura (2)
4. Proprietà dei campi: definiscono il modo in cui i dati vengono
immessi, memorizzati, visualizzati:
a. Indicizzato: permette la creazione di un indice .
b. Posizioni decimali: relative alla visualizzazione dei numeri.
c. Nuovi valori: per Contatore. Incremento o Casuale.
d. Maschera di input: formato dei valori da immettere.
e. Valore predefinito: valore immesso automaticamente salvo
modifiche.
Qui è possibile inserire una
f. Valido se: regola di convalida.
sintetica descrizione del campo
g. Messaggio errore: appare se il dato viola la regola di convalida.
h. Richiesto: indica se è obbligatoria l’immissione del dato.
i. Consenti lunghezza zero: specifica se è richiesto almeno un
carattere.
j. Compressione Unicode: consente di risparmiare memoria.
La visualizzazione struttura (3)
5. Campi di ricerca (lookup): agevola l’inserimento dei dati creando
un elenco di valori da un’altra tabella o da un elenco
personalizzato. Occorre legare il campo alla chiave primaria di
un’altra tabella passando da casella di testo a casella combinata e
specificando la tabella. In alternativa si può creare un campo di
ricerca partendo dal menu Inserisci/Ricerca guidata…
6. Regole di validazione: impostano condizioni per l’ammissibilità
Qui è possibile inserire una
dei dati da inserire.
sintetica descrizione del campo
7. maschere di input: mostrano un modello per l’immissione dei dati
e non accettano dati di tipo diverso.
Definire la chiave primaria e gli indici
Mediante il tasto
della barra degli strumenti Database si indica,
partendo dalla visualizzazione struttura, il campo che avrà il ruolo di
chiave primaria. Automaticamente il campo non accetterà duplicati. La
chiave primaria è obbligatoria e può contenere più campi.
Gli indici servono ad ordinare i dati di una tabella per facilitarne la
ricerca. L'indice può essere assegnato anche a uno o più campi. Dalla
modalità struttura, selezionare un campo e nella scheda Generale cliccare
su Indicizzato e scegliere Sì.
Si può creare anche un indice multicampo. Per far ciò occorre aprire la
tabella degli indici ( ) della barra degli strumenti oppure sul menu
Visualizza/Indici; appare la tabella degli indici impostati.
Definire le relazioni tra tabelle
Access facilita estremamente l’individuazione di relazioni tra tabelle.
Con il tasto
(oppure da Strumenti/Relazioni)si apre la finestra delle
relazioni, poi fare click con il tasto destro del mouse e scegliere dal menu
che si apre Mostra tabella. Aggiungere tutte le tabelle desiderate, quindi
trascinare il campo chiave primaria sul campo relativo della tabella che si
vuol collegare.
Per evidenziare il tipo di
relazione occorre selezionare
applica integrità referenziale (i
dati inseriti vengono controllati).
Create le relazioni le tabelle sono
collegate, come si può vedere
visualizzandole in modalità foglio
dati.
Relazioni del database corso di studi
tabella corsi
IdCorso
IdDocente
….
Nome
….
….
tabella docenti
IdDocente
Cognome
….
Nome
….
….
tabella studenti
Matricola
Cognome
Nome
….
….
….
tabella esami
IdRisultato Matricola
Studente
….
….
IdCorso
….
Data
….
Voto
….