Riassunti

Appunti universitari in formato Markdown da Obsidian.

Chiavi composte (o esterne), reificazione di relazioni e generalizzazione

download Scarica MD

Chiavi composte (o esterne)

Ogni entità E ha una chiave primaria Questa può essere:

  • interna: è formata solo da attributi di E;
  • composta (o esterna): comprende attributi di altre entità.

Esempio

chiaveComposta
chiaveComposta

La matricola di uno studente non è chiave primaria in quanto studenti di università diverse possono avere la stessa matricola. Tuttavia, la combinazione (Matr + Nome) è chiave primaria, dove Nome è chiave primaria di Università. Studente è detta entità debole.

La combinazione (Matr, Nome), dove Nome è la chiave primaria di Università, è una chiave composta per Stud: essa consente di identificare univocamente ogni istanza di Stud.

NOTA: la relazione Iscrizione è di tipo 1:n e Stud sta dalla parte 1 con partecipazione obbligatoria. Questa è una condizione necessaria per poter definire una chiave composta.

Possibili istanze di Stud sono:

  • $<$252, Unical, Perri$>$ lo studente dell’Unical con matr 252 si chiama Perri
  • $<$363, Bocconi, Tucci$>$

Reificazione di relazioni

Si consideri ancora lo schema:

reificazione1
reificazione1

Possibili istanze della relazione Esame sono:

{$<$s1,c1,d1,v1$>$, $<$s2,c1,d2,v2$>$, …, $<$s3,c2,d3,v2$>$} Ricordiamo che non sono ammessi esami duplicati, ad esempio, entrambe le istanze $<$s1,c1,d1,v1$>$ e $<$s1,c1,d2,v2$>$ non possono coesistere.

Il precedente schema può essere trasformato nel seguente schema equivalente attraverso la reificazione della relazione Esame:

reificazione2
reificazione2

In questo schema la relazione n:m Esame è stata sostituita dalla entità Esame, e da due relazioni 1:n. Si noti che l’entità Esame ha come chiave primaria la chiave composta (Matr, Cod), per cui ogni istanza di Esame è univocamente individuata da una coppia <studente, corso>.

Possibili istanze della entità Esame sono (in rosso i valori della chiave):

{$<$s1,c1,d1,v1$>$, $<$s2,c1,d2,v1$>$, …, $<$s3,c2,d3,v2$>$} Anche in questo caso non sono quindi ammessi esami duplicati, ad esempio:

$<$s1,c1,d1,v1$>$ e $<$s1,c1,d2,v2$>$ L’entità Esame e la relazione Esame ammettono le stesse istanze.

reificazione3
reificazione3

Aggiungendo l’attributo data alla chiave esterna, è possibile rappresentare il fatto che uno studente ha sostenuto più volte l’esame dello stesso corso in date diverse: infatti la chiave primaria è $<$Matr, Cod, Data$>$. Possibili istanze di Esame sono:

{$<$s1,c1,d1,v1$>$, $<$s1,c1,d2,v2$>$, $<$s2,c1,d1,v2$>$, …, $<$s3,c2,d3,v2$>$}

Un modo alternativo per ottenere un effetto simile è quello di aggiungere un codice univoco nell’entità Esame, senza chiave composta.

reificazione4
reificazione4

L’informazione è distribuita così (in rosso valori della chiave primaria):

  • istanze di Esame: {$<$e1,d1,v1$>$, $<$e2,d2,v2$>$, $<$e3,v2,d1$>$, ...}
  • istanze di S-E: {$<$s1,e1$>$, $<$s1,e2$>$, $<$s2,e3$>$, ...}
  • istanze di E-C: {$<$e1,c1$>$, $<$e2,c1$>$, $<$e3,c2$>$, ...} Lo studente s1 ha sostenuto l’esame e1 relativo al corso c1 nelle date d1 e d2 con voti v1 e v2, rispettivamente, ecc.

NOTA: lo stesso esame può essere sostenuto più volte, anche nella stessa data.

Generalizzazione

È un legame logico tra:

  • una entità E, detta genitore;
  • un insieme di entità E1, …, En, dette figlie. L’entità E è una generalizzazione di E1, …, En, che sono specializzazioni di E, in quanto ogni istanza di Ei è una istanza di E, cioè:

Ei $ \subseteq $ E, per i = 1,n

generalizzazione1
generalizzazione1

La generalizzazione è un costrutto derivato!

Esempio (num. 1) (Persona, Donna e Uomo)

generalizzazione2
generalizzazione2

Persona è una generalizzazione di Uomo e Donna. Infatti ogni Uomo è una Persona, ed ogni Donna è una Persona.

Uomo $ \subseteq $ Pers, Donna $ \subseteq $ Pers Siccome Uomo $ \cup $ Donna = Pers, tale generalizzazione è detta totale. Inoltre, siccome ogni persona o è un uomo o è una donna (OR esclusivo), cioè, Uomo $ \cap $ Donna = $ \Phi $, la generalizzazione è detta disgiunta.

Esempio (num. 2) (Persona, Avvocato e Professore)

generalizzazione3
generalizzazione3

Una generalizzazione non totale è detta parziale. Ad esempio, la seguente generalizzazione è parziale, in quanto ci sono persone che non sono nè avvocati nè professori. Possiamo riassumere ciò con:

Avv $ \cup $ Prof $ \subset $ Pers Inoltre, è sovrapposta (non disgiunta) in quanto ci sono avvocati che sono anche professori, Avv $ \cap $ Prof $ \neq \Phi $

Generalizzazione a più livelli

Una generalizzazione può essere a più livelli.

generalizzazionePiuLivelli
generalizzazionePiuLivelli

Per esempio, questo modello ER in figura rappresenta una generalizzazione a due livelli.

Per quanto riguarda gli attributi delle varie entità generalizzate, gli attributi si propagano dall'alto verso il basso. Nel nostro caso:

  • tutte le entità hanno un CF (persone, avvocati, professori, ecc.)
  • tutti i prof hanno uno stipendio (prof di scuola media, prof universitario)

Esempio

  • Un professionista è un avvocato, un ingegnere o un informatico
  • Un avvocato è un civilista o un penalista
  • Un ingegnere è civile o industriale, e un ingegnere industriale è meccanico o chimico
  • Un informatico può essere un programmatore
  • Un programmatore conosce un certo numero di linguaggi di programmazione
  • Ad ogni professionista è associata la città in cui esercita la professione

esempioGeneralizzazione
esempioGeneralizzazione