16.11.2014 Views

Esempi di schema ER: Esami degli studenti e orario ... - DBGroup

Esempi di schema ER: Esami degli studenti e orario ... - DBGroup

Esempi di schema ER: Esami degli studenti e orario ... - DBGroup

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Esempi</strong> <strong>di</strong> <strong>schema</strong> <strong>ER</strong>: <strong>Esami</strong> <strong>degli</strong> <strong>studenti</strong> e <strong>orario</strong> delle lezioni<br />

<strong>Esami</strong> <strong>degli</strong> <strong>studenti</strong> :<br />

Si vogliono memorizzare gli esami che gli <strong>studenti</strong> sostengono per i vari corsi, riportandone la data e il<br />

voto.<br />

Specifica S1: Uno studente può sostenere fino ad un massimo <strong>di</strong> 29 esami.<br />

Nessuna limitazione per il numero <strong>di</strong> esami registrabili per un corso.<br />

Consideriamo le seguenti specifiche :<br />

(1) Per un dato studente eundato corso può essere registrato un unico esame, con il relativo voto e la<br />

relativa data.<br />

(2) Per un dato studente eundato corso possono essere registrati più esami, ciascuno con il relativo<br />

voto e la relativa data.<br />

(3) Per un dato studente eundato corso possono essere registrati più esami, ma in date <strong>di</strong>fferenti.<br />

·<br />

Per un dato studente, undato corso e una certa data, può essere registrato un unico esame, con il<br />

relativo voto.<br />

(4) Uno studente non può registrare due o più esami nella stessa data, cioè per una certa data e per un<br />

certo studente si puòregistrare un unico esame (relativo ad un preciso corso).<br />

(5) Vincolo 4 +Vincolo 1<br />

Orario delle lezioni :<br />

Le specifiche per l’<strong>orario</strong> settimanale delle lezioni sono le seguenti:<br />

¯<br />

¯<br />

¯<br />

ogni corso si tiene da tre a cinque volte la settimana;<br />

in un aula si tiene, durante la settimana, almeno un corso;<br />

in un certo <strong>orario</strong> settimanale si tiene almeno un corso;


2 <strong>Esempi</strong> <strong>di</strong> <strong>schema</strong> <strong>ER</strong>: <strong>Esami</strong> <strong>degli</strong> <strong>studenti</strong> e <strong>orario</strong> delle lezioni<br />

<strong>Esami</strong> <strong>degli</strong> <strong>studenti</strong> :sianalizzano e si confrontano le varie specifiche.<br />

(1) Per un dato studente eundato corso può essere registrato un unico esame, con il relativo voto e la relativa<br />

data.<br />

Un’associazione binaria tra studente ed esame rispetta già questo vincolo: infatti l’insieme <strong>di</strong> istanze <strong>di</strong> un’associazione<br />

binaria è una relazione matematica e quin<strong>di</strong> non vi possono essere coppie <strong>di</strong> elementi ripetuti<br />

DATA<br />

VOTO<br />

STUDENTE<br />

ESAME<br />

(0,29) (0,N)<br />

CORSO<br />

Consideriamo la specifica S1 (Uno studente può sostenere fino ad un massimo <strong>di</strong> 29 esami): in tale specifica<br />

non viene detto se gli esami devono essere <strong>di</strong> corsi <strong>di</strong>fferenti o meno.<br />

Nel precedente <strong>schema</strong>, la card-max(STUDENTE,ESAME)=29 inserita per ottenere la specifica S1 implica<br />

anche una specifica più dettagliata:<br />

S2 : Uno studente può sostenere fino ad un massimo <strong>di</strong> 29 esami <strong>di</strong> corsi <strong>di</strong>fferenti.<br />

Verifichiamo l’univocità dell’esame, fissato lo studente ed il corso, imposta da questo <strong>schema</strong> ragionando in<br />

termini <strong>di</strong> identificatori.<br />

