Resúmenes
Apuntes universitarios en formato Markdown desde Obsidian.
Chiavi composte (o esterne), reificazione di relazioni e generalizzazione
download Descargar MDChiavi 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

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:

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:

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.

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.

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
La generalizzazione è un costrutto derivato!
Esempio (num. 1) (Persona, Donna e Uomo)
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)
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.

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