Avanti Indietro Indice

Diagramma EntitÓ-Relazione

I costrutti del diagramma ER sono i seguenti:

EntitÓ
Rappresentano concetti complessi e di rilievo che descrivono classi di oggetti con esistenza autonoma. Una istanza di una entitÓ Ŕ un oggetto della classe rappresentata. Ad esempio, possibili entitÓ della rete teatrale sono: teatro, spazio teatrale, dipendente, spettacolo, attore, notizia. Una entitÓ ha un nome univoco all'interno dello schema concettuale e viene rappresentata nel diagramma ER con un rettangolo con il nome dell'entitÓ all'interno:
plot/er1.png
Relazioni
Rappresentano legami logici, significativi per la realtÓ modellata, tra due o pi¨ entitÓ. Una istanza di una relazione Ŕ una coppia (ennupla in generale) di istanze di entitÓ partecipanti alla relazione. Formalmente, una relazione Ŕ un sottoinsieme del prodotto cartesiano delle classi che la compongono. Essendo un insieme, tutti le istanze di una relazione sono distinte.

Ad esempio, esiste una relazione, che possiamo chiamare luogo, tra le entitÓ teatro e spazio teatrale. Questa relazione associa ad un teatro gli spazi teatrali che il teatro usa per gli spettacoli e viceversa essa associa ad uno spazio teatrale i teatri che usano quello spazio. Ogni relazione ha un nome univoco tra le relazioni e le entitÓ dello schema. E' preferibile usare un sostantivo come nome per non indurre ad individuare un verso nella relazione. Una relazione viene rappresentata mediante un rombo con il suo nome all'interno e da linee che connettono la relazione con le entitÓ componenti:
plot/er2.png
E' possibile avere relazioni ricorsive, cioŔ che legano la stessa entitÓ. Ad esempio, la relazione collega definita sull'entitÓ dipendente o la relazione genitore sull'entitÓ persona. La relazione collega Ŕ simmetrica, la relazione genitore non lo Ŕ. Nel caso di relazioni non simmetriche, occorre definire i ruoli di partecipazione dell'entitÓ alla relazione. Nel caso di genitore, i ruoli sono padre e figlio:
plot/er3.png
Inoltre Ŕ possibile avere relazioni che associano pi¨ di due entitÓ. Ad esempio, la relazione fornitura associa un fornitore che rifornisce di un certo prodotto un qualche dipartimento:
plot/er10.png
Per ogni entitÓ partecipante ad una relazione viene specificata una cardinalitÓ di relazione. Essa Ŕ una coppia di numeri naturali che specifica il numero minimo e massimo di istanze di relazione a cui una istanza dell'entitÓ pu˛ partecipare. E' possibile indicare con la costante N un numero generico maggiore di uno quando la cardinalitÓ non Ŕ nota con precisione. Nel diagramma ER, la cardinalitÓ di relazione di una entitÓ etichetta l'arco che lega l'entitÓ alla relazione. Seguono alcuni esempi:
plot/er4.png
In questo caso un teatro ha nessun, uno o molti spazi teatrali e uno spazio teatrale ha uno o pi¨ teatri associati. Questo tipo di relazione in cui entrambe le cardinalitÓ massime sono maggiori di uno si chiama molti a molti. La partecipazione dell'entitÓ teatro si dice opzionale (cardinalitÓ minima uguale a zero) e la partecipazione dell'entitÓ spazio teatrale si dice obbligatoria (cardinalitÓ minima uguale a uno).
plot/er5.png
In questo caso un teatro ha nessun, uno o molti spazi teatrali e uno spazio teatrale ha esattamente un teatro associato. Dunque non vi sono spazi condivisi da pi¨ teatri. Questo tipo di relazione in cui una cardinalitÓ massima Ŕ pari a uno e l'altra Ŕ maggiore di uno si chiama uno a molti.
plot/er6.png
In questo caso un teatro ha nessun o uno spazio teatrale e uno spazio teatrale ha esattamente un teatro associato. Dunque non vi sono teatri con pi¨ spazi e neppure spazi condivisi da pi¨ teatri. Questo tipo di relazione in cui entrambe le cardinalitÓ massime sono uguali a uno si chiama uno a uno.

