Modello E-R
Il modello E-R (Entità Relazioni) mi permette di definire lo schema concettuale della base dati a partire dai requisiti. E' uno strumento della progettazione concettuale.
Il modello ER descrive la realtà di interesse tramite una rappresentazione grafica strutturata, corretta e completa.
- Corretta. Deve rappresentare la realtà di interesse descritta nei requisiti.
- Completa. Rappresenta tutti i requisiti. Non si deve lasciare fuori nulla, né aggiungere nulla.
Nota. I requisiti sono forniti dal cliente in linguaggio naturale. Descrivono e rappresentano la realtà in modo non strutturato. Se la descrizione con i requisiti è fatta bene, il modello E-R è una semplice traduzione strutturata dei requisiti.
Si tratta di un modello concettuale. Pertanto, il modello E-R è indipendente dall'organizzazione logica e fisica dei dati.
Ogni costrutto indica un'entità, una relazione, un attributo, ecc.
A cosa serve il modello E-R? Si utilizza nella progettazione concettuale del database. Dopo aver raccolto i requisiti della base dati dal cliente, cerco di rappresentarli in modo strutturato per capire quali informazioni dovrà contenere la base dati e come organizzare i dati. l modello E-R può essere usato anche per descrivere un sistema informativo o applicazione già esistente con un linguaggio sintetico e astratto.
I costrutti del modello E-R
I principali costrutti del modello E-R sono i seguenti
- Entità
Sono le classi di oggetti che hanno un'esistenza indipendente e autonoma. Ogni entità ha un nome che la identifica in modo univoco e può assumere un valore diverso nel corso del tempo, detta occorrenza di entità. Il valore (occorrenza) è l'oggetto appartenente alla classe. Ad esempio, l'entità Città può assumere il valore "Roma" o "Milano". Pertanto, "Roma" e "Milano" sono due oggetti della classe/entità Città.
Le occorrenze di entità sono oggetti che esistono indipendentemente dalle proprietà dell'entità a cui appartengono. Uno stesso oggetto può appartenere a entità diverse. Ad esempio, l'oggetto "Roma" appartiene all'entità "Città" e all'entità "SquadreDiCalcio". Nel modello E-R le entità sono rappresentate con il simbolo di un rettangolo con il nome scritto all'interno. - Relazioni (associazioni)
Le relazioni (o associazioni) sono collegamenti logici tra una, due o più entità. Nel modello E-R le relazioni hanno un nome univoco, in genere un sostantivo e non un verbo, che le identifica e sono rappresentate graficamente con un rombo connesso agli altri elemento del modello tramite delle linee. Il nome della relazione va scritto dentro il rombo. Ad esempio, tra l'entità Persone e Città c'è una relazione di "residenza" e una relazione di "nascita" perché la residenza e il luogo di nascita di una persona sono il nome di una città.
Un'occorrenza di relazione è una ennupla composta dalle occorrenze di ogni singola entità della relazione. Ad esempio, un'occorrenza della relazione "Residenza" è < Paolo Rossi, Milano >.
Nota. L'insieme delle occorrenze di relazione di un modello E-R è un sottoinsieme del prodotto cartesiano delle entità coinvolte. Pertanto, l'insieme delle occorrenze di relazione è una relazione matematica. Quindi, non possono esserci ennuple ripetute al suo interno.
E' possibile che una relazione colleghi la stessa entità. Si parla in questo caso di relazione ricorsiva che può essere simmetrica o meno. Ad esempio, nell'entità Persone la relazione ricorsiva e simmetrica di "parentela" che associa le coppie di persone <P1,P2> con una relazione di parentela.
Ad esempio, se "Paolo Rossi" e "Mario Bianchi" sono parenti, la relazione ricorsiva di parentela identifica la coppia di occorrenze <Paolo Rossi, Mario Bianchi> nella stessa entità Persone.
Se la relazione ricorsiva non è simmetrica devo aggiungere un identificatore sopra ogni linea in uscita dalla relazione per specificare il tipo di relazione ( detto ruolo ) . Ad esempio, la relazione di parentela <genitore, figlio> non è simmetrica. Quindi, in questo caso aggiungo un identificatore.
- Attributi
Gli attributi descrivono le proprietà elementari di un'entità o di una relazione. Un attributo associa a un'occorrenza, di entità o di relazione, un valore appartenente a un insieme dominio che contiene tutti i valori possibili del dominio. Nel modello E-R gli attributi si indicano come linee uscenti dall'entità/relazione con un cerchio al capo opposto della linea e il nome dell'attributo. I domini non sono rappresentati nello schema E-R. In genere sono descritti nella documentazione del progetto.
Ad esempio, l'entità Persone ha come attributi il Nome, Cognome nel dominio delle stringhe. La relazione Nascita ha, invece, come attributi la Data di nascita nel dominio delle date (calendario). L'entità Città ha come attributo il numero degli Abitanti nel dominio dei numeri interi. In alcuni casi, per ridurre la complessità del modello E-R gli attributi atomici simili di una stessa entità o relazione sono raggruppati in un attributo composto. Ad esempio, l'attributo composto Indirizzo contiene gli indirizzi atomici Via, Numero civico, CAP.
- Cardinalità di relazione
Le cardinalità descrivono il numero minimo e massimo di occorrenze di relazione che una singola occorrenza dell'entità può avere. I numeri vanno posti tra parentesi, separati da virgola, sopra la linea che congiunge l'entità alla relazione (min,max). Ad esempio, una persona ha uno e un solo luogo di nascita. Una città, invece, può avere zero o molte persone nate sul posto.
Le cardinalità di relazione sono interi non negativi, zero, uno o molti (N). Il massimo deve essere maggiore o uguale al minimo. La cardinalità è facoltativa se il minimo è zero, è obbligatoria se è maggiore di zero. Le cardinalità (1,1) sono dette uno a uno, (1,N) sono dette uno a molti, (N,N) sono dette molti a molti (multivalore). Generalmente la cardinalità di relazione è binaria, perché coinvolge due entità in una relazione. Può comunque anche essere n-aria se più entità sono connesse alla stessa relazione. - Cardinalità degli attributi
La cardinalità degli attributi indica il numero minimo e massimo dei valori che possono essere associati a un singolo attributo in ogni occorrenza di relazione o di entità. La cardinalità può essere facoltativa, (0,1), obbligatoria (1,1) o multivalore (0,N), (1,N), ecc. Se non è indicata nessuna cardinalità su un attributo, si intende generalmente (1,1) in cui però il valore può anche essere un valore nullo. Viceversa, se in un attributo è espressamente indicato (1,1) si intende un solo valore non nullo. Ad esempio, l'attributo cognome di una persona è uno e non può essere nullo. Viceversa, una persona potrebbe non avere un recapito telefonico o averne più di uno. Quindi, l'attributo telefono è (0,N).
Spesso è preferibile trasformare un attributo multivalore (1,N) o (0,N) in un'entità. Ad esempio, il telefono può essere trasformato da attributo multivalore (0,N) in un'entità con due attributi (0,1) come telefono mobile e telefono fisso.
- Identificatori delle entità
In ogni entità sono indicati quale attributo o gruppo di attributi (o altre entità) permette di identificare in modo univoco le occorrenze dell'entità. Per indicare l'attributo nel modello E-R si colora di nero il cerchio dell'attributo. Se gli attributi sono più di uno, si barrano le connessioni con una linea.
Ad esempio, il codice fiscale di una persona identifica tutte le occorrenze dell'entità Persone, perché due persone non possono avere lo stesso codice fiscale. Se non ci fosse il codice fiscale, potrei scegliere il gruppo di attributi Nome, Cognome, Data di nascita.
Si parla di identificatori esterni se un solo attributo (o gruppo di attributi) di un'entità non è in grado di identificare univocamente ogni occorrenza, senza considerare anche altri attributi di un'entità esterna collegata tramite una relazione. In tale caso, nella notazione del modello ER la linea barra sia gli attributi dell'entità che la connessione con la relazione. Ad esempio, se la persona fosse identificabile dal nome, cognome e dal telefono mobile, dove il telefono è un attributo di un'entità esterna. Gli attributi nome e cognome sono gli identificatori interni mentre il telefono è l'identificatore esterno.
Nota. Per avere un identificatore esterno l'entità Persone deve essere collegata con una cardinalità (1,1) con la relazione Contatto. E' un aspetto indispensabile.
- Generalizzazioni
Le generalizzazioni sono legami logici tra le entità. Un'entità genitore (generalizzazione) può avere uno o più legami con entità figlie (specializzazione). Il concetto è simile alla programmazione a oggetti. L'entità genitore è una classe a cui appartengono le entità figlie. Le entità figlie ereditano tutti gli attributi dell'entità genitore (ereditarietà) a cui aggiungono altri attributi specifici dell'oggetto. Una generalizzazione si indica con una freccia dalle entità figlie all'entità genitore. Non ha un nome che la identifica. Le generalizzazioni sono numerate.
Ad esempio, le entità Uomo e Donna sono entità figlie dell'entità genitore Persone. Gli attributi ereditati (nome, cognome) non sono indicati nelle entità figlie. Vanno indicati espressamente solo gli attributi specifici delle entità figlie (Gravidanze per l'entità Donna e l'attributo Leva Militare per l'entità Uomo). La generalizzazione può essere totale o parziale. Se è totale, se ogni occorrenza dell'entità genitore è un'occorrenza di almeno un'entità figlia. Una generalizzazione completa si indica con una freccia piena. Ad esempio, la generalizzazione dell'entità Persone in Uomo e Donna è una generalizzazione totale.
Nota. Ogni occorrenza delle entità figlie è anche un'occorrenza dell'entità genitore. Ad esempio, ogni occorrenza dell'entità Uomo è anche un'occorrenza dell'entità Persone.
Nell'ultimo esempio c'è una generalizzazione esclusiva perché l'occorrenza si verifica soltanto in un'entità figlia. In altri casi, se l'occorrenza può verificarsi in più entità figlie, si parla di generalizzazione sovrapposta. Ad esempio, se le entità fossero Studente e Lavoratore, una stessa occorrenza potrebbe appartenere a entrambe.
Nota. Le generalizzazioni sovrapposte possono essere trasformate in esclusive aggiungendo una nuova entità per le intersezioni. La presenza delle generalizzazioni esclusive rende più chiara la rappresentazione concettuale della base dati. Ad esempio, aggiungere l'entità Studente-Lavoratore.
Dopo questa modifica il risultato è comunque una generalizzazione parziale, perché non include altre situazioni ( es. Disoccupato ). Tuttavia, non è più una generalizzazione sovrapposta ma esclusiva, perché le occorrenze possono appartenere al più a una entità figlia.Nota. E' anche possibile creare gerarchie di generalizzazioni purché non creino dei cicli.
Le regole di rappresentazione dei dati nel modello E-R
Nel modello E-R bisogna tenere in conto alcune regole o buone pratiche di progettazione.
- Se un concetto reale o astratto descrive un oggetto che esiste autonomamente dagli altri oppure ha proprietà importante, devo rappresentarlo come un'entità.
- Se un concetto non ha proprietà rilevanti e ha una struttura minima/semplice, devo rappresentarlo come attributo di un'entità.
Nota. Uno stesso concetto può essere un'entità in un contesto e un attributo in un altro. Ad esempio, il concetto "città" è un attributo è parte di un indirizzo, è invece un'entità in una base dati geografica. Nel primo caso la città è soltanto una stringa, nel secondo è una struttura composta da molte proprietà.
- Se un concetto associa due o più entità, devo rappresentarlo come una relazione.
- Se un concetto è un caso particolare di un altro, devo rappresentarlo con una generalizzazione.
E così via.