Come si modella la realtà con lo schema E/R - Esempio noleggio e-bike e monopattini | Prof. Giagnotti
BASI DI DATI • PROGETTAZIONE CONCETTUALE

Come si modella la realtà con lo schema E/R - Esempio Festival Musicale Estivo

Un caso di studio completo per passare dal testo in linguaggio naturale allo schema E/R: entità, associazioni, attributi, molteplicità e regole di lettura.

⚡ Livello: Intermedio ⏱ 25 min 🧩 E/R + Ipotesi
Docente Prof. Giagnotti • Corso Tecnico 2026 • Modulo Basi di Dati
Obiettivi di apprendimento
  1. Trasformare un testo discorsivo in entità e associazioni.
  2. Riconoscere quando un concetto è entità e non attributo.
  3. Assegnare correttamente molteplicità (0,n) (1,n) (1,1) (0,1).
  4. Gestire ipotesi aggiuntive e attributi non espliciti.
  5. Leggere lo schema ad alta voce per validarlo.

1. Scenario in linguaggio naturale

Un comune organizza ogni estate un Festival Musicale che dura due settimane. L'organizzazione vuole gestire la programmazione dei concerti e la vendita dei biglietti.

Per ogni ARTISTA si vuole conoscere il nome d'arte e il genere musicale. Ogni artista partecipa ad almeno un evento durante il festival, ma può esibirsi in più serate.

Il festival dispone di alcuni PALCHI. Ogni palco ha un nome identificativo (es. Main Stage) e una capienza massima di pubblico. Un palco ospita più eventi durante il festival, ma un evento si svolge su un unico palco.

Ogni EVENTO è identificato da un codice evento e si caratterizza per data, ora inizio e ora fine. In uno stesso giorno possono esserci più eventi su palchi diversi.

I BIGLIETTI sono emessi per i singoli eventi. Ogni biglietto ha un codice univoco, un prezzo e una tipologia (Intero, Ridotto, VIP). Un biglietto è valido per un solo evento, ma un evento può avere migliaia di biglietti emessi, anche di tipologie diverse.

Gli SPETTATORI acquistano i biglietti. Di uno spettatore interessano nome, cognome, email. Uno spettatore può acquistare più biglietti, anche per eventi diversi, ma un biglietto è acquistato da un solo spettatore. Al momento dell'acquisto si registra data e ora di acquisto.

Infine, un gruppo di TECNICI audio/luci assicura il funzionamento dei palchi. Ogni tecnico ha matricola, specializzazione (Audio, Luci, Video) e telefono. Un tecnico è assegnato a un solo palco per tutta la durata del festival, mentre un palco può avere più tecnici assegnati. Si vuole tenere traccia del ruolo svolto (Fonico, Elettricista, Operatore).

Dritta docente - cosa noti?

Lo scenario non dice esplicitamente: cosa succede se un artista salta? Un palco può rimanere vuoto un giorno? Un biglietto può restare invenduto? Sono ipotesi che devi esplicitare tu per giustificare le molteplicità.

2. Analisi preliminare - i sostantivi e i verbi

Sostantivi candidati entità: ARTISTA, PALCO, EVENTO, BIGLIETTO, SPETTATORE, TECNICO. Tutti hanno esistenza autonoma e attributi propri.

Verbi candidati associazioni: esibisce (ARTISTA-EVENTO), ospita (PALCO-EVENTO), valido_per (BIGLIETTO-EVENTO), acquista (SPETTATORE-BIGLIETTO), assegnato_a (TECNICO-PALCO).

Metodo dei 4 filtri per entità

1) Ha un identificatore? 2) Ha almeno 2 attributi propri? 3) Ha una vita autonoma? 4) Partecipa ad almeno una associazione? Se sì a 3 su 4 → è entità. BIGLIETTO supera tutti i filtri, non è un attributo di EVENTO.

3. Le entità e gli identificatori

EntitàIdentificatoreAttributi principaliNote / Ipotesi
ARTISTAid_artistanome_arte, generenome_arte non univoco
PALCOid_palconome, capienzacapienza >0
EVENTOcod_eventodata, ora_inizio, ora_fineora_fine > ora_inizio
BIGLIETTOcod_bigliettoprezzo, tipologia {Intero,Ridotto,VIP}tipologia dominio chiuso
SPETTATOREid_spettatorenome, cognome, emailemail può essere identificatore alternativo
TECNICOmatricolaspecializzazione, telefonospecializzazione {Audio,Luci,Video}

4. Le associazioni individuate