Di seguito proponiamo un esempio di relazione ricorsiva con ruoli e cardinalitÓ. Ogni persona ha esattamente un padre e zero o pi¨ figli:
plot/er11.png
Infine mostriamo un esempio di relazione ternaria con cardinalitÓ:
plot/er12.png
Si ricordi che la cardinalitÓ di una entitÓ si riferisce al numero di istanze della relazione a cui quella entitÓ pu˛ partecipare. Ad esempio, nel caso di fornitore, la cardinalitÓ si riferisce al numero di coppie prodotto e dipartimento che il fornitore rifornisce. Dunque una cardinalitÓ massima pari a uno per l'entitÓ fornitore si ha quando un fornitore rifornisce un solo dipartimento di un solo prodotto.
Attributi
Un attributo Ŕ un concetto che ha una struttura semplice e non possiede proprietÓ rilevanti associate. Un attributo non ha esistenza autonoma ma Ŕ associato ad una entitÓ o ad una relazione. Un attributo pu˛ essere semplice, multivalore, composto o calcolato:
  • un attributo semplice ha, per ogni istanza dell'entitÓ associata, un unico valore atomico di un certo tipo di base. Ad esempio, attributi semplici possono essere nome, indirizzo di posta elettronica e pagina web;
  • un attributo multivalore pu˛ avere, per ogni istanza dell'entitÓ associata, pi¨ valori. Ad esempio, un attributo multivalore potrebbe essere telefono per il quale possono essere noti pi¨ numeri;
  • un attributo composto Ŕ costituito da pi¨ attributi correlati. Ad esempio un attributo composto potrebbe essere indirizzo formato dagli attributi via, numero, e cittÓ;
  • un attributo calcolato Ŕ un attributo il cui valore Ŕ ottenuto calcolandolo da quello di altri attributi. Al esempio l'incasso totale si ottiene moltiplicando il numero di spettatori per il prezzo del biglietto (supponendo che il prezzo sia fisso).
Un attributo pu˛ essere inoltre obbligatorio o opzionale. Un attributo obbligatorio deve sempre avere un valore valido. Un attributo opzionale pu˛ non avere un valore a causa di uno dei seguenti motivi:
  • il valore dell'attributo non esiste. Ad esempio, nel caso di un attributo email per una persona, la persona non possiede un indirizzo di posta elettronica;
  • il valore dell'attributo esiste ma non Ŕ noto. Quindi, la persona ha un indirizzo di posta elettronica ma non ci Ŕ noto quale sia;
  • non Ŕ noto se il valore dell'attributo esista. Quindi, non sappiamo se la persona abbia un indirizzo di posta elettronica.
Un attributo pu˛ essere associato ad una entitÓ o ad una relazione. Nel secondo caso esso assume un valore per ogni coppia (o ennupla) di istanze partecipanti alla relazione. Ad esempio, una relazione che lega i dipendenti ai teatri in cui essi lavorano pu˛ avere attributi data di assunzione e ruolo.

Un attributo ha un nome univoco all'interno dell'insieme degli attributi della stessa entitÓ o relazione. Dunque attributi di entitÓ o relazioni diverse possono essere omonimi. Un attributo si rappresenta graficamente con una ellisse (con una doppia ellisse se multivalore, con una ellisse tratteggiata se calcolato) con il nome all'interno collegata all'entitÓ, alla relazione o all'attributo composto di appartenenza. Segue un esempio:
plot/er7.png
Chiavi
Per ciascuna entitÓ occorre specificare una chiave primaria. Una chiave Ŕ un insieme di uno o pi¨ attributi con due caratteristiche:
  • univocitÓ: i valori degli attributi identificano univocamente le istanze dell'entitÓ nel micro-mondo modellato. Vale a dire che nell'universo del discorso dell'applicazione non possono esistere due istanze diverse con lo stesso valore per la chiave;
  • minimalitÓ: rimuovendo un qualsiasi attributo dall'insieme perdiamo il requisito di univocitÓ.
