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
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