Modello entità-relazione - entità, relazioni e attributi
In questa pagina 6
Il modello entità-relazione (entity-relationship, ER, proposto da Chen nel 1976) è il modello della progettazione concettuale (Ciclo di vita di un sistema informativo e analisi dei requisitiIl ciclo di vita di un sistema informativo ha le fasi studio di fattibilità, analisi dei requisiti, progettazione (dei dati e delle applicazioni), sviluppo, collaudo, esercizio e manutenzione; il modello a cascata procede in sequenza, quello a spirale itera per versioni. I requisiti sono funzionali (che cosa fa il sistema), non funzionali (come lo fa, es. tempi) e vincoli aggiuntivi imposti dai committenti; si raccolgono da frasi in linguaggio naturale, documentazione e applicazioni esistenti e si analizzano con frasi filtrate e glossario dei dati. La progettazione di una base di dati ha tre fasi: concettuale (schema ER, indipendente dal DBMS), logica (schema relazionale, per una classe di DBMS, con il carico applicativo) e fisica (strutture del DBMS scelto). Un modello è un insieme di costrutti, lo schema è la rappresentazione del mini-mondo (livello intensionale), l'istanza sono i dati (livello estensionale); un buono schema è completo, corretto, minimale e leggibile.Ciclo di vita di un sistema informativo e analisi dei requisiti →). Questa nota presenta i costrutti di base e la loro semantica estensionale, cioè che cosa significa ogni costrutto sulle istanze, dato che da lì discendono gli errori tipici di modellazione. Cardinalità, ruoli e identificatori sono nelle note 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 → e Generalizzazioni e identificatori nel modello ERUna relazione IS-A tra superclasse e sottoclasse significa che ogni istanza della sottoclasse è anche istanza della superclasse (inclusione tra estensioni: riflessiva e transitiva, non simmetrica); vale il principio di ereditarietà: attributi, relazioni e vincoli della superclasse sono propri anche delle sottoclassi e non si ridisegnano. Una generalizzazione è una superclasse con più sottoclassi secondo un solo criterio, con due vincoli: completezza (ogni istanza della superclasse è in almeno una sottoclasse) e disgiunzione (in al più una); si hanno quattro combinazioni, e partizione se completa e disgiunta. Su una stessa entità possono esserci più generalizzazioni indipendenti con criteri diversi. L'identificatore di un'entità è un insieme di proprietà che identifica ogni istanza: interno se formato da soli attributi (1,1) dell'entità, esterno se contiene ruoli di relazioni (1,1) con altre entità (con eventuali attributi), come per l'entità debole; ogni entità ne ha almeno uno.Generalizzazioni e identificatori nel modello ER →.
I costrutti: entità, attributo (di entità), relazione, ruolo, attributo di relazione, generalizzazione, vincoli di identificazione, di cardinalità e altri vincoli. Un costrutto agisce sul livello dello schema (intensionale) e su quello delle istanze (estensionale).
Notazione in queste note. Il sito non disegna diagrammi, quindi uno schema ER si descrive con:
- una tabella entità → attributi (identificatore sottolineato; (0,1), (1,N), (0,N) tra parentesi se la cardinalità non è (1,1));
- una tabella relazione → entità con cardinalità (min,max) → attributi;
- le generalizzazioni in una riga, per esempio Persona ⊃ {Studente, Docente} (parziale, esclusiva).
Nel disegno a mano libera del corso: rettangolo = entità, rombo = relazione, pallino vuoto = attributo, pallino pieno = identificatore, freccia = IS-A.
Entità
Definizione (entità). Un'entità è una classe di oggetti del mondo reale (fatti, persone, cose) che esistono autonomamente e hanno proprietà comuni. Ha un nome univoco nello schema. Esempi: Studente, Veicolo, Corso, Dipartimento. Si costruisce con l'astrazione di classificazione.
Semantica estensionale. Ad ogni istanza dello schema, l'entità è associata a un insieme di oggetti , l'estensione di (Insiemi e insieme delle partiCome si descrive un insieme, sottoinsiemi, uguaglianza, insieme delle parti e insiemi finiti e infiniti.Insiemi e insieme delle parti →). Conseguenze:
- niente ripetizioni: lo stesso oggetto non compare due volte;
- niente ordinamento tra gli oggetti.
Un'istanza di entità non è un valore che identifica un oggetto, ma l'oggetto stesso: due studenti diversi con lo stesso nome sono due istanze distinte. Nello schema compaiono solo le entità, non le loro istanze.
Relazione
Definizione (relazione). Una relazione (o associazione) rappresenta un legame tra due o più entità; il numero di entità coinvolte è il grado. Ha un nome univoco nello schema. Si costruisce con l'astrazione di associazione. Esempi: Esame tra Studente e Corso (grado 2, binaria); Ordine tra Fornitore, Prodotto e Reparto (grado 3, ternaria, in generale n-aria se il grado è maggiore di 2).
Semantica estensionale. Una relazione binaria tra e è un sottoinsieme del prodotto cartesiano delle estensioni (Operazioni tra insiemiUnione, intersezione, differenza, complementare e prodotto cartesiano, con le leggi di De Morgan e il legame con la logica.Operazioni tra insiemi →):
Ogni coppia è un'istanza (occorrenza) della relazione. Per una relazione -aria tra si hanno -uple con e così via. Una relazione è dunque un insieme: la stessa coppia non può comparire due volte.
Il problema degli eventi ripetuti
Dalla semantica discende il caso che il corso ripete più volte. Lo studente sostiene l'esame del corso a gennaio (bocciato) e a febbraio (promosso). Con Esame(Studente, Corso) si ha una sola coppia : non si può modellare l'evento ripetuto. Anche con attributi Data e Voto sulla relazione non funziona: la coppia avrebbe due valori di Data, violando la semantica dell'attributo (un solo valore per istanza, vedi sotto). Soluzioni, tutte basate su una nuova entità che distingue gli eventi:
| Soluzione | Schema |
|---|---|
| terzo componente della relazione | Esame(Studente, Corso, Sessione) con attributo Voto; Sessione ha Data. Le istanze e sono distinte |
| entità al posto della relazione | entità Prova con le relazioni verso Studente e Corso |
Stesso schema per le multe: la relazione Multa(Persona, Violazione) ripetuta, per esempio persona che supera il limite di velocità due volte, si risolve con l'entità Verbale. E per gli acquisti: Ordine(Fornitore, Prodotto, Reparto) con più ordini uguali in date diverse richiede l'entità Fattura (numero, data, fornitore), con la quantità come attributo.
Attenzione alle relazioni binarie
Due relazioni non si collegano direttamente. Se Esame lega Studente, Corso e Sessione e si aggiunge una relazione Prenota tra Studente e Sessione, nessun costrutto dice che "si può sostenere l'esame solo se si è prenotati": è un vincolo esterno sulle istanze ().
Relazioni ternarie
Un'istanza di una relazione ternaria è una tripla completa. In Docenza(Relatore, Corso, Argomento), anche se la partecipazione di Argomento è opzionale, non può esistere una tripla senza Argomento: non si può dire "Rossi terrà il corso di Basi di Dati, ma gli argomenti non sono ancora fissati". Si risolve con una relazione binaria Assegnato(Relatore, Corso) e la ternaria Docenza collegata, con vincolo esterno: ogni coppia di Docenza compare in Assegnato.
Attributo
Definizione (attributo di entità). Un attributo di un'entità è una proprietà locale dell'entità, rilevante per l'applicazione: associa ad ogni istanza un valore di un insieme detto dominio. Si costruisce con l'astrazione di aggregazione. Nello schema il dominio è di norma omesso e riportato nel dizionario dei dati.
Semantica estensionale. Un attributo dell'entità su dominio è una funzione totale (Funzioni - definizione, dominio e graficoUna funzione associa a ogni elemento del dominio un solo valore: dominio naturale, grafico, immagine, antimmagine e metodo grafico.Funzioni - definizione, dominio e grafico →). Ad ogni istanza esiste un solo valore. Per esempio .
Esempio: Studente ha Nome (stringa), Cognome (stringa), Età (intero).
Il valore NULL
Se per un'istanza un valore non esiste ma la definizione dell'attributo lo richiede, si usa il valore speciale NULL, che non appartiene al dominio. Non si usano valori "inutilizzati" (es. -1 come età) perché possono non esistere, cambiare nel tempo, devono essere trattati come casi speciali nelle applicazioni e sono diversi per ogni dominio. Significati di NULL, tre tipi diversi:
| Significato | Esempio (entità Persona) |
|---|---|
| valore non definito: un valore appropriato non esiste | Titolo di laurea magistrale per chi non ha frequentato l'università |
| valore non disponibile: esiste ma non si conosce ora | Età di una persona |
| valore sconosciuto: può esistere oppure no | Telefono di casa |
Attributi composti
Attributo di relazione
Definizione (attributo di relazione). Un attributo di una relazione modella una proprietà non di una sola entità, ma dell'associazione tra le entità; è una funzione totale dalle istanze di ai valori di un dominio.
Esempio: in Esame(Studente, Corso), il Voto non è né dello studente né del corso, ma della coppia: . Per una relazione ternaria: Ordine.Quantità sulla tripla . Vale la regola: una sola coppia un solo voto (da cui il problema dei ripetuti).
Entità o attributo?
Una scelta frequente. Criterio: le istanze del concetto sono indipendenti tra loro? Interessano altre loro proprietà o collegamenti?
- Città come attributo di Persona (stringa). Due persone con città "Padova" hanno due stringhe uguali: l'uguaglianza è per corrispondenza esatta, fragile (Padova, PADOVA, Padua...). Se interessa anche la Regione, Città diventa entità con Nome e Regione, e la relazione Vive collega Persona e Città (due persone con la stessa città puntano alla stessa istanza).
- Durante un'iterazione con gli stakeholder può emergere che interessa anche la città di un Dipartimento: Città passa da attributo a entità, riusata da Persona e Dipartimento. Il concetto è diventato rilevante.
- Non convertire entità in relazioni. Rappresentare Persona-Età o Persona-Nome come relazioni verso entità Età e Nome è sbagliato: () non va trasformato in una relazione.
Regola pratica: attributo se è una proprietà semplice senza vita propria; entità se ha attributi suoi, partecipa ad altre relazioni o può essere condivisa da più oggetti.
Documentazione di uno schema ER
Oltre al diagramma, lo schema concettuale è documentato dal dizionario dei dati (data dictionary), un insieme di tabelle che descrivono:
| Entità | Descrizione | Attributi (nome, dominio, descrizione) | Identificatori |
|---|---|---|---|
| Studente | persona iscritta all'ateneo | matricola (intero), nome (stringa), cognome (stringa) | matricola |
| Relazione | Descrizione | Entità coinvolte | Attributi |
|---|---|---|---|
| Esame | prova sostenuta in una sessione | Studente, Corso, Sessione | voto (intero) |
Si aggiunge la tabella dei vincoli esterni, scritti in notazione matematica o in frasi non ambigue (esempio: "Un esame si può registrare solo se lo studente era prenotato").
| Relazione | Entità (min,max) | Attributi |
|---|---|---|
| Scrive | Autore (0,N), Libro (1,N) | |
| Possiede | Libro (0,N), Copia (1,1) | |
| Riguarda | Prestito (1,1), Copia (0,N) | |
| Effettua | Prestito (1,1), Iscritto (0,N) |
Prestito è un'entità (non una relazione Iscritto-Copia) perché un iscritto può prendere in prestito più volte la stessa copia: è esattamente il caso degli eventi ripetuti. Vincolo esterno: nessun iscritto tiene una copia più di 30 giorni.
Domande d'esame
1. Perché in una relazione Esame(Studente, Corso) non si può registrare uno studente che sostiene lo stesso esame due volte? Come si risolve? Traccia. Una relazione è un insieme di coppie (sottoinsieme del prodotto cartesiano), quindi la coppia compare una volta sola e un attributo Data avrebbe due valori. Si introduce un'entità che distingue gli eventi (Sessione, come terza componente della relazione, o Prova), con il Voto come attributo.
2. Quando una Città va modellata come entità e non come attributo? Traccia. Quando interessano altre sue proprietà (Regione) o è condivisa da più concetti (Persona, Dipartimento): le stringhe uguali sono diverse istanze, l'entità ha un'unica istanza per città.
3. Che cosa significa NULL e quali sono le sue interpretazioni? Traccia. Valore speciale fuori dal dominio, per l'informazione mancante: non definito (non esiste), non disponibile (esiste ma non noto), sconosciuto (può esistere o no). Si evitano valori sentinella perché dipendono dal dominio e vanno trattati a mano.
Versione ripasso
- Entità: classe di oggetti autonomi. Estensione = insieme (niente ripetizioni, niente ordine); un'istanza è l'oggetto, non il valore che lo identifica.
- Relazione: associazione tra entità, grado = numero di entità (2 binaria, >2 n-aria). Estensione (Operazioni tra insiemiUnione, intersezione, differenza, complementare e prodotto cartesiano, con le leggi di De Morgan e il legame con la logica.Operazioni tra insiemi →): la stessa coppia non compare due volte.
- Eventi ripetuti: Esame(Studente, Corso) non basta; si aggiunge un'entità (Sessione, Prova, Verbale, Fattura) come terza componente o al posto della relazione.
- Due relazioni non si collegano: il legame (es. prenotato → esame) è un vincolo esterno.
- Relazione ternaria: la tripla deve avere tutte le componenti; "corso senza argomento" non si rappresenta (usare Assegnato più vincolo esterno).
- Attributo: funzione totale (Funzioni - definizione, dominio e graficoUna funzione associa a ogni elemento del dominio un solo valore: dominio naturale, grafico, immagine, antimmagine e metodo grafico.Funzioni - definizione, dominio e grafico →); un solo valore per istanza. NULL: fuori dal dominio, significa non definito, non disponibile o sconosciuto. Composto: più componenti (Via, Numero, CAP). Attributo di relazione: proprietà dell'associazione (Voto di Esame).
- Entità o attributo: entità se ha proprietà proprie, è condivisa o ha legami; attributo se è un dato semplice. Mai trasformare entità in relazioni.
- Documentazione: diagramma più dizionario dei dati (entità, relazioni, attributi con dominio, vincoli esterni).
- Errori tipici: usare una relazione per eventi ripetuti; mettere un attributo derivabile (età) invece della data; scrivere una città come stringa quando serve la regione; dimenticare i vincoli esterni.
- Collegamenti: 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 →, Generalizzazioni e identificatori nel modello ERUna relazione IS-A tra superclasse e sottoclasse significa che ogni istanza della sottoclasse è anche istanza della superclasse (inclusione tra estensioni: riflessiva e transitiva, non simmetrica); vale il principio di ereditarietà: attributi, relazioni e vincoli della superclasse sono propri anche delle sottoclassi e non si ridisegnano. Una generalizzazione è una superclasse con più sottoclassi secondo un solo criterio, con due vincoli: completezza (ogni istanza della superclasse è in almeno una sottoclasse) e disgiunzione (in al più una); si hanno quattro combinazioni, e partizione se completa e disgiunta. Su una stessa entità possono esserci più generalizzazioni indipendenti con criteri diversi. L'identificatore di un'entità è un insieme di proprietà che identifica ogni istanza: interno se formato da soli attributi (1,1) dell'entità, esterno se contiene ruoli di relazioni (1,1) con altre entità (con eventuali attributi), come per l'entità debole; ogni entità ne ha almeno uno.Generalizzazioni e identificatori nel modello ER →. Formule e tabelle da ricordare.
| Costrutto | Estensione |
|---|---|
| entità | insieme di oggetti |
| relazione binaria tra e | , per esempio |
| relazione -aria | insieme di -uple con ruoli |
| attributo di entità | funzione totale , un solo valore per istanza |
| attributo di relazione | funzione totale , per esempio |
- Eventi ripetuti: Esame(Studente, Corso) con due date per non regge. Soluzioni: terza componente Sessione (Esame(Studente, Corso, Sessione) con Voto), oppure entità al posto della relazione. Analoghi: Verbale per le multe, Fattura per gli ordini.
- NULL: non appartiene al dominio; non definito (titolo di laurea magistrale per chi non ha studiato), non disponibile (età), sconosciuto (telefono di casa).
- Ternaria: la tripla ha tutte le componenti. Docenza(Relatore, Corso, Argomento) non ammette : si aggiunge Assegnato(Relatore, Corso) e il vincolo esterno "ogni coppia di Docenza è in Assegnato".
- Due relazioni non si collegano: "si sostiene l'esame solo se prenotati" è il vincolo .
- Entità o attributo: città come stringa → uguaglianza testuale; come entità (nome, regione) e relazione Vive, due persone puntano alla stessa istanza. Persona-Età, Persona-Nome come relazioni = errore.
- Dizionario dei dati: tabelle Entità (nome, descrizione, attributi con dominio, identificatori), Relazioni (nome, descrizione, entità coinvolte, attributi), Vincoli esterni.
- Biblioteca: Iscritto(codice), Libro(ISBN), Autore, Copia (identificata da inventario + libro), Prestito(id, data); Scrive (0,N)-(1,N), Possiede Libro (0,N)-Copia (1,1), Riguarda Prestito (1,1)-Copia (0,N), Effettua Prestito (1,1)-Iscritto (0,N). Prestito è entità perché lo stesso iscritto riprende la stessa copia.
Esercizi su questo argomento
- Esercizio - Esempi di modellazione ER ed errori tipici (esempi ER del corso)
- Esercizio - Progettazione ER e schema relazionale del social network (esercizio social e laboratorio)
- 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)
- Esercizio - Traduzione da ER a relazionale - dodici casi (esercizi di traduzione del corso)
Teoria collegata
- Ciclo di vita di un sistema informativo e analisi dei requisiti
- Generalizzazioni e identificatori nel modello ER
- Modello relazionale - relazioni, chiavi e vincoli
- Relazioni ricorsive, cardinalità e vincoli di integrità nel modello ER
- Ristrutturazione dello schema ER e traduzione nel modello relazionale
- Web semantico - RDF, linked open data e SPARQL