Nel modello E/R per le associazioni non èdefinito il concetto <strong>di</strong> identificatore in quanto le associazioni sono<br />

identificate dalle entitàche vi partecipano. Più precisamente:<br />

Data un’associazione A tra le entità E1,E2, , En, ogni Entità Eitale che max-card(Ei,A)=1 èun<br />

identificatore <strong>di</strong> A ; altrimenti (cioè per ogni entitàEisihache max-card(Ei,A) 1) Ahaununico<br />

identificatore costituito dalle entità E1,E2, , En.<br />

Nel nostro caso:<br />

STUDENTE A<br />

ESAME<br />

B CORSO<br />

(0,29) (1,1) (1,1) (0,N)<br />

VOTO<br />

DATA<br />

In tal caso si <strong>di</strong>ce che l’associazione ESAME è reificata, cioèè rappresentata tramite un’entità.<br />

(2) Per un dato studente eundato corso possono essere registrati più esami, ciascuno con il relativo voto e la<br />

relativa data.<br />

La specifica <strong>di</strong> registrare più esami viene interpretata nel seguente modo: per un dato studente eundato corso<br />

ci possono essere più registrazioni, ciascuna con il relativo voto e la relativa data: quin<strong>di</strong> si possono utilizzare<br />

attributi a valore-multiplo.


3<br />

Le due informazioni sul voto e sulla data <strong>di</strong> un certo esame non possono essere scorrelate:<br />

DATA (1,N)<br />

VOTO (1,N)<br />

2.<br />

STUDENTE<br />

ESAME<br />

(0,29) (0,N)<br />

CORSO<br />

e quin<strong>di</strong> si deve usare un attributo composto multiplo<br />

2.<br />

STUDENTE<br />

VOTO<br />

REG.<br />

DATA<br />

(1,N)<br />

ESAME<br />

CORSO<br />

(0,29) (0,N)<br />

Si noti che con questa interpretazione, la specifica S1 (Uno studente può sostenere fino ad un massimo <strong>di</strong> 29<br />

esami) resta valida: gli esami al massimo sono 29 (card-max(STUDENTE,ESAME)=29) maper un esame<br />

ci possono essere piùregistrazioni.<br />

Inoltre èvalida anche la specifica S2 : Uno studente può sostenere fino ad un massimo <strong>di</strong> 29 esami <strong>di</strong> corsi<br />

<strong>di</strong>fferenti.<br />

(3) Per un dato studente eundato corso possono essere registrati più esami, ma in date <strong>di</strong>fferenti.<br />

·<br />

Per un dato studente,undato corso e una certa data,può essere registrato un unico esame, con il relativo<br />

voto.<br />

Èunvincolo più restrittivo rispetto al vincolo 2.<br />

Si può utilizzare una ternaria:<br />

VOTO<br />

STUDENTE<br />

ESAME<br />

(0,29) (0,N)<br />

CORSO<br />

(1,N)<br />

3.<br />

DATA<br />

In tale <strong>schema</strong>, la card-max(STUDENTE,ESAME)=29 assicura ancora la specifica S1 (Uno studente può<br />

sostenere fino ad un massimo <strong>di</strong> 29 esami) ma non implica la specifica S2 : Uno studente può sostenere fino<br />

ad un massimo <strong>di</strong> 29 esami <strong>di</strong> corsi <strong>di</strong>fferenti. Imporre che uno studente può sostenere fino ad un massimo <strong>di</strong><br />

29 esami senza specificare che gli esami siano <strong>di</strong> <strong>di</strong> corsi <strong>di</strong>fferenti ovviamente non ha senso in realtà, pertanto<br />

èpiù corretto considerare card-max(STUDENTE,ESAME)=N.


4 <strong>Esempi</strong> <strong>di</strong> <strong>schema</strong> <strong>ER</strong>: <strong>Esami</strong> <strong>degli</strong> <strong>studenti</strong> e <strong>orario</strong> delle lezioni<br />

