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 IS-A , allora in ogni istanza dello schema (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 sta in Studente e anche in Persona (non due oggetti collegati).
Istanze valide per Studente IS-A Persona:
| Valida? | ||
|---|---|---|
| sì | ||
| sì (anche uguali) | ||
| sì (sottoclasse vuota) | ||
| no: 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: . Valgono ereditarietà e vincoli. Due vincoli opzionali sulla generalizzazione:
| Vincolo | Significato | Formula |
|---|---|---|
| completezza (totale) | ogni istanza della superclasse appartiene ad almeno una sottoclasse | |
| disgiunzione (esclusiva) | ogni istanza della superclasse appartiene ad al più una sottoclasse |
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à definisce un identificatore: un insieme di proprietà (attributi o relazioni) che identifica univocamente tutte le istanze di . 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: (badge 9231, Padova), (badge 8845, Padova), (badge 9231, Milano). e 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.
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
- IS-A: (Insiemi e insieme delle partiCome si descrive un insieme, sottoinsiemi, uguaglianza, insieme delle parti e insiemi finiti e infiniti.Insiemi e insieme delle parti →); riflessiva, transitiva, non simmetrica; stesso oggetto nelle due estensioni.
- Ereditarietà: attributi, relazioni, vincoli della superclasse sono delle sottoclassi e non si ridisegnano.
- Generalizzazione: un criterio, più sottoclassi. Completa: . Disgiunta: . Quattro combinazioni; completa+disgiunta = partizione. Più generalizzazioni indipendenti sulla stessa entità.
- Quando usarla: sottoclassi con proprietà proprie; non per valori di un attributo (Grande/Piccolo) né per "menu del giorno".
- Identificatore: insieme di proprietà (almeno uno per entità). Interno: soli attributi (1,1). Esterno: ruoli (1,1) di relazioni, con o senza attributi (Studente = Badge + Università; Copia = numero + Libro). Entità debole: solo identificata dall'esterno.
- Scelta: minimale; nome come chiave solo se garantito unico, altrimenti ID serial.
- Errori tipici: ridisegnare nella sottoclasse un attributo ereditato; dire che IS-A è simmetrica; identificatore con ruoli non (1,1); usare un attributo (nome) non garantito come chiave.
- Collegamenti: 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 →, 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 →. Tabelle da ricordare.
| 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 ; completa ; disgiunta . Istanza non valida: e .
- 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
- Esercizio - Esempi di modellazione ER ed errori tipici (esempi ER del corso)
- Esercizio - Progettazione ER e schema relazionale della compagnia di treni (tema d'esame 17 giugno 2013)
- Esercizio - Progettazione ER e schema relazionale della mensa universitaria (tema d'esame 13 febbraio 2012)
- Esercizio - Progettazione ER e schema relazionale della pizzeria (tema d'esame 30 giugno 2025)
- Esercizio - Progettazione ER e schema relazionale delle formule scientifiche (tema d'esame 22 gennaio 2025)
- Esercizio - Progettazione ER e schema relazionale dello stabilimento balneare (tema d'esame 18 giugno 2012)
- Esercizio - Progettazione ER e schema relazionale dello streaming di musica (tema d'esame 12 febbraio 2024)