Salta al contenuto
Note per Studenti Esercizio - Esempi di modellazione ER ed errori tipici (esempi ER del corso)

Esercizio - Esempi di modellazione ER ed errori tipici (esempi ER del corso)

In questa pagina 6

Testo (esempi di modellazione ER svolti a lezione nel corso di Basi di Dati, Ing. Informatica UniPD: introduzione, eventi ripetuti, scelta tra attributo ed entità, cardinalità, relazioni ricorsive). Per ogni situazione si giudica il modello proposto, in base alla semantica estensionale (entità = insieme di oggetti, relazione = insieme di tuple, attributo = funzione). Teoria: 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 →, 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 →.

Notazione: ogni caso riporta l'idea del disegno come "entità — relazione — entità" con le cardinalità (min⁡,max⁡)(\min,\max) accanto all'entità.

A. Istanze, insiemi e eventi ripetuti

A1. Studente — Esame — Corso con Data e Voto sulla relazione. s1s_1 sostiene c1c_1 il 20/02/2020 (voto 18) e il 10/03/2020 (voto 25). La relazione è l'insieme {(s1,c1)}\{(s_1,c_1)\}: la stessa coppia non compare due volte, e l'attributo avrebbe due valori per una sola istanza (non ammesso: l'attributo è una funzione). Soluzione: entità Sessione (con Data) e ternaria Esame(Studente, Corso, Sessione) con Voto: le istanze (s1,c1,sess1)(s_1,c_1,\mathrm{sess}_1) e (s1,c1,sess2)(s_1,c_1,\mathrm{sess}_2) sono diverse e ognuna ha il suo voto.

A2. Persona — Multa — Violazione. p1p_1 supera due volte i limiti: serve un'entità Verbale (con dati propri) e la ternaria Multa(Persona, Violazione, Verbale). Stesso schema dell'esame ripetuto.

A3. Fornitore — Ordine — Prodotto — Reparto con Data sulla relazione. Lo stesso fornitore consegna lo stesso prodotto allo stesso reparto in date diverse: la tripla è unica. Si introduce l'entità Fattura (numero, data, fornitore) collegata a Ordine, e la quantità resta un attributo di Ordine; le triple (s1,p1,d1,i1)(s_1,p_1,d_1,i_1) e (s1,p1,d1,i2)(s_1,p_1,d_1,i_2) sono distinte. Una fattura con più righe (Prodotto 1: 10, Prodotto 2: 20, Prodotto 3: 30) contiene più istanze della relazione Ordine.

A4. Nessun collegamento diretto tra due relazioni. Studente — Esame — Corso con Sessione, e una relazione Prenota(Studente, Sessione): il diagramma non dice che "un esame si può sostenere solo se si è prenotati". È un vincolo esterno: ∀(si,cj,uk)∈I(Esame), ∃(si,cj,uk)∈I(Prenota)\forall(s_i,c_j,u_k)\in I(\text{Esame}),\ \exists(s_i,c_j,u_k)\in I(\text{Prenota}). Non si cerca di collegare le relazioni nel disegno.

B. Entità o attributo

B1. Città come attributo di Persona. Sbagliato quando interessa anche la regione: P1.Cittaˋ=P_1.\text{Città}="Padova" e P2.Cittaˋ=P_2.\text{Città}="Padova" sono stringhe uguali, e l'uguaglianza è per corrispondenza esatta (fragile). Corretto: entità Città (nome, regione), relazione Vive: due persone puntano alla stessa istanza.

B2. Iterazione con gli stakeholder. Persona (Nome, Cognome, Città attributo) e Dipartimento (Nome, Budget). Emerge che interessa anche la città del dipartimento: Città passa da attributo a entità condivisa da Persona e Dipartimento. Il concetto è diventato rilevante.

B3. Entità trasformate in relazioni. Persona con Nome, Età e Città come entità collegate da relazioni ("Persona — Nome — Stringa"): sbagliato. Non si convertono entità in relazioni (le istanze (Stefano,55,Padova)(\text{Stefano},55,\text{Padova}) non sono legami).

B4. Direttore e Progetto fusi in una sola entità. Tentativo: Direttore e Progetto collegati da Dirige (1,1)-(1,1), entrambi con le loro relazioni (Vive verso Città, Appartiene verso Dipartimento). Se si fondono in un'unica entità (Progetto con attributo Direttore, o Direttore con attributo Progetto), non si distingue più se il direttore vive in una città diversa o appartiene a un dipartimento diverso: cattiva modellazione.

C. Cardinalità

C1. Persona — Lavora — Azienda. Una persona lavora per una sola azienda, in un'azienda lavorano molte persone: uno-a-molti, Persona (0,1) o (1,1), Azienda (0,N). Con le cardinalità scambiate (Persona (0,N), Azienda (0,1)) si direbbe che un'azienda ha al più una persona: sbagliato.

C2. Cardinalità e semantica estensionale. Studente (0,N) — Esame — Corso (0,N) con I(Studente)={s1,s2,s3}I(\text{Studente})=\{s_1,s_2,s_3\}, I(Corso)={c1,c2}I(\text{Corso})=\{c_1,c_2\}. Se si impone (0,1) lato Studente (al più un esame) non si può avere (s1,c1)(s_1,c_1) e (s1,c2)(s_1,c_2). Un (1,1) richiederebbe che ogni studente abbia un esame. Le cardinalità non permettono di violare le regole estensionali: la coppia (s1,c1)(s_1,c_1) resta unica.

C3. Ternaria con partecipazione opzionale. Docenza(Relatore (1,N), Corso (1,N), Argomento (0,N)). Anche se Argomento è opzionale non esiste l'istanza (s,c,∙)(s,c,\bullet): non si può dire "Rossi insegnerà Basi di Dati ma gli argomenti non sono fissati". Soluzione: relazione binaria Assegnato(Relatore, Corso) più la ternaria Docenza, con vincolo esterno "ogni coppia di Docenza compare in Assegnato".

C4. Classificazione. Uno-a-uno: Impiegato (0,1) — Dirige — Progetto (1,1); Direttore (1,1) — Dirige — Dipartimento (1,1); Impiegato (0,1) — Parcheggia — Posto (0,1). Uno-a-molti: Persona (0,1) — Lavora — Azienda (1,N); Persona (1,1) — Nasce — Città (0,N); Città (1,1) — Appartiene — Provincia (1,N). Molti-a-molti: Studente (0,N)-(0,N) Corso; Montagna (0,N) — Scalata — Alpinista (1,N); Conducente (1,N) — Patente — Treno (1,N).

D. Relazioni ricorsive

D1. Catena (Re). Re — Successione (ruoli Predecessore, Successore). Con cardinalità (0,1)-(0,1) si ottengono catene k1→k2→k3→k4k_1\to k_2\to k_3\to k_4. Le coppie sono etichettate: (k1,k2)≠(k2,k1)(k_1,k_2)\ne(k_2,k_1). Cappi (k1,k1)(k_1,k_1) e cicli (k1,k2),(k2,k1)(k_1,k_2),(k_2,k_1) non sono esclusi dalle cardinalità: vincolo esterno. Sdoppiare il Re in due entità (Predecessore e Successore) non è equivalente: {k1,k2,k3}\{k_1,k_2,k_3\} e {k2,k3,k4}\{k_2,k_3,k_4\} si sovrappongono.

D2. Grafo con Sorgente e Destinazione.

Cardinalità (Sorgente, Destinazione) Che cosa si rappresenta
(1,1), (0,1) ogni nodo ha un arco uscente: catene o cicli; (1,1) implica partecipazione obbligatoria e il nodo m4m_4 senza successore non è ammesso
(0,N), (0,1) albero: ogni nodo ha al più un padre; (m1,m3)(m_1,m_3) e (m2,m4)(m_2,m_4) ok, un nodo con due padri no (multigrafo non ammesso)
(0,N), (0,N) grafo diretto generico: cicli e nodi con più entranti ammessi

D3. Multigrafo etichettato. Archi tra gli stessi nodi con colori diversi: ternaria Arco(Sorgente: Nodo, Destinazione: Nodo, Colore: Etichetta). Istanze (m1,m2,verde)(m_1,m_2,\text{verde}), (m1,m2,viola)(m_1,m_2,\text{viola}). Tutte (0,N). Un'istanza senza etichetta non è ammessa: non si possono saltare le etichette. Con un'unica relazione binaria un multigrafo non si rappresenta.

D4. Social e commenti. Utente segue Utente (Follower (0,N), Followed (0,N)); Commento risponde a Commento (Commento_Origine (0,N), Commento_Risposta (0,1)): albero di risposte. Vedi Esercizio - Progettazione ER e schema relazionale del social network (esercizio social e laboratorio).

E. Altro

E1. Menù del giorno e semantica estensionale. "Menù del giorno" come sottoclasse di "Menu" è sbagliato (ogni menù del giorno sarebbe un menù con lo stesso identificatore, ma il menù del giorno dipende anche dalla data): serve un'entità con identificatore esterno. Vedi Esercizio - Progettazione ER e schema relazionale della mensa universitaria (tema d'esame 13 febbraio 2012).