Si noti che con la partecipazione obbligatoria dell’entità DATA nell’associazione ESAME, cioè tramite<br />

card-min(DATA,ESAME)=1, una data può esistere solo se nella data è stata effettuata una registrazione<br />

d’esame.<br />

Invece, con la partecipazione opzionale dell’entità DATA nell’associazione ESAME, card-min(DATA,ESAME)=0,<br />

una data può esistere in<strong>di</strong>pendentemente dal fatto sia stata effettuata una registrazione d’esame. Questo è, ad<br />

esempio, il caso nel quale l’entità DATA rappresenta un calendario relativo all’organizzazione <strong>di</strong>dattica, che<br />

riporta tutte le date nelle quali è possibile effettuare esami.<br />

L’associazione ternaria ESAME può essere reificata ottenendo una rappresentazione equivalente del precedente<br />

<strong>schema</strong>: (consideriamo il caso <strong>di</strong> card-min(DATA,ESAME)=1, malostesso <strong>di</strong>scorso vale anche<br />

per card-min(DATA,ESAME)=0):<br />

DATA<br />

DATA<br />

(1,N)<br />

C<br />

(1,1)<br />

STUDENTE A<br />

ESAME<br />

B CORSO<br />

(0,29) (1,1) (1,1)<br />

(0,N)<br />

3.<br />

VOTO<br />

NOTA: Anche in questo <strong>schema</strong> èpiù corretto considerare card-max(STUDENTE,ESAME)=N.<br />

Lo <strong>schema</strong> con l’associazione reificata è equivalente ma sicuramente più complesso dello <strong>schema</strong> equivalente<br />

con l’associazione ternaria, pertanto quest’ultimo è sicuramente da preferire per rappresentare la situazione in<br />

questione.<br />

D’altra parte lo <strong>schema</strong> con l’associazione reificata si presta alla seguente semplificazione. L’entità DATA ha<br />

come unico attributo DATA elacard-min(DATA,ESAME)=1 implica che una data esiste solo in quanto data<br />

<strong>di</strong> registrazione <strong>di</strong> un esame: allora è possibile semplificare riportando l’attributo DATA <strong>di</strong>rettamente sull’entità<br />

ESAME:<br />

DATA<br />

STUDENTE<br />

A<br />

(0,29) (1,1)<br />

ESAME<br />

B<br />

(1,1) (0,N)<br />

CORSO<br />

VOTO<br />

NOTA: Anche in questo <strong>schema</strong> èpiù corretto considerare card-max(STUDENTE,ESAME)=N.<br />

Questa semplificazione non èinvece corretta, cioè lo<strong>schema</strong> semplificato non è equivalente a quello originale,<br />

nel caso <strong>di</strong> card-min(DATA,ESAME)=0: infatti nello <strong>schema</strong> semplificato una data non può esistere<br />

in<strong>di</strong>pendentemente dall’esame.


Nel seguito consideriamo il caso <strong>di</strong> card-min(DATA,ESAME)=1 e quin<strong>di</strong> useremo lo <strong>schema</strong> reificato<br />

semplificato.<br />

5<br />

(4) Uno studente non può registrare due o più esami nella stessa data, cioè per una certa data e per un certo<br />

studente si puòregistrare un unico esame (relativo ad un preciso corso).<br />

Èunvincolo più restrittivo rispetto al vincolo (3). Partendo dallo <strong>schema</strong> con la associazione reificata, questo<br />

vincolo viene ottenuto restringendo l’identificatore dell’entità esame, togliendo la componente dell’identificazione<br />

relativa al corso:<br />

DATA<br />

VOTO<br />

4.<br />

STUDENTE A<br />

ESAME<br />

B CORSO<br />

(0,29) (1,1) (1,1) (0,N)<br />

NOTA: Anche in questo <strong>schema</strong> èpiù corretto considerare card-max(STUDENTE,ESAME)=N.<br />

(5) Vincolo 4 +Vincolo 1<br />

