Salta al contenuto
Note per Studenti Modello entità-relazione - entità, relazioni e attributi

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 ii dello schema, l'entità ee è associata a un insieme di oggetti I(i,e)={e1,…,en}I(i,e)=\{e_1,\dots,e_n\}, l'estensione di ee (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:

  1. niente ripetizioni: lo stesso oggetto non compare due volte;
  2. 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 rr tra ee e ff è 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 →):

I(i,r)⊆I(i,e)×I(i,f),I(i,Esame)={(s1,c1),(s1,c2),(s3,c2)}.I(i,r)\subseteq I(i,e)\times I(i,f),\qquad I(i,\text{Esame})=\{(s_1,c_1),(s_1,c_2),(s_3,c_2)\}.

Ogni coppia è un'istanza (occorrenza) della relazione. Per una relazione nn-aria rr tra e1,…,ene_1,\dots,e_n si hanno nn-uple (e1,i,…,en,h)(e_{1,i},\dots,e_{n,h}) con e1,i∈I(e1)e_{1,i}\in I(e_1) 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 s1s_1 sostiene l'esame del corso c1c_1 a gennaio (bocciato) e a febbraio (promosso). Con Esame(Studente, Corso) si ha una sola coppia (s1,c1)(s_1,c_1): non si può modellare l'evento ripetuto. Anche con attributi Data e Voto sulla relazione non funziona: la coppia (s1,c1)(s_1,c_1) 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 (s1,c1,gen)(s_1,c_1,\text{gen}) e (s1,c1,feb)(s_1,c_1,\text{feb}) 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 p1p_1 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 (∀(s,c,u)∈I(Esame)  ∃(s,c,u)∈I(Prenota)\forall (s,c,u)\in I(\text{Esame})\;\exists (s,c,u)\in I(\text{Prenota})).

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 aa dell'entità ee su dominio DD è una funzione totale a:I(e)→Da: I(e)\to D (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 I(Studente.Etaˋ)={(s1,21),(s2,20),(s3,20)}I(\text{Studente.Età})=\{(s_1,21),(s_2,20),(s_3,20)\}.

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

Un attributo può avere un dominio composto: per esempio Indirizzo = (Via, Numero, CAP) per Studente. Nella traduzione si ristruttura (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 →).

Attributo di relazione

Definizione (attributo di relazione). Un attributo di una relazione rr modella una proprietà non di una sola entità, ma dell'associazione tra le entità; è una funzione totale dalle istanze di rr ai valori di un dominio.

Esempio: in Esame(Studente, Corso), il Voto non è né dello studente né del corso, ma della coppia: I(Esame.Voto)={((s1,c1),21),((s1,c2),20),((s3,c2),20)}I(\text{Esame.Voto})=\{((s_1,c_1),21),((s_1,c_2),20),((s_3,c_2),20)\}. Per una relazione ternaria: Ordine.Quantità sulla tripla (s1,p1,d1)(s_1,p_1,d_1). Vale la regola: una sola coppia ⇒\Rightarrow 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: (Stefano, 55, Padova\text{Stefano},\,55,\,\text{Padova}) 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").

Esempio completo. Biblioteca (requisiti dell'esempio di 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 →):

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 (s,c)(s,c) 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

Costrutto Estensione
entità ee I(i,e)={e1,…,en}I(i,e)=\{e_1,\dots,e_n\} insieme di oggetti
relazione binaria rr tra ee e ff I(i,r)⊆I(i,e)×I(i,f)I(i,r)\subseteq I(i,e)\times I(i,f), per esempio {(s1,c1),(s1,c2),(s3,c2)}\{(s_1,c_1),(s_1,c_2),(s_3,c_2)\}
relazione nn-aria insieme di nn-uple con ruoli (u1 ⁣: ⁣e1,…,un ⁣: ⁣en)(u_1\!:\!e_1,\dots,u_n\!:\!e_n)
attributo di entità funzione totale a:I(e)→Da: I(e)\to D, un solo valore per istanza
attributo di relazione funzione totale a:I(r)→Da: I(r)\to D, per esempio ((s1,c1),21)((s_1,c_1),21)
  • Eventi ripetuti: Esame(Studente, Corso) con due date per (s1,c1)(s_1,c_1) 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 (s,c,∙)(s,c,\bullet): 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 ∀(s,c,u)∈I(Esame) ∃(s,c,u)∈I(Prenota)\forall(s,c,u)\in I(\text{Esame})\ \exists(s,c,u)\in I(\text{Prenota}).
  • 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

Teoria collegata