Livello concettuale: attributi

Introduzione

Gli attributi sono le caratteristiche di un oggetto dello schema E-R (per es. di un'entità) che hanno rilevanza per il database; per esempio, per un alunno sono attibuti il suo nome e il suo cognome; gli attributi sono rappresentati nello schema E-R con dei cerchi vuoti all'interno:

rappresentazione di attributi

Può capitare che un attributo sia una caratteristica legata contemporaneamente a più entità; in questo caso l'attributo non può essere assegnato ad una singola entità, ma nemmeno ad entrambe contemporaneamente. La soluzione corretta è di assegnare l'attributo all'associazione che collega le due entità. Per esempio, se vogliamo che il database delle classi degli alunni, sia valido anche negli anni scolastici futuri, dobbiamo permettere di registrare anche l'anno scolastico di appartenenza della classe da parte di ogni alunno. Come si capisce dal testo sottolineato, l'anno scolastico specifica il periodo temporale di validità dell'associazione appartenenza e quindi diventerà un suo attributo:

immagine di associazione con attributo

Tipi di attributi

Ci sono altri tipi speciali di attributi che è importante conoscere:
attributi composti:
continuando a fare riferimento allo stesso esempio, sarebbe sbagliato usare il termine indirizzo per indicare dove risiede l'alunno. Questo non può essere considerato un attributo semplice perchè può essere scomposto nei seguenti elementi: via, numero, città e provincia. Per questo motivo nello schema E-R devono essere assolutamente evitati gli attributi composti;
attributi identificatori:
hanno il ruolo di identificare univocamente ogni elemento che appartiene all'entità; per esempio, per identificare univocamente ogni alunno può essere usato un numero unico fornito dalla segreteria al momento dell'iscrizione, che chiameremo matricola. E` importante sottolineare che il valore attribuito all'attributo identificatore deve essere diverso per ogni elemento dell'entità (non devono esistere due alunni con la stessa matricola). Gli atributi identificatori sono rappresentati da un cerchio pieno. Gli attributi identificatori sono molto importanti, fino al punto che esiste la seguente regola: ogni entità deve possedere un attributo identificatore. Non si deve mai usare un'entità senza attributo identificatore in uno schema E-R. Un altro frequente e grossolano errore è quello di considerare tale attributo, l'identificatore della categoria, invece che degli elementi che la compongono. Viceversa, vale la regola per cui le associazioni rifiutano l'attributo identificatore in quanto esse non rappresentano una categoria di elementi (come l'entità).

rappresentazione di attributo identificatore

attributi identificatori composti
Quando nella realtà non si riesce a trovare un attributo che soddisfi i requisiti di unicità necessari per l'identificazione, si può usare un gruppo di attributi per realizzare un unico attributo identificatore composto. Per esempio, se non esistesse la matricola dell'alunno, potremmo usare, per identificare un alunno, il suo nome e il suo cognome, nell'ipotesi semplificativa che non esistano mai due alunni omonimi in tale istituto.

rappresentazione di attributo identificatore composto

Un altro esempio di attributo identificatore composto può essere osservato nell'entità classe, in cui, l'identificazione può essere fatta considerando l'insieme degli attributi costituiti da anno, sezione e indirizzo; come conseguenza non ci potranno essere due classi dello stesso anno, sezione e indirizzo. Un'altra ottima soluzione sarebbe stata quella di aggiungere un attributo identificatore ideato dal progettista e chiamato codice-classe.

rappresentazione di attributo identificatore composto

Altre regole

Oltre alla regola scritta per cui "ogni entità deve possedere un attributo identificatore", esistono altre "regole non scritte" che ci possono aiutare a realizzare un buono schema E-R.
  • Evitare le entità che possiedono solo l'attributo identificatore, perchè probabilmente non c'è bisogno di quelle entità (e quindi nemmeno dell'eventuale associazione che le lega ad un altra entità);
  • cercare di usare un attributo identificatore che occupi meno memoria possibile in termini di byte; ad esempio, usare come identificatore un codice alfanumerico o numerico di solito è una soluzione migliore di quella di usare una lunga parola che fornisce una descrizione completa.