sei sul sito di Giovanni Fraterno

ATTENZIONE che, per importanza sociale, subito dopo il legame affettivo che si instaura all'interno di una famiglia, viene quello che si instaura fra il professore e i suoi alunni, e che turbare entrambi i rapporti può essere carico di conseguenze (sabato 31° gennaio 2004, il professore).
3) Definire le chiavi
( 1 - 2 - 3 - 4 - 5 - 6 )

In questo modulo imparerete:

    3.1) cos'è e a cosa serve una chiave primaria

    3.2) come definire una chiave primaria in una tabella

    3.3) come istituire una relazione tra due tabelle

    3.4) cosa sono i database relazionali

   

3.1) Cos'è e a cosa serve una chiave primaria

E' tempo di fare ora un importante passo in avanti nella nostra comprensione delle basi di dati.

 

Parleremo così di chiavi primarie e del concetto di database relazionale.

 

Riprendiamo a questo scopo la tabella chiamata "Videoteca", ma questa volta dal file “prova1.mdb”.

 

Dopo aver aperto il suddetto file già esistente, fare clic sul nome della tabella "Videoteca" per visualizzarne il contenuto.

 

Come potrà osservarsi, la tabella, che prima era vuota, all’interno di questo nuovo file “preva2.mdb”, contiene adesso sei record.

 

Osserviamo innanzitutto la struttura di questa tabella.

 

Come è facile comprendere, campi quali: genere, regista, attori, durata del film, anno di produzione possono contenere informazioni duplicate.

 

Nella nostra tabella illustrativa vediamo ad esempio che il genere "drammatico" ed il genere "fantascienza" si ripetono due volte.

 

E così anche “anno” e “data di registrazione” si ripetono uguali in più record.

 

E persino i campi  "regista" e "protagonisti" potrebbero contenere più volte i medesimi nomi, se solo avessimo inserito più titoli di film nella nostra tabella.

 

L'unico campo che non si presta facilmente a duplicati è il campo titolo.

 

E' tuttavia possibile che vi siano due film con lo stesso titolo, ad esempio E.T. nella versione originale ed in quella recentemente restaurata.

 

Insomma, nessuno dei campi della nostra tabella può essere una vera e propria chiave primaria.

 

Ma che cosa intendiamo precisamente con questa espressione ?

 

Una chiave primaria è un campo di una tabella dotato delle successive proprietà:

 

- tutte le sue celle sono piene, nessuna cioè ha valore nullo, insomma il valore di tutte le celle è sempre espresso

 

- non può avere lo stesso valore in due celle differenti, se ad esempio la chiave primaria è un numero, deve trattarsi di un numero diverso per ogni cella.

 

Ma a cosa serve definire una chiave primaria ?

   

Essenzialmente a due scopi, di cui il primo è funzionale al raggiungimento del secondo:

- rendere assolutamente unico, e perciò riconoscibile, ciascun record di una tabella

- consentire di mettere in relazione tra loro tabelle differenti.

 

Come ciò possa avvenire, lo vedremo in seguito.

 

Per ora basti sapere che in una tabella i campi definiti come chiavi primarie possono essere anche più di uno.

 

3.2) Come definire una chiave primaria in una tabella

Ora che sappiamo cos'è e a cosa serve una chiave primaria, poiché vogliamo che i record della nostra tabella possano essere messi in relazione con i record di altre tabelle, procediamo con il definire una chiave primaria.

   

La tabella "Videoteca" aperta in visualizzazione "foglio dati", è una modalità nella quale si possono inserire, cambiare o cancellare dati, ma nella quale non è possibile effettuare modifiche strutturali ai campi o al formato dei dati.

 

Per definire una chiave primaria, occorre attivare la modalità visualizzazione struttura.

 

Possiamo farlo cliccando sull'icona con la squadra e la matita, la prima a sinistra sulla barra degli strumenti.

 

Come è stato appena detto, nessuno dei campi della tabella si presta a divenire una chiave primaria, perché nessuno di essi contiene informazioni veramente univoche.

 

Dobbiamo allora inserire un nuovo campo, dotato delle caratteristiche giuste.

 

Per fare ciò, posizioniamo il puntatore sulla freccina alla sinistra del campo "titolo", il primo della lista, e clicchiamo il tasto destro del mouse, in modo da far comparire il menu contestuale.

 

Scegliamo poi la voce "inserisci righe", che crea una riga vuota, cioè lo spazio per un nuovo campo, al di sopra del campo "titolo", e attribuiamo il nome "Film ID", cioè identificativo dei film, al nuovo campo appena generato.

 

Nell'elenco dei tipi di dati, scegliamo la voce "contatore".

   

Notate che, tra le opzioni di formato, in basso nella finestra, abbiamo accanto a INDICIZZATO, il valore SI', e tra parentesi l'indicazione che i duplicati sono ammessi.

   

A questo punto clicchiamo con il tasto destro sulla scritta "Film ID" e, dal menu contestuale, scegliamo la prima voce, cioè "chiave primaria".

 

Nella colonna di sinistra accanto al nome del campo, compare l'iconcina di una chiave, a ricordare che questo campo è adesso una chiave primaria.

   