Ogni insieme di attributi che verifica la prima proprietÓ Ŕ detto superchiave. Una chiave Ŕ dunque una superchiave minimale. E' possibile che esistano pi¨ chiavi per una entitÓ. Tali chiavi sono dette chiavi candidate. Tra queste occorre sceglierne una che Ŕ detta chiave primaria. Esistono dei criteri di decisione per la scelta della chiave primaria:
  • gli attributi opzionali non possono far parte della chiave primaria. Dunque chiavi che contengono attributi opzionali non possono diventare primarie;
  • sono preferibili, per motivi di efficienza, chiavi piccole, cioŔ con pochi attributi;
  • Ŕ preferibile, per motivi di efficienza, scegliere chiavi con attributi che vengono utilizzate da molte operazioni o da operazioni molto frequenti;
Se non si riesce a trovare una chiave che soddisfa questi requisiti Ŕ possibile introdurre un ulteriore attributo sintetico che serve solo ad identificare le istanze dell'entitÓ. Questi attributi sono solitamente detti codici.

Facciamo un esempio. In un opportuno micro-mondo, uno studente pu˛ essere identificato dalla chiave matricola e dalla chiave nome e cognome. Possiamo scegliere come chiave primaria la matricola che Ŕ pi¨ breve. Una superchiave di studente Ŕ matricola (o nome e cognome) unita con un qualsiasi insieme di attributi di studente. Si noti che il concetto di chiave Ŕ definito rispetto al nel micro-mondo modellato. Vedremo tra breve un esempio in cui matricola non Ŕ una chiave per studente. Nel diagramma ER, il nome gli attributi che formano la chiave primaria viene sottolineato:
plot/er9.png
Talvolta una entitÓ non ha una chiave ma Ŕ identificata componendo una propria chiave parziale con la chiave di un'altra entitÓ alla quale Ŕ associata mediante una relazione. L'entitÓ priva di chiave propria si chiama entitÓ debole, l'entitÓ associata a questa si chiama entitÓ proprietario e la relazione che le lega si dice identificante. AffinchŔ l'entitÓ debole possa essere univocamente identificata, essa deve partecipare alla relazione identificante con vincolo di partecipazione (1,1). Vale a dire, per ogni istanza dell'entitÓ debole, deve esistere esattamente una istanza dell'entitÓ proprietario (che la identifica). Una identificazione esterna pu˛ coinvolgere pi¨ entitÓ proprietarie. Inoltre, una entitÓ proprietario pu˛ essere a sua volta debole purchŔ non si formino cicli di entitÓ deboli.

Ad esempio, in una base di dati che modella una rete di universitÓ, vi sono le entitÓ studente e universitÓ. Ogni studente Ŕ dotato di una matricola, che lo identifica solo all'interno dell'universitÓ in cui studia. Lo studente viene identificato univocamente componendo la matricola con la chiave dell'entitÓ universitÓ (ad esempio nome). In tal caso, l'entitÓ debole Ŕ studente, l'entitÓ proprietaria Ŕ universitÓ, la chiave parziale di studente Ŕ matricola e la chiave di studente Ŕ matricola e nome dell'universitÓ.

Una entitÓ debole viene rappresentata con un doppio rettangolo; la chiave parziale viene sottolineata tratteggiandola. Inoltre, la relazione che la lega all'entitÓ proprietario viene disegnata con un doppio rombo. Segue un esempio:
plot/er8.png
Specializzazioni
Talvota una entitÓ pu˛ essere specializzata in una o pi¨ sotto-entitÓ. Le sotto-entitÓ ereditano dall'entitÓ genitore i suoi attributi e le sue relazioni. Inoltre, le sotto-entitÓ possono definire nuovi attributi e nuove relazioni non presenti nell'entitÓ genitore. L'insieme delle istanze di una sotto-entitÓ Ŕ un sottoinsieme dell'insieme delle istanze dell'entitÓ genitore. Il concetto di sotto-entitÓ Ŕ affine al concetto di sotto-classe nei linguaggi di programmazione orientati agli oggetti. Talvolta, il modello ER esteso con la specializzazione prende il nome di modello EntitÓ-Relazione esteso (Enhanced Entity-Relationship Model, EER)