E2. Generalizzazione sbagliata. Magazzino ⊃ {Grande, Piccolo}: Grande e Piccolo non hanno proprietà proprie, sono un valore derivabile da metri quadri e quantità massima. Non si usa la specializzazione per rappresentare un valore di un attributo.

Domande d'esame

La cardinalità di una relazione può far ripetere due volte la stessa coppia? Traccia. No: le istanze di una relazione sono un insieme, quindi la coppia compare una sola volta; le cardinalità limitano solo quante coppie distinte coinvolgono un'istanza. Per ripetere un evento serve una nuova entità (sessione, verbale, fattura).

Come si distingue una catena da un albero da un grafo con le cardinalità di una relazione ricorsiva? Traccia. Catena: (0,1) su entrambi i ruoli; albero: padre (0,N) e figlio (0,1); grafo diretto: (0,N) su entrambi. Cappi, cicli e simmetria richiedono vincoli esterni; i multigrafi una terza entità (etichetta).

Versione ripasso

Caso Errore Correzione
Esame con Data e Voto un valore solo per (s1,c1)(s_1,c_1) Sessione come terza componente
Fornitore-Prodotto-Reparto con Data tripla unica entità Fattura (numero, data, fornitore)
prenotazione obbligatoria per l'esame collegare due relazioni vincolo esterno su I(Esame)I(\text{Esame}) e I(Prenota)I(\text{Prenota})
Città stringa uguaglianza testuale entità Città (nome, regione)
Persona-Nome come relazione entità trasformate in relazioni attributo
Direttore e Progetto fusi non si distingue città e dipartimento entità separate
Persona (0,N) - Azienda (0,1) lati scambiati Persona (0,1), Azienda (0,N)
Docenza con Argomento (0,N) tripla incompleta impossibile Assegnato più vincolo esterno
Re con Pred e Succ (1,1) nessun primo né ultimo (0,1)-(0,1)
archi paralleli binaria ricorsiva ternaria con etichetta
Magazzino ⊃ {Grande, Piccolo} valore, non concetto niente generalizzazione
Menu del giorno IS-A Menu stesso menù in più giorni entità con identificatore esterno
  • Strutture ricorsive: catena (0,1)-(0,1); albero Sorgente (0,N), Destinazione (0,1), per esempio (m1,m3),(m2,m4)(m_1,m_3),(m_2,m_4) con m4m_4 a due padri vietato; grafo (0,N)-(0,N); in tutti, cappi e cicli vanno vietati con vincoli esterni.
  • Classificazione: uno-a-uno Impiegato (0,1) - Dirige - Progetto (1,1); uno-a-molti Persona (1,1) - Nasce - Città (0,N); molti-a-molti Montagna (0,N) - Scalata - Alpinista (1,N).
  • Regola generale: una relazione è un insieme, un attributo una funzione, un'entità un insieme di oggetti: ogni modello che viola una di queste regole va corretto aggiungendo un'entità.

Teoria collegata