AssociazioneTraSignificato
ESIBIZIONEARTISTA - EVENTOQuale artista si esibisce in quale evento
OSPITAPALCO - EVENTOQuale palco ospita l'evento
VALIDO_PERBIGLIETTO - EVENTOPer quale evento è valido il biglietto
ACQUISTOSPETTATORE - BIGLIETTOChi acquista il biglietto, con data_ora_acquisto
ASSEGNAZIONETECNICO - PALCOQuale tecnico è assegnato a quale palco, con ruolo
Perché 5 associazioni e non 3?

ACQUISTO e VALIDO_PER sembrano ridondanti ma non lo sono: un biglietto esiste anche invenduto, quindi deve essere legato a EVENTO indipendentemente da SPETTATORE. Se unissi tutto in SPETTATORE-EVENTO perderesti prezzo e tipologia.

5. Attributi delle entità e delle associazioni

Alcuni attributi non erano espliciti nello scenario e vanno ipotizzati:

  • ESIBIZIONE: cachet (compenso artista per quell'evento) - opzionale, ma utile.
  • ACQUISTO: data_ora_acquisto - è l'unico attributo che descrive l'evento di acquisto, non può stare in SPETTATORE né in BIGLIETTO.
  • ASSEGNAZIONE: ruolo_svolto {Fonico, Elettricista, Operatore} - attributo dell'assegnazione, non del tecnico (un tecnico può fare ruoli diversi su palchi diversi? Ipotesi: no, nel festival è fisso).
⚠️ Errore tipico

Mettere data_ora_acquisto in SPETTATORE: se uno spettatore compra 3 biglietti in momenti diversi, dove metti le 3 date? Deve stare sull'associazione ACQUISTO.

6. Molteplicità e cardinalità - il cuore del modello

Qui si decide la semantica. Dichiara sempre le ipotesi:

AssociazioneLato ALato BIpotesi giustificata
ESIBIZIONEARTISTA (1,n) - (1,n) EVENTOM:NIpotesi: un artista deve avere almeno 1 evento (1,n), un evento ha almeno 1 artista (1,n). Se un evento potesse essere annullato → (0,n) lato ARTISTA? Noi scegliamo (1,n) perché festival pubblicato.
OSPITAPALCO (0,n) - (1,1) EVENTO1:NUn palco può rimanere libero un giorno (0,n), un evento deve avere esattamente 1 palco (1,1).
VALIDO_PERBIGLIETTO (1,1) - (0,n) EVENTO1:NOgni biglietto deve riferirsi a 1 evento (1,1), un evento può avere 0 biglietti emessi all'inizio (0,n) poi migliaia.
ACQUISTOSPETTATORE (0,n) - (0,1) BIGLIETTO1:NSpettatore registrato può non aver ancora acquistato (0,n). Biglietto può rimanere invenduto (0,1) prima della vendita. Dopo vendita diventa (1,1) ma modelliamo 0,1 per gestire invenduto.
ASSEGNAZIONETECNICO (1,1) - (0,n) PALCO1:NOgni tecnico assegnato a esattamente 1 palco (1,1). Un palco può avere 0 tecnici? No, ipotesi festival: almeno 1, ma per sicurezza modelliamo (0,n) per permettere palco appena creato senza tecnici. Meglio (1,n) se vincolo stretto. Qui scegliamo (1,n) per realtà: vedi nota sotto.
💬 Ipotesi critica su ASSEGNAZIONE

Ho scritto (0,n) per PALCO ma in una versione più restrittiva potresti mettere (1,n): ogni palco deve avere almeno un tecnico. Entrambe sono accettabili SE giustifichi. In verifica scrivi: Ipotizzo che un palco possa esistere senza tecnici solo in fase di allestimento iniziale, quindi (0,n), altrimenti (1,n).

Correzione finale scelta: Per coerenza con testo "un palco può avere più tecnici assegnati" e non dice obbligatorio, ma per sicurezza festival manteniamo PALCO (1,n) - TECNICO (1,1). Così un tecnico ha un palco, un palco ha almeno un tecnico. Biglietto invenduto giustifica (0,1).

Quindi tabella finale pulita per disegno:

  • ARTISTA (1,n) - (1,n) EVENTO
  • PALCO (1,n) - (1,1) EVENTO [ogni evento 1 palco, ogni palco almeno 1 evento]
  • EVENTO (0,n) - (1,1) BIGLIETTO [ogni biglietto 1 evento]
  • SPETTATORE (0,n) - (0,1) BIGLIETTO [biglietto può essere invenduto]
  • PALCO (1,n) - (1,1) TECNICO [tecnico 1 palco]

7. Regole di lettura e vincoli

  • Un artista si esibisce in uno o più eventi, un evento prevede uno o più artisti.
  • Un palco ospita uno o più eventi, ogni evento è ospitato da un solo palco.
  • Un evento ha zero o più biglietti, ogni biglietto è valido per un solo evento.
  • Uno spettatore acquista zero o più biglietti, ogni biglietto è acquistato da zero o uno spettatore (invenduto ammesso).
  • Un palco impiega uno o più tecnici, ogni tecnico è assegnato a un solo palco.
Vincoli di integrità aggiuntivi

- ora_fine > ora_inizio
- capienza palco >= numero biglietti emessi per evento su quel palco (vincolo da verificare a livello applicativo)
- email spettatore formato valido
- data_ora_acquisto <= data evento
- tipologia biglietto dominio {Intero,Ridotto,VIP}

8. Schema E/R finale

Lo schema deve contenere tutte le entità con identificatore, attributi e le 5 associazioni con molteplicità indicate sul lato entità.

ARTISTA • id_artista {PK} • nome_arte • genere EVENTO • cod_evento {PK} • data • ora_inizio • ora_fine BIGLIETTO • cod_biglietto {PK} • prezzo • tipologia ESIBIZIONE VALIDO_PER PALCO • id_palco {PK} • nome • capienza SPETTATORE • id_spettatore {PK} • nome • cognome • email OSPITA ACQUISTO ASSEGNAZIONE TECNICO • matricola {PK} • specializz. • telefono (1,n) (1,n) (1,1) (1,n) (0,n) (1,1) (0,1) (0,n) + data_ora_acquisto (1,n) (1,1) + ruolo_svolto LEGENDA: Rettangolo = Entità | Rombo = Associazione | Card. (min,max) sul lato entità ARTISTA (1,n)-(1,n) EVENTO | PALCO (1,n)-(1,1) EVENTO | EVENTO (0,n)-(1,1) BIGLIETTO | SPETTATORE (0,n)-(0,1) BIGLIETTO | PALCO (1,n)-(1,1) TECNICO Attributi associazione: ACQUISTO.data_ora_acquisto, ASSEGNAZIONE.ruolo_svolto, ESIBIZIONE.cachet (opzionale) Vincoli: ora_fine > ora_inizio, capienza >= biglietti venduti per evento, data_acquisto <= data evento
🎯 Cosa deve mostrare lo schema

ENTITA' rettangoli con PK evidenziata, attributi nominati
ASSOCIAZIONI rombi con nome e molteplicità (min,max) sul lato entità
ATTRIBUTI DI ASSOCIAZIONE collegati al rombo

9. Errori comuni e checklist finale

⚠️ I 5 errori che vedo ogni anno

1. BIGLIETTO come attributo di EVENTO → perdi prezzo, tipologia e storico invenduto
2. ACQUISTO come associazione M:N SPETTATORE-EVENTO → non puoi distinguere due biglietti diversi dello stesso spettatore per stesso evento
3. TECNICO senza associazione a PALCO → viola "assegnato a un solo palco"
4. ESIBIZIONE 1:N invece di M:N → un evento può avere più artisti e un artista più eventi
5. data_ora_acquisto in SPETTATORE o BIGLIETTO → non gestisci più acquisti in momenti diversi

CheckDomandaSe NO, cosa fare
EntitàOgni entità ha identificatore?Aggiungi id_artista, cod_evento, ecc.
Biglietto invendutoPosso avere biglietto con (0,1)?Metti (0,1) lato BIGLIETTO in ACQUISTO
Attributi associazionedata_acquisto sta su ACQUISTO?Sposta da entità ad associazione
MolteplicitàHo almeno un (0,n) un (1,n) un (1,1) e un (0,1)?Rivedi ipotesi palchi vuoti / biglietti invenduti
VincoliHo scritto vincoli extra?Aggiungi ora_fine>ora_inizio ecc.
LetturaRiesco a leggere ad alta voce?Se inciampi, correggi molteplicità
💬 Tip del docente - come prendo il voto

In verifica non guardo solo il disegno. Voglio: 1) ipotesi scritte, 2) molteplicità giustificate, 3) attributi di associazione visibili, 4) regole di lettura, 5) identificatori. Se manca ipotesi su biglietto invenduto o palco senza tecnici, anche se il disegno è bello, non è da 10.

✓BIGLIETTO è entità perché ha vita propria (può essere invenduto) e attributi prezzo/tipologia
✓ACQUISTO (0,1) gestisce invenduto: lato BIGLIETTO (0,1) permette biglietto senza spettatore
✓ESIBIZIONE M:N (1,n)-(1,n): artista almeno 1 evento, evento almeno 1 artista
✓Attributi di associazione: data_ora_acquisto su ACQUISTO, ruolo su ASSEGNAZIONE, cachet opzionale su ESIBIZIONE
✓Vincoli misti: (0,n) per palco libero, (1,n) per palco con eventi, (1,1) per evento-palc o e biglietto-evento, (0,1) per invenduto
✓Metodo 8 passi: entità → associazioni → attributi → attributi associazioni → molteplicità → cardinalità → regole lettura → verifica