Partendo dallo <strong>schema</strong> precedente nel quale il vincolo 4 ègià rispettato, per rispettare il vincolo 1 si introduce<br />

un nuovo identificatore : questo identificatore mi deve ricostruire l’associazione binaria tra studente ed esame:<br />

DATA<br />

VOTO<br />

STUDENTE<br />

A<br />

(0,29) (1,1)<br />

ESAME<br />

B<br />

(1,1) (0,N)<br />

CORSO<br />

5.<br />

NOTA:<br />

Consideriamo la in tale specifica non viene detto se gli esami devono essere <strong>di</strong> corsi <strong>di</strong>fferenti o meno.<br />

In questo <strong>schema</strong> <strong>schema</strong>, la card-max(STUDENTE,ESAME)=29 è corretta: essa assicura la specifica S1<br />

(Uno studente può sostenere fino ad un massimo <strong>di</strong> 29 esami); e, grazie al vincolo 1 (per un dato studente e<br />

un dato corso può essere registrato un unico esame), anche la specifica più dettagliata S2 (Uno studente può<br />

sostenere fino ad un massimo <strong>di</strong> 29 esami <strong>di</strong> corsi <strong>di</strong>fferenti).


6 <strong>Esempi</strong> <strong>di</strong> <strong>schema</strong> <strong>ER</strong>: <strong>Esami</strong> <strong>degli</strong> <strong>studenti</strong> e <strong>orario</strong> delle lezioni<br />

Orario Settimanale delle lezioni<br />

L’<strong>orario</strong> viene rappresentato tramite l’associazione ternaria: SI TIENE:<br />

¯<br />

¯<br />

¯<br />

ogni corso si tiene da tre a cinque volte la settimana: card(CORSO,SI TIENE)=(3,5)<br />

in un aula si tiene, durante la settimana, almeno un corso: card(AULA,SI TIENE)=(1,N)<br />

in un certo <strong>orario</strong> settimanale si tiene almeno un corso: card(ORARIO,SI TIENE)=(1,N)<br />

ORARIO<br />

(1,N)<br />

SITIENE<br />

(3,5)<br />

CORSO<br />

(1,N)<br />

AULA<br />

Con ORARIO si intende il GIORNO della settimana e l’ORA. Sinoti che sia ORARIO che AULA hanno una<br />

partecipazione obbligatoria a SI TIENE. Alprecedente <strong>schema</strong> si vogliono aggiungere i seguenti Vincoli <strong>di</strong><br />

non sovrapposizione:<br />

(1) Un corso,inuna certa ora <strong>di</strong> un giorno,deve essere in un’unica aula.<br />

(2) Un’aula,inuna certa ora <strong>di</strong> un giorno, deve ospitare un unico corso.<br />

Dopo aver verificato che l’associazione ternaria non impone i vincoli richiesti, si procede come nel caso<br />

dell’associazione ESAME:sireifica l’associazione ternaria e si semplifica eliminando l’entità ORARIO (la semplificazione<br />

produce uno <strong>schema</strong> equivalente in quanto la partecipazione <strong>di</strong> ORARIO è obbligatoria):<br />

GIORNO ORA<br />

AULA<br />

A<br />

SITIENE<br />

B<br />

CORSO<br />

(1,N) (1,1)<br />

(1,1) (3,5)<br />

esimo<strong>di</strong>fica lo <strong>schema</strong> per ottenere i vincoli <strong>di</strong> non sovrapposizione: il seguente identificatore esprime il<br />

vincolo (1):<br />

GIORNO ORA<br />

AULA<br />

A<br />

SITIENE<br />

(1,N) (1,1)<br />

1.<br />

mentre per il vincolo (2) si aggiunge un altro identificatore:<br />

B<br />

(1,1) (3,5)<br />

CORSO<br />

GIORNO ORA<br />

2.<br />

AULA<br />

A<br />

(1,N) (1,1)<br />

SITIENE<br />

B<br />

(1,1) (3,5)<br />

CORSO

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!