Se consideriamo un lungo elenco di persone, come l'elenco del telefono ad esempio, risulta plausibile trovare omonimie tra le persone, questo significa che alla coppia di informazioni nome, cognome
corrisponde più di un record.
Risulta indispensabile allora realizzare un meccanismo che ci permetta di identificare in modo univoco i record, anche se hanno tutti i campi uguali tra loro.
La "chiave primaria" su Access
La soluzione è quella di inserire nella tabella un nuovo campo che funzioni da chiave primaria; è il più importante tra tutti gli attributi e garantisce l'individuazione di un determinato record all'interno di una tabella.
Tipicamente si tratta di un numero intero che viene incrementato automaticamente da Access ogni volta che aggiungiamo un record.
Non è sempre indispensabile creare un campo a parte; a volte esiste già un campo che è univoco per natura (ad esempio il codice fiscale) oppure si riescono a raggruppare un gruppo di più campi che presi tutti assieme costituiscono un elemento univoco. Ma è molto più frequente, specie nelle piccole applicazioni, che la chiave primaria sia un campo numerico, spesso indicato come campo ID (identificatore).
L'unicità di questo campo viene inoltre garantita dal fatto che, quando cancelliamo un record, il suo ID non è più riutilizzato. Ad esempio, se cancelliamo l'autore con identificativo 23, quella chiave viene persa per sempre.
La "chiave esterna" di Access
Riportiamo il concetto di chiave primaria nel contesto della biblioteca: possiamo immaginare che ogni libro nella tabella dei libri sia riconoscibile univocamente dagli altri grazie al suo "ID". Sarà molto comodo poter indicare solo questo numeretto per raggiungere sicuramente un certo testo.
Abbiamo anche detto che le tabelle possono essere messe in relazione tra loro. Prendiamo ad esempio la relazione tra libro e autore:
Libro -> scritto da -> Autore
Supponiamo che un libro sia scritto da un autore e che un autore abbia scritto diversi libri. Secondo il discorse della chiave primaria la tabella Autore
avrà un codice ID che identifica univocamente ogni autore. Quindi, per associare un libro ad un autore possiamo prevedere un campo, nella tabella Libro
che contenga il codice dell'autore. Questo campo viene detto chiave esterna.
Possiamo pensare di effettuare lo stesso ragionamento anche per la relazione edito da
con la casa editrice: il campo casa editrice
nella tabella Libro
è una chiave esterna e corrisponde ad un campo ID (chiave primaria) della tabella case editrici
.
Vantaggi pratici e limiti di Access
Discorsi concettuali a parte il lavoro con le relazioni semplifica anche alcuni aspetti più pratici. Ad esempio possiamo essere certi che se inseriamo 100 libri della stessa casa editrice, scrivendo il nome 100 volte commetteremo qualche errore e comunque potremmo non scriverlo in modo identico e coerente ogni volta.
Se invece selezioniamo lo stesso nome da un elenco possiamo sbagliare editore me non avere lo stesso nome scritto male o in modo diverso. Questo garantisce miglior coerenza e semplicità di reperimento delle informazioni. Se, ad esempio cercassimo l'editore "Mondadori" il sistema non capirebbe che "Mondadori", "mondadori", "MONDADORI" e "Mondadorri" sono la stessa cosa.
Prendiamo anche ad esempio la modifica di un dato come l'indirizzo dell'editore. Ci convinciamo facilmente che è molto più semplice modificarlo una volta sola (mantenendo inalterato l'ID) che riscriverlo su centinaia di record dei libri.