Vediamo un esempio. Una persona Ŕ identificata da codice fiscale, nome e cognome e ha alcuni recapiti telefonici, di cui di vuole registrare il numero, l'operatore e il tipo (fisso o mobile). Uno studente universitario Ŕ una persona per la quale si vuole memorizzare la matricola e il corso di laurea a cui Ŕ iscritto. Uno corso di laurea Ŕ identificato da nome, facoltÓ e universitÓ. Possiamo rappresentare questi requisiti in questo diagramma ER esteso con la specializzazione.

L'entitÓ studente eredita dall'entitÓ persona gli attributi codice fiscale, nome e cognome e la relazione recapito. In particolare la chiave di studente Ŕ quella di persona, cioŔ codice fiscale. Inoltre, studente definisce un nuovo attributo matricola e una nuova relazione iscritto. Si noti il simbolo di sottoinsieme sull'arco che connette l'entitÓ persona alla sotto-entitÓ studente.

Una entitÓ pu˛ specializzarsi in pi¨ sotto-entitÓ. La specializzazione Ŕ totale se ogni istanza dell'entitÓ genitore corrisponde ad una istanza di qualche sotto-entitÓ, oppure parziale altrimenti. Una specializzazione Ŕ disgiunta se gli insiemi di istanze delle sotto-entitÓ sono disgiunti, altrimenti Ŕ sovrapposta. Ad esempio, supponiamo di estendere il precedente diagramma con l'entitÓ lavoratore, sotto-entitÓ di persona. Un lavoratore Ŕ caratterizzato da una professione e da un impiego presso un'azienda. Il diagramma ER risultante Ŕ il seguente.

La lettera O all'interno del cerchio da cui partono gli archi verso le sotto-entitÓ studente e lavoratore sta ad indicare che la specializzazione Ŕ di tipo sovrapposto (overlapping); infatti esistono studenti lavoratori. Per specializzazioni di tipo disgiunto si usa la lettere D (disjoint). La specializzazioni totali vengono disegnate con una doppia linea che connette l'entitÓ genitore al cerchio di diramazione dei collegamenti alle sotto-entitÓ, quelle parziali da una linea singola. Nel nostro caso, la specializzazione Ŕ parziale in quanto esistono persone che non sono ne studenti e ne lavoratori.

Infine, una sotto-entitÓ pu˛ avere pi¨ entitÓ genitore. Essa eredita gli attributi e le relazioni da tutti i genitori. In tal caso occorre fare attenzione a non ereditare due volte lo stesso attributo. Questo accede se le entitÓ genitore sono a loro volta sotto-entitÓ di una stessa entitÓ nonno, e quindi ereditano le stesse proprietÓ da quest'ultima. Inoltre occorre rinominare eventuali attributi diversi ma omonimi. Questo accede se l'insieme unione di tutti gli attributi delle entitÓ genitore contiene attributi differenti ma omonimi. L'ereditarietÓ multipla generalmente non viene ammessa per le classi dei linguaggi orientati agli oggetti.

Estendiamo il precedente diagramma con l'entitÓ studente-lavoratore, sotto-entitÓ di studente e di lavoratore. Per uno studente lavoratore viene specificata una percentuale di rivalutazione del voto di laurea, in funzione dell'intensitÓ dell'impegno lavorativo. Otteniamo il seguente diagramma ER.

Uno studente lavoratore eredita gli attributi e le relazioni di persona (una sola volta), quelli di studente e quelli di lavoratore. Inoltre definisce un nuovo attributo rivalutazione.

Il modello ER pu˛ essere descritto in termini di sŔ stesso mediante il seguente diagramma ER. Si noti che l'informazione sulla chiave Ŕ stata modellata mediante un attributo chiave della relazione appartenenza-E che associa gli attributi alle entitÓ corrispondenti. Possiamo immaginare che, per ogni coppia entitÓ-attributo della relazione tale attributo abbia valore vero se e soltanto se l'attributo fa parte della chiave dell'entitÓ.

Avanti Indietro Indice
Basi di dati - Massimo Franceschet