E' importante osservare che, non appena abbiamo trasformato il contatore in una chiave primaria, il valore dell'opzione di formato esaminata prima, cioè INDICIZZATO, è cambiato.

 

Indica adesso che i duplicati NON sono più ammessi.

 

Ciò perché, come abbiamo spiegato, tutti i valori di un campo che è chiave primaria devono essere unici ed irripetibili.

   

Per concludere la procedura di definizione della chiave primaria, clicchiamo sulla solita X in alto a destra della finestra visualizzazione struttura e rispondiamo SI' alla domanda se vogliamo salvare i cambiamenti di struttura apportati.

 

Aprendo ora la tabella "Videoteca" in modalità foglio dati, possiamo vedere che è ora presente sulla sinistra il nuovo campo FilmID, e che questo campo identifica univocamente, mediante numeri progressivi da 1 a 6, tutti i record della tabella.

 

3.3) Come istituire una relazione tra due tabelle

Abbiamo detto che una delle ragioni per definire delle chiavi primarie è la necessità di mettere più tabelle in comunicazione reciproca.

 

Abbiamo preparato un piccolo esempio che mostra come stabilire una relazione fra due tabelle.

 

Apriamo il file "prova1.mdb".

 

Qui abbiamo due tabelle: "Videoteca", che già conoscete, ed una nuova tabella denominata "Film Spielberg".

 

Aprendola con un doppio clic, notiamo che contiene un elenco con alcuni dei principali film realizzati dal regista Steven Spielberg.

 

La prima colonna, "FilmID", è la chiave primaria.

 

Contiene un elenco di numeri identificativi, analogo a quello creato in precedenza, ed ora presente nell'altra tabella.

 

Chiudiamo momentaneamente questa tabella e attiviamo il comando RELAZIONI dal menu STRUMENTI.

 

Compare una finestra nella quale sono presenti due altre piccole finestre che rappresentano le due tabelle esistenti attualmente nel database, ciascuna con i relativi campi.

   

Vogliamo istituire una relazione tra i rispettivi campi FilmID, in modo che gli stessi numeri identificativi dei film valgano per entrambe le tabelle.

 

Per ottenere questo risultato, premiamo il tasto sinistro del mouse in corrispondenza della scritta "FilmID" nella tabella Videoteca e, sempre tenendo premuto il pulsante, trasciniamo il puntatore fin sopra l'analoga scritta FilmID nell'altra tabella.

 

Si apre a questo punto una finestra di dialogo che consente di definire meglio le caratteristiche della relazione che vogliamo istituire.

 

Lasciamo invariati i parametri predefiniti e premiamo il pulsante CREA.

 

Il risultato positivo dell'operazione è testimoniato dalla doppia freccia nera che collega le due tabelle.

   

Se ora apriamo la tabella "Film Spielberg" possiamo vedere che alla sinistra del primo campo è comparso in ogni riga un segno +.

 

Cliccando su questo segno, si apre il record corrispondente dell'altra tabella, cioè il record definito dal medesimo valore di FilmID.

 

Cliccando ad esempio sul segno + nel record contenente il film E.T. visualizziamo tutte le informazioni su questo film presenti nella tabella Videoteca.

 

3.4) Cosa sono i database relazionali

Come suggerisce l'aggettivo, la loro caratteristica principale è di stabilire relazioni complesse tra tabelle.

 

Le basi di dati più elementari, come può esserlo una semplice agendina di indirizzi e numeri di telefono, esauriscono il loro compito con il fornire all'utilizzatore i mezzi per archiviare i dati in tabelle singole e per estrarli in seguito dalle stesse.

 

Programmi viceversa come Access permettono di creare complesse ramificazioni di rapporti tra tabelle, allargando enormemente le possibilità di impiego delle informazioni.

 

Se, ad esempio, le tabelle contenenti ognuna gli elenchi telefonici di città diverse sono, per un database NON relazionale, entità indipendenti e non confrontabili, per un database relazionale, queste tabelle sono invece in grado di interagire in vari modi.

 

Predisponendo infatti correttamente le relazioni tra le tabelle, si può ad esempio garantire che una nuova attribuzione di numero di telefono non sia il duplicato di qualche numero già attivo.

 

Perché questo complicato meccanismo funzioni correttamente, le basi di dati relazionali devono rispettare le cosiddette regole di INTEGRITA' REFERENZIALE.

 

L'applicazione di tali regole garantisce che i dati conservati in tabelle collegate siano sempre coerenti tra loro.

 

Se ad esempio si cancella l'abbonato Rossi dalla tabella A, perché ha cambiato città o fornitore, un programma come Access è in grado di cancellare automaticamente tutti i suoi numeri di telefono.

 

Il non applicare queste regole creerebbe evidentemente un problema di coerenza, perché continuerebbero a risultare impegnati dei numeri di telefono a cui non corrisponde più un titolare.

   

Attenzione che un errore di cancellazione può però causare, in virtù dei collegamenti a cascata tra tabelle, disastrose perdite di dati.

 

Per evitare ciò, oltre ad un'accurata progettazione delle relazioni tra le tabelle, è indispensabile effettuare periodicamente copie di sicurezza di tutti i propri archivi elettronici.



utenti in questo momento connessi alla rete di siti web di Giovanni Fraterno: