Salta al contenuto
Note per Studenti Generalizzazioni e identificatori nel modello ER

Generalizzazioni e identificatori nel modello ER

In questa pagina 4

Gli ultimi due costrutti del modello ER: la generalizzazione (relazioni IS-A tra entità) e l'identificazione (come si distinguono le istanze di un'entità). Si usano le notazioni delle note precedenti (Modello entità-relazione - entità, relazioni e attributiIl modello entità-relazione (ER, Chen 1976) descrive il mini-mondo con entità (classi di oggetti autonomi), relazioni (associazioni tra due o più entità, di grado 2 o più) e attributi (proprietà locali di entità o relazioni su un dominio; NULL per l'informazione mancante, con tre significati; attributi composti). Ogni costrutto ha una semantica estensionale: un'entità è un insieme di oggetti (senza ripetizioni né ordine), una relazione è un sottoinsieme del prodotto cartesiano delle entità coinvolte (quindi la stessa coppia non può comparire due volte: per gli eventi ripetuti si introduce una nuova entità, come Sessione o Fattura), un attributo è una funzione totale dalle istanze a un dominio. Si sceglie un'entità invece di un attributo quando il concetto ha istanze con proprietà proprie o collegamenti; mai trasformare un'entità in relazione. Lo schema ER è documentato dal dizionario dei dati (entità, relazioni, attributi, vincoli esterni).Modello entità-relazione - entità, relazioni e attributi →, Relazioni ricorsive, cardinalità e vincoli di integrità nel modello ERI vincoli di integrità di uno schema ER sono di quattro tipi: di cardinalità sulle relazioni, di cardinalità sugli attributi, di identificazione sulle entità e vincoli esterni. La cardinalità (min,max) di un'entità e con ruolo u in una relazione r dice a quante istanze di r partecipa ogni istanza di e: min 0 = partecipazione opzionale, min 1 = obbligatoria, max 1 = al più una volta, max N = molte; le relazioni binarie si classificano per i massimi in uno-a-uno, uno-a-molti, molti-a-molti. I vincoli di cardinalità non permettono di violare la semantica estensionale (una coppia compare una volta sola). Una relazione ricorsiva collega un'entità con se stessa e richiede i ruoli (Predecessore e Successore, Sorgente e Destinazione): con le cardinalità si ottengono catene, alberi e grafi diretti; grafi non diretti, assenza di cicli e di cappi richiedono vincoli esterni; i multigrafi si modellano con una terza entità (etichetta, colore). Gli attributi hanno cardinalità (1,1) di default, (0,1) se opzionali, (x,N) se multivalore.Relazioni ricorsive, cardinalità e vincoli di integrità nel modello ER →).

La relazione IS-A

Definizione (IS-A). La relazione IS-A (di sottoinsieme) è definita tra due entità, superclasse e sottoclasse, e significa che ogni istanza della sottoclasse è anche istanza della superclasse. Esempio: Studente IS-A Persona.

Semantica estensionale. Se e1e_1 IS-A e2e_2, allora in ogni istanza ii dello schema I(i,e1)⊆I(i,e2)I(i,e_1)\subseteq I(i,e_2) (Insiemi e insieme delle partiCome si descrive un insieme, sottoinsiemi, uguaglianza, insieme delle parti e insiemi finiti e infiniti.Insiemi e insieme delle parti →). Quindi la relazione IS-A è riflessiva e transitiva, ma non simmetrica. L'inclusione è tra insiemi di oggetti: lo stesso oggetto s3s_3 sta in Studente e anche in Persona (non due oggetti collegati).

Istanze valide per Studente IS-A Persona:

I(Persona)I(\text{Persona}) I(Studente)I(\text{Studente}) Valida?
{p1,p2,s3,s4,s5}\{p_1,p_2,s_3,s_4,s_5\} {s3,s4,s5}\{s_3,s_4,s_5\} sì
{s1,…,s5}\{s_1,\dots,s_5\} {s1,…,s5}\{s_1,\dots,s_5\} sì (anche uguali)
{p1,…,p5}\{p_1,\dots,p_5\} ∅\emptyset sì (sottoclasse vuota)
{p1,p2,s3}\{p_1,p_2,s_3\} {s3,s4,s5}\{s_3,s_4,s_5\} no: s4,s5s_4,s_5 non sono persone

Principio di ereditarietà

Ogni proprietà della superclasse (attributi, relazioni, vincoli di integrità) è anche proprietà della sottoclasse e non si rappresenta due volte nel diagramma. La sottoclasse può avere proprietà aggiuntive.

  • Attributi: Persona ha Cognome ed Età; Studente IS-A Persona aggiunge Matricola. Ogni studente ha un'età.
  • Relazioni: se Persona partecipa a Pratica(Persona (0,N), Sport (0,N)), anche ogni Studente partecipa, con la stessa cardinalità. Se il vincolo diventa Persona (1,N), ogni persona, studenti compresi, pratica almeno uno sport.
  • IS-A: Erasmus IS-A Studente IS-A Persona implica Erasmus IS-A Persona (transitività).

Generalizzazione

Definizione (generalizzazione). Una generalizzazione è una superclasse estesa da più sottoclassi (più IS-A) secondo un unico criterio di classificazione. Esempio: Persona ⊃ {Femmina, Maschio} (criterio: sesso). La specializzazione è l'operazione inversa (dalla superclasse alle sottoclassi).

Estensionalmente ogni sottoclasse è contenuta nella superclasse: I(fk)⊆I(p)I(f_k)\subseteq I(p). Valgono ereditarietà e vincoli. Due vincoli opzionali sulla generalizzazione:

Vincolo Significato Formula
completezza (totale) ogni istanza della superclasse appartiene ad almeno una sottoclasse I(f1)∪⋯∪I(fn)=I(p)I(f_1)\cup\dots\cup I(f_n)=I(p)
disgiunzione (esclusiva) ogni istanza della superclasse appartiene ad al più una sottoclasse I(fi)∩I(fj)=∅, i≠jI(f_i)\cap I(f_j)=\emptyset,\ i\ne j

Quattro combinazioni:

Tipo Esempio
completa e disgiunta (partizione) Persona ⊃ {Femmina, Maschio}
non completa, disgiunta Persona ⊃ {Studente, Docente}: ci sono persone né studenti né docenti, ma nessuno è entrambi
completa, non disgiunta Persona ⊃ {Europeo, NonEuropeo}: tutti sono almeno uno; chi ha doppia cittadinanza è entrambi
non completa, non disgiunta Persona ⊃ {Studente, Lavoratore}: si può essere né l'uno né l'altro, o entrambi

Sulla stessa entità si possono avere più generalizzazioni con criteri diversi (sesso e occupazione di Persona): non c'è collegamento tra le due, perché i criteri sono diversi (ogni sottoclasse resta una IS-A di Persona).

Nel testo di queste note: Persona ⊃ {Studente, Docente} (parziale, esclusiva) equivale a "non completa e disgiunta".

Quando modellare come generalizzazione. Quando le sottoclassi hanno proprietà (attributi o relazioni) proprie rilevanti. Errore tipico: "Magazzino ⊃ {Grande, Piccolo}". Grande e Piccolo non hanno proprietà proprie, sono una proprietà (si ricava dai metri quadri e dalla quantità massima): la specializzazione serve a rappresentare un caso particolare di un concetto più generico, non un valore di un attributo. Allo stesso modo "Menu del giorno IS-A Menu" è sbagliato: ogni menu del giorno sarebbe anche un menu, ma si vuole che lo stesso menu possa essere proposto in giorni diversi, quindi si usa una relazione (vedi Esercizio - Progettazione ER e schema relazionale della mensa universitaria (tema d'esame 13 febbraio 2012)).

Identificatori

Definizione (identificatore). Un vincolo di identificazione per un'entità ee definisce un identificatore: un insieme di proprietà (attributi o relazioni) che identifica univocamente tutte le istanze di ee. Non esistono due istanze diverse con gli stessi valori su tutte le proprietà dell'identificatore. Un'entità può avere più identificatori, ma almeno uno.

Due tipi:

  • Interno: formato da soli attributi dell'entità, tutti con cardinalità (1,1).
  • Esterno: formato da attributi dell'entità e da ruoli di relazioni a cui l'entità partecipa, oppure dai soli ruoli; tutti gli attributi e i ruoli devono avere cardinalità (1,1).

Notazione grafica (disegno): pallino pieno sull'attributo se è singolo; linea con pallino nero che unisce gli attributi (e i ruoli) se sono più di uno. In queste note si sottolinea (...); per un identificatore esterno si scrive per esteso, per esempio "Badge + ruolo verso Università".

Esempio interno. Auto(targa, modello, colore): non esistono due auto con la stessa targa. Persona(nome, cognome, data_nascita, reddito): l'identificatore è composto, nell'istanza due persone possono avere stesso nome e cognome ma non stessa data.

Esempio esterno. Studente con Nome, Cognome, Badge; Università(Nome, Città); relazione Iscrizione(Studente (1,1), Università (0,N)) con attributo Data. Il numero di badge è unico solo all'interno di una università (due studenti di università diverse possono avere lo stesso badge). Identificatore di Studente: Badge più il ruolo verso Università. Esempio di istanza: s1s_1 (badge 9231, Padova), s2s_2 (badge 8845, Padova), s3s_3 (badge 9231, Milano). s1s_1 e s3s_3 hanno lo stesso badge ma sono iscritti a università diverse, quindi la coppia (badge, università) li distingue: ammesso.

Esempio tipico d'esame. Copia di un libro: identificata dal numero di copia più il libro (ruolo (1,1) verso Libro). Camera di albergo: numero di camera più albergo.

Entità debole

Definizione (entità debole). Un'entità debole non ha attributi chiave propri: è identificata dalla relazione con un'altra entità, in combinazione con un attributo (identificazione esterna). Ha sempre partecipazione totale (1,1) alla relazione che la identifica.

Non ogni dipendenza di esistenza dà una entità debole: Persona-Telefono, per esempio, può avere un identificatore proprio.

Scelta degli identificatori

  • Un identificatore con meno attributi è più comodo (minimalità): non conviene aggiungere attributi superflui a un identificatore già valido.
  • Un attributo come il nome non è una buona chiave anche se oggi unico (per esempio per formule scientifiche): ci si basa sulla garanzia di unicità, non su quella fortuita. Quando non c'è un buon candidato si introduce un codice (serial, surrogate key), come ID.
  • Talking attributes (con significato, come codice fiscale, targa) o serial IDs (numeri senza significato, assegnati dal sistema): i primi sono leggibili ma legati al mondo esterno (possono cambiare, errori di battitura), i secondi sono stabili e compatti.

L'identificatore principale si sceglie in fase di ristrutturazione (Ristrutturazione dello schema ER e traduzione nel modello relazionaleLa progettazione logica ha due passi. 1) Ristrutturazione dello schema ER, per togliere i costrutti che il modello relazionale non esprime: analisi delle ridondanze (attributi derivati e cicli di relazioni, decisa con volume dei dati e carico, tabelle di frequenza e accessi), eliminazione degli attributi multivalore (nuova entità), composti (appiattiti o nuova entità), delle IS-A (relazione con partecipazione (1,1) dalla sottoclasse) e delle generalizzazioni (opzione 1 relazioni, 2 accorpamento nel padre con attributo discriminante, 3 accorpamento nei figli, solo se completa e disgiunta), scelta degli identificatori principali (niente cicli di identificazione esterna), riscrittura dei vincoli esterni, partizionamento e accorpamento di entità. 2) Traduzione quasi automatica nel modello relazionale: ogni entità diventa una relazione con la chiave primaria data dall'identificatore principale (anche esterno); una relazione molti-a-molti diventa una relazione con le chiavi delle entità; una uno-a-molti con partecipazione obbligatoria si fonde con l'entità dal lato max 1 con una chiave esterna; con partecipazione opzionale si fonde (NULL) o si crea una relazione a parte; le uno-a-uno si fondono sul lato con partecipazione obbligatoria; le ternarie seguono la stessa logica con le chiavi di tutte le entità.Ristrutturazione dello schema ER e traduzione nel modello relazionale →).

Domande d'esame

1. Quali combinazioni di completezza e disgiunzione ha una generalizzazione? Fare un esempio per ciascuna. Traccia. Quattro: completa e disgiunta (Persona ⊃ {Femmina, Maschio}), non completa e disgiunta (Persona ⊃ {Studente, Docente}), completa e non disgiunta (Persona ⊃ {Europeo, NonEuropeo}), né l'una né l'altra (Persona ⊃ {Studente, Lavoratore}). Completa: unione delle estensioni uguale alla superclasse; disgiunta: intersezioni vuote.

2. Che cos'è un identificatore esterno e quando serve? Traccia. Identificatore che usa ruoli di relazioni (1,1) oltre, o al posto, di attributi: serve quando gli attributi propri non bastano (badge unico solo in una università; numero di copia unico solo per libro).

3. Che cosa ereditano le sottoclassi? Traccia. Attributi, relazioni e vincoli della superclasse, che non si ridisegnano; possono avere proprietà aggiuntive. IS-A è riflessiva e transitiva.

Versione ripasso

Tipo Completezza Disgiunzione Esempio
partizione sì sì Persona ⊃ {Femmina, Maschio}
parziale esclusiva no sì Persona ⊃ {Studente, Docente}
totale sovrapposta sì no Persona ⊃ {Europeo, NonEuropeo}
parziale sovrapposta no no Persona ⊃ {Studente, Lavoratore}
  • Formule: IS-A ⇒I(e1)⊆I(e2)\Rightarrow I(e_1)\subseteq I(e_2); completa I(f1)∪⋯∪I(fn)=I(p)I(f_1)\cup\dots\cup I(f_n)=I(p); disgiunta I(fi)∩I(fj)=∅I(f_i)\cap I(f_j)=\emptyset. Istanza non valida: I(Persona)={p1,p2,s3}I(\text{Persona})=\{p_1,p_2,s_3\} e I(Studente)={s3,s4,s5}I(\text{Studente})=\{s_3,s_4,s_5\}.
  • Ereditarietà: attributi, relazioni (Persona (1,N) in Pratica vale anche per gli Studenti) e vincoli passano alle sottoclassi; IS-A transitiva (Erasmus ⊂ Studente ⊂ Persona).
  • Più generalizzazioni sulla stessa entità (sesso, occupazione): indipendenti.
  • Quando usarla: solo se le sottoclassi hanno proprietà proprie. Errori: Magazzino ⊃ {Grande, Piccolo} (valore derivato da mq e quantità), Menu del giorno IS-A Menu (stesso menu in giorni diversi, identificatore diverso).
  • Identificatori: interno = soli attributi (1,1), per esempio Auto(targa), Persona(nome, cognome, data_nascita); esterno = ruoli (1,1) di relazioni, con o senza attributi, per esempio Studente = Badge + ruolo verso Università (due studenti di università diverse hanno lo stesso badge: ammesso), Copia = numero + Libro, Camera = numero + Albergo.
  • Entità debole: identificata dall'esterno, partecipazione totale (1,1); non ogni dipendenza di esistenza lo è.
  • Scelta: identificatore minimale; il nome è un cattivo identificatore se non c'è garanzia di unicità (meglio un ID serial); talking attribute (CF, targa) leggibile ma legato al mondo esterno, serial stabile e compatto.

Esercizi su questo argomento

Teoria collegata