MICROSOFT ACCESS – IL MODELLO E/R
LE ENTITA’
Le entità di un database sono le singole tabelle che comporranno la struttura del nostro database.
Le tabelle sono formate da attributi (o campi) che ne definiscono la struttura.
I record (registrazioni) sono le singole righe di dati che riempiono la tabella.
L’esempio in figura sotto ne definisce le caratteristiche:
Fig.2 – Tabella di un database
Come esempio, per capire il modello E-R, pensiamo di voler progettare un database per una biblioteca.
Possiamo individuare come prima entità il libro, che ne è l’oggetto principale.
All’interno della nostra entità libro cominciamo la progettazione dei nostri attributi: riflettiamo sul fatto che
un libro può essere scritto da uno o più autori, pubblicato da una casa editrice e appartiene ad un genere;
questo tipo di dati, essendo di tipo ridondanti (che si ripetono spesso all’interno della tabella), possono
essere pensati come altre entità, quindi definiamo anche le entità autore, casa editrice e genere.
Ma la biblioteca non è solo un magazzino di libri ma anche un servizio ai cittadini iscritti che possono
prelevarne quando e quanti ne servono e quindi dobbiamo aggiungere le entità utente e prestiti.
Frequentando una biblioteca o chiacchierando con qualcuno che ci lavora sicuramente ci accorgiamo che di
entità ce ne sono molte di più, ma per acquisire familiarità con le basi di dati, possiamo accontentarci di un
modello di biblioteca finora sviluppato.
Vediamo ora in cosa consiste un’entità; partendo dall’esempio del libro, per descriverlo abbiamo bisogno di
un titolo, di un autore, di un genere, di una casa editrice, di una data di pubblicazione, etc. Tutte queste
informazioni che costituiscono l’entità libro, si chiamano attributi o campi.
1
LE CHIAVI PRIMARIE E LE CHIAVI ESTERNE
Le Chiavi Primarie le abbiamo già intraviste durante la stesura delle tabelle; si tratta di campi di natura
univoca (non possono avere valori uguali nei record) e rappresentano il valore che permette di distinguere i
record simili tra loro.
Le Chiavi Esterne invece sono campi il cui valore è legato a quello di un campo di un’altra tabella. I due tipi
di campo devono essere compatibili (ad es. se un campo è di tipo Contatore, quello a cui è legato deve
essere di tipo Numerico, unico tipo ad essere compatibile).
Inoltre, per quanto riguarda il campo di tipo Testo, anche la lunghezza deve essere identica.
LE RELAZIONI
Le entità non sono oggetti a se stanti ma in questo tipo di database sono in relazione tra loro. Infatti il vero
acronimo di questo tipo di software DBMS è in realtà RDBMS (Relationship Data Base Management System
– Sistema di Gestione di Database Relazionale). Ad esempio i libri sono legati ai generi; ogni libro
appartiene ad un genere ed esistono molti libri diversi dello stesso genere. Un libro è scritto da uno o più
autori ed ogni autore può scrivere più libri. Molti libri appartengono ad una casa editrice, ecc.
I libri sono presi in prestito dagli utenti; un utente può prendere in prestito uno o più libri e un libro può
essere preso in prestito solo da un utente per volta.
Modellare un database richiede tempo e bisogna scegliere bene quali elementi sono entità, quali attributi
(campi) e quali relazioni.
Nella figura sotto, il nostro modello E-R (Entità – Relazione) estratto dal database Access di Biblioteca:
Le tabelle Autori_1 e Autori_2 sono state create automaticamente dallo strumento Relazioni per legare il
campo ID di Autori anche ai campi Autori2 e Autore3. Le linee che congiungono le relazioni hanno un
numero o il simbolo ∞ (infinito) accanto alla relazione ne indica la tipologia (1 = uno; ∞ = Molti). Il numero
1 legato al simbolo ∞ indica che al valore di un campo di un’entità sono associati molti stessi valori in
2
un’altra entità. Guardando la nostra figura sopra, possiamo fare l’esempio con la prima relazione a sinistra
che lega la tabella Generi alla tabella Autori: la relazione che lega in campo ID di Generi con il campo
Genere di Autori è che il valore contenuto in quest’ultimo deve corrispondere ad un valore contenuto nel
campo ID. Da questo se ne deduce che se il campo ID è Contatore (quindi numerico), il campo Genere deve
essere Numerico.
CREARE IL DATABASE “BIBLIOTECA”
L’esercitazione ci chiede di creare un database di una biblioteca, quindi dopo aver pensato a come
strutturare logicamente il nostro lavoro, realizziamo le tabelle ed i campi che le formeranno: le tabelle che
ci vengono in mente sono:
 LIBRI, formata dai campi ID, Titolo, Autore1, Autore2, Autore3, Genere, DataPubbl;
 AUTORI, formata dai campi ID, Nome, Cognome, Nazionalità, Genere, DataNascita, e DataMorte;
 GENERE, formata dai campi ID e Genere;
 CASA EDITRICE, formata dai campi ID e Nome;
 PRESTITI, formata dai campi ID, Utente, Libro, DataInizio, DataFine, Pagato.
Ognuno delle tabelle avrà la seguente Struttura:
La personalizzazione del Tipo Dati (lunghezza, Richiesto, Indicizzato, ecc.) di ogni campo delle tabelle si
lascia all’utente la propria personale definizione, legata alle esigenze del proprio progetto.
3
A questo punto, riempiamo tutte le tabelle, tranne quella dei Prestiti, che vedremo in seguito, con i nostri
dati, cominciando da Generi e CaseEditrici, in quanto hanno campi che poi si dovranno legare alle tabelle
successive, come da esempio (ognuno di voi, poi, potrà riempire la tabella Autori e Libri come gli piace):
Per cominciare con le prime operazioni su un database relazionale formato d più tabelle, iniziamo da una
semplice query che ci permetta di visualizzare tutte le informazioni sui libri memorizzati nel nostro
database.
Dato che l’organizzazione dei dati è stata effettuata separando le informazioni e poi legandole fra loro
tramite Chiave Esterna, la nostra interrogazione si effettuerà nel modo seguente: dalla procedura guidata
per la creazione di una Query e selezioniamo, in ordine e scegliendo le varie tabelle dal modulo a discesa
Tabelle/query, i campi Nome e Cognome della tabella Autori, il campo Titolo dalla tabella Libri, il campo
Genere dalla tabella Generi, il campo CasaEditrice dalla tabella CaseEditrici ed infine il campo DataPubbl
dalla tabella Libri, in modo che la Query crei una nuova tabella ordinata con i nomi e non i codici delle
chiavi esterne:
4
Cliccando su Avanti, alla schermata successiva, lasciate la selezione su Dettaglio (mostra tutti i campi dei
record) e continuate con il tasto Avanti. Assegnate un nome significativo alla Query (nel nostro caso
Libri_query potrebbe essere adatto), lasciando inalterato la selezione di Aprire la query per visualizzare le
informazioni, e cliccate su Fine. La schermata che apparirà è la seguente:
Nell’immagine ho evidenziato con un rettangolo rosso il fatto che, essendo coinvolte più tabelle in questa
Query, la stessa è riportata nell’elenco delle tabelle coinvolte. Non si tratta di duplicati ma solo di
collegamenti alla stessa unica Query.
In questo modo si posso anche fare Query utilizzando i Criteri, cioè selezionando solo determinati record
che corrispondono al valore immesso nei Criteri di un determinato campo. Ad esempio, se volessimo
visualizzare Nome, Cognome, Titolo e Genere solo della Casa Editrice ‘Mondadori’ dobbiamo, sempre con
la creazione guidata Query selezionare i campi come in precedenza ed aggiungere il campo, da non
mostrare nella tabella generata dalla Query, CasaEditrice il cui valore sia ‘2’ se quest’ultimo lo scegliamo
5
dalla tabella Libri, oppure il valore ‘Mondadori’ se lo preferiamo dalla tabella CaseEditrici. In basso le due
possibilità, evidenziate, di creazione della Query:
Il risultato di entrambe le scelte, che chiameremo CasaEditrice_Query, visualizzate sopra è il seguente:
6