Dai Requisiti al Modello E-R
Dal testo alla consegna perfetta: metodo passo-passo, schemi pronti, 6 casi svolti, esercizi con soluzioni e template per la Seconda Prova
Contenuto didattico avanzato — per la classe 5ª e la preparazione all'Esame di Stato
1 Il processo: dove si colloca questo lavoro
Per fare un database si fanno 4 passi, uno dopo l’altro:
Fase 2: trasformi quello che hai capito in un disegno: lo schema E-R.
2 Passo 0 — Leggere il testo e scrivere le ipotesi
0 Prima di classificare le parole (quello è il Passo 1) fai due cose sole: leggi con attenzione e scrivi le ipotesi su ciò che il testo non dice. Non è un metodo parallelo: è il foglio su cui, dopo, giustifichi le tue scelte.
1. Leggi il testo, non il disegno
Rileggi la traccia due o tre volte, a voce bassa se ti aiuta. Distingui ciò che è detto da ciò che è lasciato implicito. Non tradurre ancora in rettangoli e rombi: le quattro domande del Passo 1 arriveranno dopo, e servono proprio a quello.
- Sottolinea le frasi che descrivono cose di cui ricordare dati e quelle che descrivono un legame o un evento — solo per non perderle, non per etichettarle già.
- Segna i punti in cui il testo tace o è ambiguo («può», «alcuni», «nel tempo», un contenitore citato una volta sola…).
2. Scrivi le ipotesi (numerate)
Ogni volta che per andare avanti devi decidere qualcosa che il testo non dice, scrivila come ipotesi numerata. Parla del minimondo, non del costrutto E-R:
| Ipotesi | Perché la scrivo |
|---|---|
| 1. C’è una sola biblioteca, senza dati propri richiesti. | Il testo dice «gestisco una piccola biblioteca»: è la cornice, non un elenco. |
| 2. Lo stesso socio non riprende lo stesso libro in date diverse. | Il testo parla di prestiti e della data, ma non dice se la coppia socio–libro può tornare. Devo decidere. |
| 3. I donatori sono una categoria di soci, non un gruppo a sé. | Il testo dice «alcuni soci sono anche donatori»: è un sottoinsieme del mondo dei soci. |
Queste tre frasi non sono ancora il modello. Al Passo 1 e al Passo 3 le userai per motivare (prestito come rombo o come entità; biblioteca fuori dallo schema; donatore come sottoinsieme o come attributo).
L’elenco del Passo 0 è un foglio vivo. Quando al Passo 1 (domanda 4) o al Passo 3 (R3, R4) fai una scelta che il testo non impone, aggiungi o precisa un’ipotesi: non inventare vincoli che la traccia non suggerisce, ma non lasciare le scelte «a sentimento».
Se la traccia è completa e chiara, l’elenco può essere corto. All’esame quasi mai lo è: i punti extra arrivano proprio dalle assunzioni scritte.
3 Passo 1 — Leggere il testo ed individuare attributi, entità, associazioni
Quando traduci un testo in un modello E-R, una stessa parola (ad esempio Città, Visita, Iscrizione) può diventare attributo, entità o associazione, a seconda di ciò che il testo richiede. Le domande da porsi, in ordine, sono:
- La parola ha due o più dati propri descrittivi?
"Di Città, il testo mi chiede solo il nome, oppure anche altri dati (come provincia, abitanti, sindaco…)?" - La parola è collegata ad altri concetti?
"Nel testo, la Città è collegata ad altri termini (ad esempio, la Città appartiene a una Provincia, che ha un nome, una superficie, un numero di abitanti…)?"
Rispondendo alle domande 1 e 2 stabilisci se la parola del testo considerata è un attributo o non è un attributo
- Se la risposta a 1 e 2 è NO → la parola è un attributo (pallino vuoto).
- Se la risposta a 1 o 2 è SÌ → la parola non è un semplice attributo: potrebbe essere un'entità, ma anche un'associazione. Per distinguere, prosegui con la domanda 3.
- La parola rappresenta un legame o un evento tra due o più concetti?
"La parola descrive un'azione, una relazione o un evento che collega altre entità (ad esempio Iscrizione, Prenotazione, Matrimonio)?"- Se la risposta è NO → la parola è un'entità (rettangolo) a sé stante, collegata ad altre entità con opportuni legami.
- Se la risposta è SÌ → sorge il dubbio: associazione o entità? Per risolverlo, bisogna porsi una quarta domanda.
Solo se la risposta alla domanda 3 è SÌ, chiediti:
- La stessa coppia di istanze può essere coinvolta più volte nel legame?
"Esempio: lo stesso Paziente e lo stesso Dottore possono avere più Visite distinte in date diverse, ognuna con diagnosi/terapia proprie?"- Se la risposta è NO → la parola è un'associazione (rombo) che collega due o più entità.
- Se la risposta è SÌ → la parola, anche se sembra un legame, va modellata come entità (rettangolo), perché rappresenta un evento ripetibile con una propria identità.
Approfondimento — 5 varianti (Città / Iscrizione / Visita)
Tre varianti dello stesso testo per capire la differenza (tutte su Città)
- Variante 1 — Solo il nome: «Di ogni studente vogliamo sapere la Città.» Qui della Città interessa solo il nome → risposte a 1 e 2: NO → attributo (pallino vuoto) di STUDENTE.
- Variante 2 — Più dati propri: «Di ogni studente vogliamo sapere la Città; di ogni Città vogliamo ricordare nome, numeroAbitanti, nomeSindaco, cognomeSindaco.» Qui servono più dati propri della Città → risposta a 1: SÌ → non è attributo. Alla domanda 3 la risposta è NO (non è un legame) → entità CITTÀ, collegata a STUDENTE con il legame AbitaIn.
- Variante 3 — Collegamento con un altro concetto: «Di ogni studente vogliamo sapere la Città; ogni Città appartiene a una Provincia, di cui vogliamo sapere nome, superficie, numeroAbitanti.» Qui la Città è collegata a un altro oggetto (PROVINCIA) con dati propri → risposta a 2: SÌ → non è attributo. Alla domanda 3 la risposta è NO (non è un legame) → entità CITTÀ, collegata sia a STUDENTE sia a PROVINCIA.
Due esempi per distinguere associazione ed entità-evento (solo quando la domanda 3 è SÌ)
- Variante 4 — La parola rappresenta un legame semplice (associazione): «Di ogni studente vogliamo sapere nome e cognome; di ogni corso vogliamo sapere titolo e durata; di ogni iscrizione vogliamo ricordare la data.» Qui Iscrizione è un legame tra STUDENTE e CORSO (domanda 3: SÌ). Poiché uno studente si iscrive a un corso una sola volta (non ha senso iscriversi due volte allo stesso corso), la coppia (Studente, Corso) può comparire al massimo una volta → risposta alla domanda 4: NO → associazione ISCRIZIONE (rombo), collegata a STUDENTE e CORSO.
- Variante 5 — La parola sembra un legame ma è un evento ripetibile (entità): «Di ogni paziente vogliamo sapere nome e codiceFiscale; di ogni dottore vogliamo sapere nome e specializzazione; di ogni visita vogliamo ricordare data, diagnosi e terapia prescritta.» Qui Visita sembra un legame tra PAZIENTE e DOTTORE (domanda 3: SÌ). Ma lo stesso paziente può essere visitato più volte dallo stesso dottore (in date diverse). La coppia (Paziente, Dottore) può quindi comparire più volte, e ogni visita ha una propria identità (data, diagnosi, terapia). Risposta alla domanda 4: SÌ → Visita va modellata come entità VISITA (rettangolo), collegata a PAZIENTE e DOTTORE tramite associazioni (ad esempio Effettua e Riceve).
In sintesi: è il testo a decidere il ruolo della parola, non la parola stessa. Una stessa parola può essere attributo in un contesto, entità in un altro, associazione in un altro ancora. Il modellatore deve sempre chiedersi, in ordine: "Questa parola descrive una caratteristica? Un oggetto autonomo? Un legame tra oggetti? E se è un legame, è ripetibile tra le stesse istanze?"
Diagramma confrontativo Visita (errato vs corretto) — apri dopo le 4 domande
Il rombo collega la coppia (Dottore, Paziente) una volta sola: la seconda visita non si può registrare e Data/Motivo si confondono sulla stessa coppia.
VISITA è un rettangolo con i suoi attributi: ogni occorrenza è un'istanza distinta. Lati: DOTTORE/PAZIENTE (0,n) — VISITA (1,1) (ogni visita ha un dottore e un paziente).
- Entità (rettangolo): cose di cui ricordare dati, ognuna con il suo elenco (CUOCO, PIATTO, TAVOLO);
- Associazione (rombo): verbi che collegano due entità (Prepara tra Cuoco e Piatto);
- Attributo (pallino): singolo valore di una sola cosa (Prezzo del piatto);
- Verbo che è entità (rettangolo): sembra un legame (verbo) ma la stessa coppia torna con dati diversi → diventa entità (PRENOTAZIONE, Passo 1);
- Contesto (fuori dal modello): cornice unica del minimondo (es. “la biblioteca” se il DB è di una sola biblioteca senza dati propri) — una sola istanza senza dati richiesti, non entra nello schema (vedi esempio sotto).
Nel testo compaiono spesso parole che non sono né entità, né associazioni, né attributi: sono solo la cornice / contesto del minimondo, cioè lo sfondo unico in cui avviene tutto e di cui non devi memorizzare un elenco in tabella.
Come riconoscerlo: chiediti “di questa cosa devo fare un elenco con più righe?” Se la risposta è NO — perché ce n’è una sola, non ha dati propri (suoi, non delle cose che contiene) e non è collegata ad altro — è contesto e resta fuori dallo schema.
- Esempio nell’esercizio qui sotto: «Gestisco un ristorante.» — RISTORANTE è il contenitore di tutto (il minimondo). Non ha un elenco di ristoranti diversi, né attributi propri richiesti: non diventa entità.
- Altri esempi tipici: «L’università vuole gestire carriere e corsi…» → se il DB è di una sola università, UNIVERSITÀ è contesto; se invece il testo dice «più università convenzionate, ognuna con nome, sede, rettore…» allora diventa entità UNIVERSITÀ con i suoi attributi. Stesso per Biblioteca, Ospedale, Azienda: conta cosa chiede il testo, non la parola.
- Regola pratica — non confondere contenitore e contenuto: i dati degli studenti (matricola, nome…) non sono dati dell’università. Se il testo chiede solo dati del contenuto (studenti, corsi, esami) e non chiede dati del contenitore stesso (nome/sede/rettore dell’università) né elenca più contenitori diversi, il contenitore è contesto e resta fuori. Diventa entità solo quando il testo ne richiede dati propri o ne prevede più istanze.
Specifica: «Gestisco un ristorante. I cuochi preparano i piatti del menu; ogni piatto ha un prezzo ed è composto da più ingredienti. I clienti effettuano prenotazioni di tavoli per una specifica data e ora.»
Per ciascun elemento del testo scegli il costrutto corretto (distinguendo chiaramente tra Entità, Associazioni e Attributi): feedback immediato.
Mostra soluzione commentata completa
Applica il metodo in ordine: domande 1-2 → attributo o no; domanda 3 → entità o legame; domanda 4 → rombo o entità-evento; test del contenitore → contesto.
CUOCO, PIATTO, TAVOLO → Entità (rettangoli): domande 1 e 2: SÌ (elementi autonomi; il testo cita esplicitamente prezzo per PIATTO e data/ora per PRENOTAZIONE) → non sono attributi. Domanda 3: NO (non descrivono un legame) → entità di cui fare l’elenco.PREZZO → Attributo semplice (pallino vuoto): domande 1 e 2: NO (singolo valore numerico del piatto, senza dati né legami propri) → resta attributo di PIATTO.
INGREDIENTE → Attributo multivalore (doppio cerchio) di PIATTO: domande 1 e 2: NO (il testo dice solo “composto da più ingredienti”, senza dati né legami propri dell’ingrediente) → non è entità: è un elenco di valori del piatto.
PREPARA → Associazione (rombo): domande 1-2: SÌ → non attributo. Domanda 3: SÌ (lega CUOCO e PIATTO). Domanda 4: NO (legame stabile, non evento ripetibile) → rombo.
PRENOTAZIONE (data, ora) → Entità-evento (rettangolo, trappola): domande 1-2: SÌ → non attributo. Domanda 3: SÌ (lega cliente—tavolo). Domanda 4: SÌ (la stessa coppia cliente/tavolo può tornare più volte in date diverse, ogni volta con dati propri) → non basta il rombo: va modellata come entità PRENOTAZIONE con due associazioni 1:n (Passo 1).
RISTORANTE → Contesto (fuori dal modello): test del contenitore/contenuto: è la cornice unica del minimondo (“gestisco un ristorante”), una sola istanza implicita e nessun dato proprio richiesto (i dati richiesti sono di cuochi/piatti/tavoli, non del ristorante stesso) → resta fuori dallo schema.
Alla fine del Passo 1 devi avere un elenco scritto, non solo idee in testa. L’output è una tabella di lavoro con una riga per ogni entità individuata:
| Entità | Attributi (provvisori) | Associazioni (con chi si lega) |
|---|---|---|
| CUOCO | matricola, nome | Prepara → PIATTO |
| PIATTO | codice, nome, prezzo, ingrediente … | Prepara ← CUOCO |
| CLIENTE | codice, nome, telefono | Prenota → PRENOTAZIONE |
| TAVOLO | numero, posti | — (via PRENOTAZIONE) |
| PRENOTAZIONE | data, ora | → CLIENTE · → TAVOLO |
La tabella è uno strumento di lavoro provvisorio per passare subito al disegno E-R: non va arricchita fino a diventare illeggibile. Compilarla ti evita di dimenticare entità o di confondere attributi con entità; i dettagli (identificatori, composti/multivalore, cardinalità e attributi di associazione) li curerai direttamente nello schema grafico. Vedi Passo 2 qui sotto per come compilarla.
Lo schema qui sotto è stato disegnato da uno studente sulla specifica del ristorante (§3), con attributi, identificatori e cardinalità. Lo studente ha commesso 2 errori nell'assegnazione dei costrutti. Leggi lo schema, identifica tutti gli errori e spiegali.
Schema da analizzare
Convenzioni: pallino pieno = identificatore · pallino vuoto = attributo · doppio cerchio = multivalore · (min,max) accanto all’entità.
Cosa trovi di sbagliato? Leggi attentamente lo schema e scegli l'errore:
Mostra spiegazione completa
Errore A — Prenotazione è un rombo, ma deve essere entità: Il testo dice "i clienti effettuano prenotazioni di tavoli per data e ora" — cioè la stessa coppia cliente–tavolo può comparire più volte (prenotazioni in date diverse). Secondo la domanda 4 del Passo 1, la coppia è ripetibile → Prenotazione deve essere un'entità (rettangolo) con due associazioni 1:n verso CLIENTE e TAVOLO.
Errore C — Tavolo è un attributo, ma deve essere entità: Il testo dice "ogni tavolo ha numero e posti a sedere" → ha dati propri, quindi Tavolo è un'entità autonoma, non un semplice pallino di CLIENTE.
Le altre opzioni non sono errori:
- B) Gli ingredienti del testo sono solo nomi ("composto da più ingredienti") senza dati propri → corretto attributo multivalore.
- D) "Ogni cliente vogliamo codice, nome e telefono" → singolo valore, non "più numeri" → attributo semplice è corretto.
4 Passo 2 — Costruire la tabella Entità / Attributi / Associazioni
2 Come anticipato nell’Output del Passo 1, ora trasformi l’elenco nella tabella di lavoro: una riga = un’entità, con i suoi attributi provvisori e le associazioni che la riguardano.
- Colonna Entità: una riga per ogni entità individuata al Passo 1 (usa il nome al singolare, maiuscolo). Escludi il contesto.
- Colonna Attributi: elenca i dati citati dal testo dopo “di X vogliamo sapere…” così come compaiono, senza aggiungere colonne per identificatori/multivalore.
- Colonna Associazioni: per ogni entità indica i verbi/eventi che la legano ad altre entità (es. “Prepara → PIATTO”). Se un verbo è diventato entità-evento (PRENOTAZIONE), segnalo come entità a sé con le sue due associazioni.
Esempio 1 — Ristorante (versione realistica, estesa dal micro-esercizio)
Testo: «Gestisco un ristorante. Di ogni cuoco vogliamo matricola e nome; i cuochi preparano i piatti del menu; di ogni piatto vogliamo codice, nome, prezzo ed elenco degli ingredienti; di ogni cliente vogliamo codice, nome e telefono; ogni tavolo ha numero e posti a sedere; i clienti effettuano prenotazioni di tavoli per data e ora.» → RISTORANTE è contesto (una sola, senza dati propri — fuori tabella).
| Termine | Domande 1–2 dati propri? collegata ad altri? (NO–NO → attributo) |
Domanda 3 legame o evento? |
Domanda 4 stessa coppia ripetibile? |
Verdetto |
|---|---|---|---|---|
| RISTORANTE | Test del contenitore: «gestisco un ristorante» = cornice unica del minimondo; una sola istanza, il testo non chiede dati del ristorante, non devo farne un elenco | — | — | Contesto — fuori dallo schema |
| CUOCO | 1–2: SÌ (dati propri: matricola, nome; prepara i piatti) → non attributo | NO (non è un verbo) | — | Entità (rettangolo) |
| PIATTO | 1–2: SÌ (dati propri: codice, nome, prezzo, ingredienti; legato a cuochi e ingredienti) → non attributo | NO | — | Entità |
| CLIENTE | 1–2: SÌ (dati propri: codice, nome, telefono; effettua prenotazioni) → non attributo | NO | — | Entità |
| TAVOLO | 1–2: SÌ (dati propri: numero, posti; riceve prenotazioni) → non attributo | NO | — | Entità (entra nel disegno solo attraverso PRENOTAZIONE) |
| matricola, nome, codice, numero, posti | 1: NO (singoli valori, nessun dato proprio) · 2: NO → attributi | — | — | Attributi semplici delle rispettive entità |
| PREZZO | 1: NO (singolo valore del piatto) · 2: NO → attributo | — | — | Attributo semplice di PIATTO |
| INGREDIENTI | 1: NO (il testo chiede solo i nomi, nessun dato dell’ingrediente) · 2: NO → attributo | — | — | Attributo multivalore (doppio cerchio) di PIATTO |
| TELEFONO | 1: NO · 2: NO → attributo | — | — | Attributo di CLIENTE (doppio cerchio solo se il testo dicesse «più numeri») |
| PREPARA («i cuochi preparano i piatti») | 1–2: SÌ (verbo che collega due cose) → non attributo | SÌ (lega CUOCO e PIATTO) | NO (legame stabile, senza dati propri) | Associazione (rombo) |
| PRENOTAZIONE | 1: SÌ (dati propri: data, ora) → non attributo | SÌ (evento che collega CLIENTE e TAVOLO) | SÌ («prenotazioni» al plurale, «per data e ora»: la stessa coppia cliente–tavolo torna in giorni diversi, ogni volta con dati propri) | Entità-evento (rettangolo, trappola — vedi Passo 1) |
| data, ora (della prenotazione) | 1: NO · 2: NO → attributi | — | — | Attributi dell’entità PRENOTAZIONE: descrivono l’evento, non il cliente né il tavolo |
| EFFETTUA («i clienti effettuano prenotazioni») | 1–2: SÌ (verbo) → non attributo | SÌ (lega CLIENTE e PRENOTAZIONE) | NO | Associazione (rombo) |
| Entità | Attributi | Associazioni |
|---|---|---|
| CUOCO | matricola, nome | Prepara → PIATTO |
| PIATTO | codice, nome, prezzo, ingrediente | Prepara ← CUOCO |
| CLIENTE | codice, nome, telefono | Prenota → PRENOTAZIONE |
| TAVOLO | numero, posti | — (via PRENOTAZIONE) |
| PRENOTAZIONE | data, ora | → CLIENTE · → TAVOLO |
Perché ingrediente è attributo? Domande 1-2: NO (il testo non chiede dati né legami propri per l’ingrediente, solo i nomi che compongono il piatto) → non è entità; è un attributo multivalore di PIATTO. — Perché CLIENTE ha telefono? Perché è realistico e richiesto: un cliente senza identificativo/telefono non sarebbe contattabile per la prenotazione.
Esempio 2 — Biblioteca (contenitore = contesto)
Testo: «La biblioteca vuole gestire i prestiti. Di ogni libro vogliamo titolo e codice; di ogni socio nome e numTessera; un socio prende in prestito più libri e del prestito ricordiamo la data.» → BIBLIOTECA è contesto (una sola, senza dati propri).
| Termine | Domande 1–2 dati propri? collegata ad altri? (NO–NO → attributo) |
Domanda 3 legame o evento? |
Domanda 4 stessa coppia ripetibile? |
Verdetto |
|---|---|---|---|---|
| BIBLIOTECA | Test del contenitore: «La biblioteca vuole gestire i prestiti»: una sola, il testo non chiede dati su di essa (né nome, né città…), non devo farne un elenco | — | — | Contesto — fuori dallo schema |
| LIBRO | 1–2: SÌ (dati propri: titolo, codice; collegato ai soci dal prestito) → non attributo | NO | — | Entità (rettangolo) |
| SOCIO | 1–2: SÌ (dati propri: nome, numTessera; prende in prestito libri) → non attributo | NO | — | Entità |
| titolo, codice, nome, numTessera | 1: NO (singoli valori) · 2: NO → attributi | — | — | Attributi semplici (codice e numTessera diventeranno identificatori in Er1, ma in tabella restano qui) |
| PRESTITO («prende in prestito») | 1–2: SÌ (verbo con un dato proprio: la data) → non attributo | SÌ (lega SOCIO e LIBRO) | NO — assunzione: la stessa coppia socio–libro è in prestito una volta sola; se il testo dicesse «riprende più volte lo stesso libro» → entità PRESTITO (Passo 1) | Associazione (rombo) |
| data («del prestito ricordiamo la data») | 1: NO · 2: NO → attributo | — | — | Attributo dell’associazione: descrive la coppia (socio, libro), non il socio né il libro → pallino sul rombo |
| Entità | Attributi | Associazioni |
|---|---|---|
| LIBRO | codice, titolo | Prestito → SOCIO |
| SOCIO | numTessera, nome | Prestito → LIBRO |
Nota: PRESTITO qui è un legame con attributo data (coppia non ripetibile, ovvero si fa l’ipotesi che un utente non prenda in prestito lo stesso libro più volte) → resta nella colonna Associazioni, non diventa riga a sé. Se il testo dicesse “lo stesso socio può riprendere lo stesso libro più volte”, diventerebbe entità PRESTITO con riga propria.
Esempio 3 — Catena di biblioteche (contenitore = entità)
Testo: «Una catena gestisce più biblioteche, ognuna con nome, città e orario; ogni biblioteca possiede più copie di libri.» → qui BIBLIOTECA ha dati propri e più istanze → è entità.
| Termine | Domande 1–2 dati propri? collegata ad altri? (NO–NO → attributo) |
Domanda 3 legame o evento? |
Domanda 4 stessa coppia ripetibile? |
Verdetto |
|---|---|---|---|---|
| CATENA | Test del contenitore: «una catena gestisce più biblioteche»: una sola catena, il testo non chiede dati su di essa (né nome, né sede…), non devo farne un elenco | — | — | Contesto — fuori dallo schema |
| BIBLIOTECA | 1–2: SÌ (dati propri: nome, città, orario; possiede copie) → non attributo | NO | — | Entità — a differenza dell’Esempio 2: qui ha dati propri e ce n’è più di una → va in tabella |
| nome, città, orario | 1: NO (singoli valori) · 2: NO → attributi | — | — | Attributi semplici di BIBLIOTECA |
| COPIA | 1: il testo non cita dati, ma «più copie» = oggetti da elencare e distinguere uno per uno · 2: SÌ (ogni copia appartiene a una biblioteca ed è la copia di un libro) → non attributo; assunzione: aggiungiamo codiceCopia | NO | — | Entità (in Er1 potrà essere modellata come entità debole legata all'entità BIBLIOTECA, Er3.2) |
| LIBRO | 1: assunzione (ci interessano ISBN e titolo del libro) · 2: SÌ (ogni copia è la copia di un libro: distinguiamo il libro dalle copie fisiche) → non attributo | NO | — | Entità; ogni copia è la copia di un solo libro → sarà collegata a COPIA dall’associazione Riproduce |
| ISBN, titolo | 1: NO · 2: NO → attributi | — | — | Attributi semplici di LIBRO (ISBN sarà identificatore) |
| POSSIEDE («ogni biblioteca possiede più copie») | 1–2: SÌ (verbo) → non attributo | SÌ (lega BIBLIOTECA e COPIA) | NO (la coppia biblioteca–copia è unica) | Associazione 1:n (rombo) |
| RIPRODUCE («copie di libri»: ogni copia è la copia di un libro) | 1–2: SÌ (verbo) → non attributo | SÌ (lega COPIA e LIBRO) | NO (la coppia copia–libro è unica: una copia fisica riproduce sempre lo stesso libro) | Associazione 1:n (rombo) |
| Entità | Attributi | Associazioni |
|---|---|---|
| BIBLIOTECA | nome, città, orario | Possiede → COPIA |
| COPIA | codiceCopia | Possiede ← BIBLIOTECA · Riproduce → LIBRO |
| LIBRO | ISBN, titolo | Riproduce ← COPIA |
Da questa tabella passi subito al disegno E-R: i dettagli fini (identificatori, composti/multivalore, cardinalità, attributi di associazione) li rappresenti direttamente nello schema grafico, senza appesantire la tabella.
Hai completato il Passo 1 (individuare nel testo entità, attributi e associazioni) e il Passo 2 (la tabella di lavoro). A questo punto ti aspetteresti di proseguire con il Passo 3 e disegnare subito il modello E-R.
In realtà, prima di illustrare il Passo 3 sono necessari 3 paragrafi — Er1, Er2, Er3 — che diano le necessarie conoscenze sul modello E-R.
Er1 Attributi e identificatori
Er1 Per ogni entità cerca nella specifica le caratteristiche richieste: «di X vogliamo sapere …», «memorizziamo … di X». Ogni caratteristica diventa un attributo: un segmento che parte dal rettangolo e termina con un pallino e il nome dell'attributo.
- L'attributo (o insieme di attributi) che identifica univocamente le istanze è l'identificatore: pallino pieno. Se l'identificatore è formato da più attributi (identificatore composto), gli attributi hanno pallino vuoto, sono collegati tra loro da una barra orizzontale e all'estremità della barra si trova un unico pallino pieno (es. CLASSE: Anno + Sezione).
- I segmenti degli attributi si disegnano in orizzontale (dai lati del rettangolo) oppure in verticale (dal lato alto/basso): mai obliqui.
- Se un dato può avere più valori per la stessa persona («più telefoni») è multivalore: doppio cerchio (0,n).
- Se un dato si scompone in pezzi («indirizzo = via, numero, città») è composto: pallino più grande con i pezzi attaccati.
Specifica: «Di ogni studente vogliamo la matricola (univoca), il nome, il cognome, l'indirizzo (via, città, CAP) e l'email (opzionale).»
Classifica ciascun elemento: il feedback diagnostico è immediato.
Mostra soluzione commentata
Attributo composto: INDIRIZZO (pallino grande con sotto-attributi Via, Città, CAP).
Email: NON è multivalore — è opzionale (può non esserci) ma a singolo valore. Se la specifica dicesse «più email per studente», allora sì → doppio cerchio (0,n).
Er2 Associazioni e cardinalità
Er2 Nel Passo 1 hai visto che i verbi che collegano due cose («un socio prende in prestito dei libri») diventano quasi sempre associazioni: qui impari a trasformarli in rombi e a ricavarne le cardinalità. Attenzione però: a volte il verbo è un’entità — lo capisci con la domanda «la stessa coppia può tornare più volte?» Se sì, è un’entità; altrimenti è un’associazione — vedi Passo 1 (es. Visita). Se il testo non lo dice, la scelta va in una ipotesi (Passo 0, poi ampliata).
Come si ricavano le cardinalità
Per ogni estremità dell'associazione poniti la domanda chiave:
| Domanda | Risposta dalla specifica | Cardinalità |
|---|---|---|
| Per uno studente, quante classi sono collegate a lui al minimo / al massimo? | al minimo una, al massimo una (obbligatoria) | (1,1) accanto a STUDENTE |
| Per una classe, quanti studenti sono collegati ad essa al minimo / al massimo? | al minimo uno, al massimo molti | (1,n) accanto a CLASSE |
I tre tipi di legame tra due entità
- 1:1 — uno a uno (es. uno Stato ha un Presidente);
- 1:n — uno a molti (es. uno studente sta in una classe, una classe ha molti studenti);
- n:m — molti a molti (es. un autore scrive molti libri, un libro ha molti autori).
Specifica: «Ogni corso ha al massimo 30 studenti. Ogni studente segue da 3 a 6 corsi.»
Imposta le cardinalità dell'associazione FREQUENTA(STUDENTE, CORSO) ragionando con la domanda magica, scegli il tipo di associazione, poi premi Verifica.
Mostra soluzione
Accanto a CORSO → (0,30) = per un corso, quanti studenti (max 30).
Assunzione esplicita: il minimo 0 (corso appena creato) non è nel testo: va dichiarata. Senza di essa (1,30) sarebbe discutibile.
È una n:m.
Er3 Riconoscere i costrutti particolari
Er3.1 Generalizzazione / specializzazione
Capita quando alcuni elementi di un gruppo hanno qualcosa in più: «alcuni prodotti da forno sono vegani (con certificazione), altri senza glutine (con soglia), uno stesso prodotto può essere anche entrambi». Si crea un'entità padre (es. PRODOTTO_DA_FORNO) e una o più figlie (VEGANO, SENZA_GLUTINE).
- le figlie hanno già tutto ciò che ha il padre (attributi e legami), più i loro dati in più;
- come si disegna: una freccia punta al padre; se le figlie sono due o più c'è una barretta orizzontale che le collega;
- (t/p): totale se ogni elemento del padre sta in almeno una figlia, altrimenti parziale;
- (e/s): esclusiva se un elemento può stare in una sola figlia, sovrapposta se può stare in più figlie;
- una sola figlia = sottoinsieme (non serve indicare e/s).
Er3.2 Entità deboli
Alcune entità non hanno un identificatore proprio: «un'aula è individuata dal numero e dall'edificio in cui si trova» — il numero da solo non basta. È un'entità debole: per riconoscerla serve anche la chiave dell'entità forte a cui è legata. Nel disegno: rettangolo normale, i suoi dati con pallini bianchi e un pallino nero esterno a L sulla relazione — es. NumAula + Nome(EDIFICIO) (vedi figura sotto, stessa idea di POSIZIONE in BIBLIOTECA).
img_ti/er_posizione_biblioteca.png e er_studente_universita.png: entità debole con rettangolo singolo (non doppio), attributi propri con pallini bianchi e pallino nero esterno collegato con linea a “L” alla relazione identificante. L’identificatore è NumRipiano + NumScaffale + Nome(BIBLIOTECA).Er3.3 Associazione ricorsiva
Se il legame è tra elementi dello stesso gruppo («una persona è genitore di altre persone»), si disegna un solo rombo con un anello a U che torna sull'entità. Sui due lati si scrivono i ruoli (chi è genitore / chi è figlio) e le cardinalità.
img_ti/er_ricorsiva_persona.png: anello a U sotto PERSONA, ruoli "GENITORE DI" / "FIGLIO DI" sui lati verticali. Cardinalità: (0,n) lato genitore — una persona può essere genitore di molte persone — e (0,2) lato figlio: ogni persona ha al più due genitori. Lettura: «una persona è genitore di (0,n) persone; una persona è figlia di (0,2) persone».Er3.4 Associazioni ternarie
Se il fatto esiste solo quando ci sono tre cose insieme («il venditore V fornisce il prodotto P al dipartimento D»), si usa un solo rombo a tre gambe. Non spezzarlo in tre legami a due: perderesti il significato.
img_ti/er_ternaria_fornitura.png: rombo centrale collegato a sinistra a Dipartimento, a destra a Prodotto e sotto a Venditore (un solo rombo a tre gambe). Il fatto “fornitura” esiste solo se i tre sono presenti insieme.5 Passo 3 — Tirare le fila: dalla tabella del Passo 2 allo schema completo
3 La tabella del Passo 2 è una bozza: le sue colonne (Entità / Attributi / Associazioni) vanno ora migliorate e completate usando quanto imparato in Er1 (attributi e identificatori), Er2 (associazioni e cardinalità) e Er3 (costrutti particolari). Non serve un elenco di otto controlli: basta lo stesso ritmo del Passo 1 — 4 domande. Le prime tre si fanno sempre; la quarta solo se il testo dà un segnale.
| Domanda | Quando | Cosa completi nella tabella / nello schema |
|---|---|---|
| R1 — Come si identifica? C'è un attributo univoco? Se no, si costruisce una coppia con un'entità collegata? | Sempre (Er1 · Er3.2) | Pallino pieno; oppure entità debole (pallino nero a L); oppure un codice che inventi tu. |
| R2 — Come sono fatti i dati? Qualche dato si spezza (Indirizzo) o ha più valori (Telefono)? | Sempre (Er1) | Composto = pallino grande con i pezzi. Multivalore = doppio cerchio (0,n). |
| R3 — Come funziona il legame? Quante istanze collega? Su ogni lato: presa UNA istanza di X, quante istanze di Y al minimo / al massimo? E se il testo dà un dato del legame, dove va? | Sempre (Er2 · Passo 1, domanda 4) | Scrivi (min,max) accanto a entrambe le entità. Dato di una coppia che capita una volta sola → sul rombo. Se invece la coppia si ripete, al Passo 1 hai già deciso che non è un rombo: è un'entità con due 1:n. |
| R4 — Il testo segnala qualcosa di particolare? «Alcuni/speciali», «si collega a se stesso», «tre cose insieme»? | Solo se c'è un segnale (Er3) | Sottoinsieme / generalizzazione, ricorsiva con ruoli, rombo a tre gambe. Nessun segnale → si salta. |
Le 4 domande di revisione — come nel Passo 1
Nel Passo 1 non facevi sempre la domanda 4: la ponevi solo se la 3 era SÌ. Qui è la stessa idea. R1, R2, R3 si fanno su ogni riga della tabella. R4 si apre solo se nel testo senti un segnale: altrimenti non la memorizzi come passo a vuoto.
- SÌ → pallino pieno (se è una coppia di attributi: barra + un solo pallino pieno).
- NO → si può costruire una coppia con l'identificatore di un'entità collegata (es. NumAula + Edificio)?
- SÌ → entità debole: pallino nero esterno a L agganciato all'associazione identificante.
- NO → aggiungi tu un codice univoco.
- Si spezza → pallino grande con i pezzi attaccati (composto).
- Ha più valori → doppio cerchio (0,n) (multivalore).
- Altrimenti resta un pallino vuoto semplice.
- 1. Quante istanze collega? Una risposta per lato, scritta accanto all'entità di quel lato: (min,max) — es. (0,n) accanto a SOCIO, (0,n) accanto a LIBRO. Mai una cardinalità sola: i lati sono due.
- 2. C'è un dato del legame? Solo se il testo ne dà uno (una Data, un importo, una Quantità) e la coppia di istanze capita una volta sola → quel dato va sul rombo (es. DataPrestito).
- 3. La coppia si ripete? Non è una scelta nuova: è il test del Passo 1, domanda 4. Se la stessa coppia può tornare più volte con dati propri, il legame non è un rombo ma un'entità con due associazioni 1:n (VISITA, PRENOTAZIONE): i suoi dati stanno sull'entità, non sul rombo.
- «Alcuni / speciali» (alcuni soci sono donatori, alcune camere sono suite) → gruppo speciale: un solo dato in più e nessun legame proprio → basta un attributo (es. InOfferta); due o più dati e/o un legame proprio → figlia: una sola → sottoinsieme (freccia verso il padre); due o più → generalizzazione con t/p ed e/s.
- «Si collega a se stesso» (un dipendente gestisce altri dipendenti) → associazione ricorsiva: anello a U, ruoli, due cardinalità.
- «Tre cose insieme» (il fatto esiste solo se Fornitore, Prodotto e Reparto ci sono tutti) → rombo a tre gambe, non tre binarie.
Se il testo non dice tutto: chiediti cosa manca, documenta le assunzioni per iscritto e non inventare vincoli che non ci sono (vedi gli esempi svolti: ogni scelta è motivata da un'assunzione esplicita).
Se più modelli sono corretti (trade-off): a volte lo stesso dato si può rappresentare in più modi (es. GENERE come attributo semplice, multivalore o entità; un gruppo speciale come attributo o come figlia della R4). Scegli leggendo bene cosa chiede il testo, non per gusto personale, e motiva la scelta.
Lo schema qui sotto è stato disegnato da uno studente sulla specifica di una segreteria studenti (§7), con attributi, identificatori e cardinalità. Lo studente ha commesso 4 errori nell'applicazione delle 4 domande di revisione del Passo 3. Trova tutti e 4.
Schema da analizzare
Convenzioni: pallino pieno = identificatore · pallino vuoto = attributo · (min,max) accanto all’entità.
Cosa trovi di sbagliato? Lo schema contiene 4 errori applicando le 4 domande di revisione del Passo 3. Seleziona tutti gli errori che trovi (puoi sceglierne più di uno):
Mostra spiegazione completa
I 4 errori da trovare sono A, B, C e D:
- A — Manca l'identificatore (R1): Matricola "univoca" → pallino pieno, non vuoto.
- B — Indirizzo non è composto (R2): "composto da via, città e provincia" → pallino grande con le componenti.
- C — Esame è entità (Passo 1, domanda 4): la coppia si ripete → rettangolo con NumVerbale/Data/Voto e due 1:n.
- D — Telefono non è multivalore (R2): "più numeri" → doppio cerchio (0,n).
6 Esempio completo: dal testo della traccia allo schema Percorso base
Le richieste del testo
Prima di leggere il procedimento svolto, prova a:
- Passo 0: rileggi il testo e annota le ipotesi su ciò che non è detto;
- Passo 1: separare dati, legami e vincoli con le 4 domande, ed elencare le entità candidate;
- Passo 2: costruire la tabella Entità / Attributi / Associazioni;
- Passo 3: collocare identificatori e Telefono con le 4 domande di revisione (R1–R3) e ricavare le cardinalità;
- Passo 3 (R4): il testo parla di donatori come categoria di soci → apri il segnale «speciali» e decidi se DONATORE è un attributo di SOCIO o un sottoinsieme, motivando la scelta (amplia l’ipotesi se serve).
Aiuto: parti dalle ipotesi del Passo 0, poi applica le 4 domande. Confronta con la soluzione e valuta il modello con la rubrica della §12.
«Gestisco una piccola biblioteca e vorrei un programma che:
- memorizzi i libri posseduti: di ogni libro conosciamo il codice, che lo identifica univocamente, il titolo e l'anno di pubblicazione; un libro può essere scritto da più autori;
- degli autori vogliamo sapere il codice (unico), il nome e il cognome;
- memorizzi i dati dei soci iscritti: numero di tessera (unico), nome, cognome; un socio può lasciare più numeri di telefono;
- registri i prestiti: un socio può prendere in prestito molti libri; uno stesso libro, nel tempo, può essere prestato a più soci; di ogni prestito vogliamo ricordare la data in cui è avvenuto;
- alcuni soci sono anche donatori: per questi vogliamo registrare l'importo complessivo delle donazioni.»
Passo 0 — Ipotesi dalla prima lettura
- C’è una sola biblioteca, senza dati propri richiesti (è la cornice del testo).
- Il testo non dice se lo stesso socio riprende lo stesso libro in date diverse: per ora ipotizzo di no.
- I donatori sono presentati come una categoria di soci, non come un gruppo a sé.
Queste tre frasi le riprendo e le preciso ai passi successivi (non le butto via).
Passo 1 — Individuo entità, attributi e associazioni (le 4 domande)
Applico le 4 domande del Passo 1 a ogni parola importante del testo:
- LIBRO — «La parola ha due o più dati propri descrittivi?» SÌ (codice, titolo, anno) → non è attributo. «Rappresenta un legame o un evento tra due o più concetti?» NO → entità. «Un libro può essere scritto da più autori» — per Scrittura: «Rappresenta un legame…?» SÌ → associazione.
- AUTORE — «Ha due o più dati propri descrittivi?» SÌ (codice, nome, cognome); «Rappresenta un legame…?» NO → entità.
- SOCIO — «Ha due o più dati propri descrittivi?» SÌ (numTessera, nome, cognome); «Rappresenta un legame…?» NO → entità.
- Telefono (di un socio) — «Ha due o più dati propri descrittivi?» NO (è un solo tipo di dato); «È collegata ad altri concetti?» NO → attributo; «può avere più valori» → multivalore.
- Prestiti — «Rappresenta un legame o un evento tra due o più concetti?» SÌ (lega SOCIO e LIBRO). «La stessa coppia può tornare più volte nello storico?» Assunzione n. 1: no (coppia socio–libro non si ripete in questo minimondo) → associazione Prestito con DataPrestito. Nota: «un libro a un socio alla volta» = occupazione corrente, non ripetibilità storica; se «riprende più volte» → entità PRESTITO.
- Donatori — «Ha due o più dati propri descrittivi?» SÌ (dato proprio: ImportoDonazioni); «Rappresenta un legame…?» NO → entità; il testo dice che sono un gruppo di soci → gruppo speciale di SOCIO (lo decido con la R4 del Passo 3).
- Biblioteca — test del contenitore: «È una sola?» SÌ. «Ha dati propri?» NO. «Devo farne un elenco?» NO → è contesto: non fa parte del modello E-R, resta fuori dallo schema.
Passo 2 — Tabella Entità / Attributi / Associazioni
| Costrutto | Tipo | Attributi / Collegamenti |
|---|---|---|
| LIBRO | Entità | Codice, Titolo, AnnoPubbl |
| AUTORE | Entità | CodAutore, Nome, Cognome |
| SOCIO | Entità | NumTessera, Nome, Cognome, Telefono |
| Scrittura | Associazione | lega AUTORE e LIBRO |
| Prestito | Associazione | lega SOCIO e LIBRO, con DataPrestito |
| DONATORE | Gruppo speciale di SOCIO | ImportoDonazioni (si completa con la R4 del Passo 3) |
Passo 3 — Le 4 domande di revisione
- R1 — Come si identifica? Codice (LIBRO), CodAutore (AUTORE), NumTessera (SOCIO): tutti dichiarati univoci dal testo → pallino pieno. Nessuna entità senza identificatore proprio.
- R2 — Come sono fatti i dati? Telefono ha più valori → doppio cerchio (0,n).
- R3 — Come funziona il legame? Domanda magica su entrambi i lati (tabella qui sotto). DataPrestito descrive la coppia e la coppia capita una volta sola (assunzione 1) → attributo sul rombo Prestito.
- R4 — Segnale particolare? Sì: «i donatori sono una categoria di soci». DONATORE ha un solo dato in più e nessun legame proprio: basterebbe l'attributo ImportoDonazioni su SOCIO. Assunzione n. 2: scegliamo però il sottoinsieme DONATORE, perché il testo presenta i donatori come una categoria (trade-off ammesso: più modelli sono corretti, noi motiviamo la scelta).
| Domanda | Risposta dalla specifica | Esito |
|---|---|---|
| Per un autore, quanti libri sono collegati a lui al minimo / al massimo? | almeno uno, anche molti | (1,n) accanto ad AUTORE |
| Per un libro, quanti autori al minimo / al massimo? | almeno uno, anche molti | (1,n) accanto a LIBRO |
| Per un socio, quanti libri in prestito al minimo / al massimo? | nessuno o molti | (0,n) accanto a SOCIO |
| Per un libro, a quanti soci è stato prestato al minimo / al massimo? | nessuno o molti (nel tempo) | (0,n) accanto a LIBRO |
Assunzione n. 3 (lettura delle cardinalità): ogni autore ha almeno un libro e ogni libro almeno un autore → (1,n) da entrambe le parti di Scrittura.
Modello E-R finale
7 Secondo esempio: Segreteria — focus attributo composto Percorso base
Le richieste del testo
Prima di leggere il procedimento svolto, prova a:
- decidere se ESAME è un'associazione o un'entità;
- scrivere le tre associazioni necessarie;
- ricavare le cardinalità ponendo entrambe le domande per ogni legame.
Non guardare subito il Passo 1: applica il test «la stessa coppia può ripetersi?» e assegna 1 punto per ogni criterio corretto della rubrica.
«Sono il referente della segreteria studenti di un istituto e vorrei un programma che:
- memorizzi i dati degli studenti: la matricola (univoca), il nome, il cognome e l'indirizzo, che voglio composto da via, città e provincia;
- per ogni corso attivato conservi il codice (unico), il titolo e il numero di crediti; ogni corso è tenuto da un solo docente;
- dei docenti ricordi il codice (unico), il nome e il cognome; di ogni docente vogliamo registrare più numeri di telefono;
- registri gli esami: uno studente può sostenere più volte l'esame di uno stesso corso, negli appelli successivi; di ogni sostenimento vogliamo ricordare il numero di verbale (unico), la data e il voto.»
Passo 1 — Individuo entità, attributi e associazioni (le 4 domande)
Applico le 4 domande del Passo 1 a ogni parola importante del testo:
- STUDENTE — «La parola ha due o più dati propri descrittivi?» SÌ (matricola, nome, cognome, indirizzo); «Rappresenta un legame…?» NO → entità.
- Indirizzo (dello studente) — «Ha due o più dati propri descrittivi?» NO (un solo tipo di dato); «È collegata ad altri concetti?» NO → attributo; «voglio composto da via, città e provincia» → composto (lo completa la R2 del Passo 3).
- CORSO — «Ha due o più dati propri descrittivi?» SÌ (codice, titolo, crediti); «Rappresenta un legame…?» NO → entità. «Ogni corso è tenuto da un solo docente» → associazione con DOCENTE.
- DOCENTE — «Ha due o più dati propri descrittivi?» SÌ (codice, nome, cognome); «Rappresenta un legame…?» NO → entità.
- Telefono (del docente) — «Ha due o più dati propri descrittivi?» NO; «È collegata ad altri concetti?» NO → attributo; «più numeri di telefono» → multivalore.
- Esami — «Rappresenta un legame o un evento tra due o più concetti?» SÌ (sembrano un legame studente–corso). «La stessa coppia di istanze può tornare più volte?» SÌ: lo studente sostiene l'esame dello stesso corso in appelli diversi, e ogni volta è un fatto separato con verbale, data e voto propri → ESAME è un'entità (con due associazioni 1:n, già deciso al Passo 1, domanda 4).
- Segreteria studenti / Istituto — test del contenitore: «È una sola?» SÌ (il programma è di quella segreteria). «Ha dati propri?» NO. «Devo farne un elenco?» NO → è contesto: non fa parte del modello E-R.
Passo 2 — Tabella Entità / Attributi / Associazioni
| Costrutto | Tipo | Attributi / Collegamenti |
|---|---|---|
| STUDENTE | Entità | Matricola, Nome, Cognome, Indirizzo (composto) |
| CORSO | Entità | CodCorso, Titolo, Crediti |
| DOCENTE | Entità | CodDocente, Nome, Cognome, Telefono (multivalore) |
| ESAME | Entità | NumVerbale, Data, Voto |
| Sostiene / Riguarda / Tiene | Associazioni | ESAME–STUDENTE, ESAME–CORSO, CORSO–DOCENTE |
Passo 3 — Le 4 domande di revisione
- R1 — Come si identifica? Matricola, CodCorso, CodDocente, NumVerbale: tutti dichiarati univoci dal testo («univoca», «unico») → pallino pieno.
- R2 — Come sono fatti i dati? Indirizzo si spezza in Via, Città, Provincia → pallino grande; Telefono ha più valori → doppio cerchio (0,n).
- R3 — Come funziona il legame? Domanda magica su entrambi i lati (tabella qui sotto). NumVerbale/Data/Voto descrivono il sostenimento, già riconosciuto come evento al Passo 1 → attributi dell'entità ESAME, non del rombo.
- R4 — Segnale particolare? Nessun segnale nel testo: si salta.
| Domanda | Risposta | Esito |
|---|---|---|
| Per uno studente, quanti esami sostiene al minimo / al massimo? | nessuno o molti (negli anni) | (0,n) accanto a STUDENTE |
| Per un esame, quanti studenti al minimo / al massimo? | uno soltanto | (1,1) accanto a ESAME |
| Per un esame, quali corsi al minimo / al massimo? | uno soltanto | (1,1) accanto a ESAME |
| Per un corso, quanti esami al minimo / al massimo? | nessuno o molti (appelli) | (0,n) accanto a CORSO |
| Per un corso, quanti docenti al minimo / al massimo? | uno soltanto | (1,1) accanto a CORSO |
| Per un docente, quanti corsi al minimo / al massimo? | nessuno o molti | (0,n) accanto a DOCENTE |
Tre associazioni: Sostiene (STUDENTE–ESAME), Riguarda (ESAME–CORSO) e Tiene (DOCENTE–CORSO). Nessuna ha attributi propri: data e voto stanno sull'entità ESAME, non su un rombo!
Modello E-R finale
8 Terzo esempio: Officina — focus catena 1:n Percorso base
Le richieste del testo
Prima di leggere il procedimento svolto, prova a:
- disegnare una bozza con CLIENTE e VEICOLO;
- aggiungere RIPARAZIONE nel modo che ritieni corretto;
- controllare se la catena delle due associazioni 1:n rispetta la specifica.
Confronta soprattutto le cardinalità minime e massime e verifica che Data, Descrizione e Costo descrivano ogni intervento, non il veicolo in generale.
«Gestisco un'officina meccanica e vorrei un programma che:
- memorizzi i dati dei clienti: il codice (unico), il nome e il cognome; di ogni cliente vogliamo registrare più numeri di telefono;
- ricordi i dati dei veicoli: la targa (unica), la marca e il modello; ogni veicolo appartiene a un solo cliente, e un cliente può possedere più veicoli;
- registri le riparazioni: uno stesso veicolo può essere portato in officina più volte nel tempo; di ogni intervento vogliamo ricordare il numero della scheda di lavoro (unico), la data, una descrizione e il costo.»
Passo 1 — Individuo entità, attributi e associazioni (le 4 domande)
Applico le 4 domande del Passo 1 a ogni parola importante del testo:
- CLIENTE — «La parola ha due o più dati propri descrittivi?» SÌ (codice, nome, cognome); «Rappresenta un legame…?» NO → entità.
- Telefono (del cliente) — «Ha due o più dati propri descrittivi?» NO; «È collegata ad altri concetti?» NO → attributo; «più numeri di telefono» → multivalore.
- VEICOLO — «Ha due o più dati propri descrittivi?» SÌ (targa, marca, modello); «Rappresenta un legame…?» NO → entità. «Ogni veicolo appartiene a un solo cliente» → associazione con CLIENTE.
- Riparazioni — «Rappresenta un legame o un evento tra due o più concetti?» SÌ (sembrano il legame veicolo–officina). «La stessa coppia di istanze può tornare più volte?» SÌ: un'auto torna in officina decine di volte nella sua vita, e ogni volta bisogna ricordare data, descrizione e costo di quell'intervento → RIPARAZIONE è un'entità (con associazione 1:n verso VEICOLO, già deciso al Passo 1, domanda 4).
- Officina meccanica — test del contenitore: «È una sola?» SÌ (il programma gestisce quella officina). «Ha dati propri?» NO. «Devo farne un elenco?» NO → è contesto: non fa parte del modello E-R.
Passo 2 — Tabella Entità / Attributi / Associazioni
| Costrutto | Tipo | Attributi / Collegamenti |
|---|---|---|
| CLIENTE | Entità | CodCliente, Nome, Cognome, Telefono (multivalore) |
| VEICOLO | Entità | Targa, Marca, Modello |
| RIPARAZIONE | Entità | NumScheda, Data, Descrizione, Costo |
| Possiede / Ha | Associazioni | CLIENTE–VEICOLO, VEICOLO–RIPARAZIONE |
Passo 3 — Le 4 domande di revisione
- R1 — Come si identifica? CodCliente, Targa, NumScheda: tutti dichiarati univoci dal testo («unico», «unica») → pallino pieno.
- R2 — Come sono fatti i dati? Telefono → doppio cerchio (0,n).
- R3 — Come funziona il legame? Domanda magica su entrambi i lati (tabella qui sotto): due associazioni, entrambe 1:n. Data, Descrizione e Costo descrivono l'intervento già riconosciuto come evento al Passo 1 → attributi dell'entità RIPARAZIONE.
- R4 — Segnale particolare? Nessun segnale nel testo: si salta.
| Domanda | Risposta | Esito |
|---|---|---|
| Per un cliente, quanti veicoli al minimo / al massimo? | nessuno o molti | (0,n) accanto a CLIENTE |
| Per un veicolo, quale proprietario al minimo / al massimo? | uno soltanto | (1,1) accanto a VEICOLO |
| Per un veicolo, quante riparazioni al minimo / al massimo? | nessuna o molte (nel tempo) | (0,n) accanto a VEICOLO |
| Per una riparazione, quale veicolo al minimo / al massimo? | uno soltanto | (1,1) accanto a RIPARAZIONE |
Modello E-R finale
Prima di passare agli esempi avanzati, ripassa tre punti chiave. Feedback immediato.
9 Quarto esempio: Albergo — focus sottoinsieme + evento ripetibile Approfondimento
Le richieste del testo
Prova a produrre il modello completo prima di leggere la soluzione:
- individua entità, attributi e identificatori;
- decidi se SUITE è un attributo o un sottotipo;
- trasforma PRENOTAZIONE nel costrutto corretto;
- scrivi e giustifica tutte le cardinalità.
Consegna ideale: schema E-R, tre assunzioni esplicite e una breve lettura ad alta voce. Usa la rubrica della §12: 8/10 indica una buona autonomia.
«Gestisco un piccolo albergo e vorrei un programma che:
- memorizzi i dati dei clienti: il codice (unico), il nome e il cognome; di ogni cliente vogliamo registrare più numeri di telefono;
- descriva le camere: il numero (unico), il piano e i posti letto; alcune camere sono suite: per queste vogliamo registrare anche il supplemento giornaliero;
- gestisca le prenotazioni: uno stesso cliente può prenotare più volte la stessa camera; di ogni prenotazione vogliamo ricordare il codice (unico), la data di arrivo e la data di partenza.»
Passo 1 — Individuo entità, attributi e associazioni (le 4 domande)
Applico le 4 domande del Passo 1 a ogni parola importante del testo:
- CLIENTE — «La parola ha due o più dati propri descrittivi?» SÌ (codice, nome, cognome); «Rappresenta un legame…?» NO → entità.
- Telefono (del cliente) — «Ha due o più dati propri descrittivi?» NO; «È collegata ad altri concetti?» NO → attributo; «più numeri di telefono» → multivalore.
- CAMERA — «Ha due o più dati propri descrittivi?» SÌ (numero, piano, posti letto); «Rappresenta un legame…?» NO → entità. «Alcune camere sono suite» → gruppo speciale (lo decido con la R4 del Passo 3).
- Prenotazioni — «Rappresenta un legame o un evento tra due o più concetti?» SÌ (sembrano il legame cliente–camera). «La stessa coppia di istanze può tornare più volte?» SÌ: lo stesso cliente riprenota la stessa camera in periodi diversi, e ogni soggiorno ha codice, arrivo e partenza propri → PRENOTAZIONE è un'entità (con due associazioni 1:n, già deciso al Passo 1, domanda 4).
- Albergo — test del contenitore: «È una sola?» SÌ (il programma gestisce quel piccolo albergo). «Ha dati propri?» NO. «Devo farne un elenco?» NO → è contesto: non fa parte del modello E-R.
Passo 2 — Tabella Entità / Attributi / Associazioni
| Costrutto | Tipo | Attributi / Collegamenti |
|---|---|---|
| CLIENTE | Entità | CodCliente, Nome, Cognome, Telefono (multivalore) |
| CAMERA | Entità | Numero, Piano, PostiLetto |
| SUITE | Gruppo speciale di CAMERA | Supplemento (si completa con la R4 del Passo 3) |
| PRENOTAZIONE | Entità | CodPren, DataArrivo, DataPartenza |
| Effettua / Riguarda | Associazioni | CLIENTE–PRENOTAZIONE, PRENOTAZIONE–CAMERA |
Passo 3 — Le 4 domande di revisione
- R1 — Come si identifica? CodCliente, Numero, CodPren: tutti dichiarati univoci dal testo («unico») → pallino pieno.
- R2 — Come sono fatti i dati? Telefono → doppio cerchio (0,n).
- R3 — Come funziona il legame? Domanda magica su entrambi i lati (tabella qui sotto): due associazioni 1:n. CodPren/DataArrivo/DataPartenza descrivono la prenotazione già riconosciuta come evento al Passo 1 → attributi dell'entità PRENOTAZIONE.
- R4 — Segnale particolare? Sì: «alcune camere sono suite». SUITE ha un solo dato in più (il supplemento) e nessun legame proprio: basterebbe l'attributo Supplemento su CAMERA. Assunzione: scegliamo il sottoinsieme SUITE (una sola figlia, freccia verso il padre), perché il testo parla delle suite come categoria di camere — trade-off motivato. Non si indica t/p né e/s perché c'è una sola figlia.
| Domanda | Risposta | Esito |
|---|---|---|
| Per un cliente, quante prenotazioni al minimo / al massimo? | nessuna o molte (nel tempo) | (0,n) accanto a CLIENTE |
| Per una prenotazione, quale cliente al minimo / al massimo? | uno soltanto | (1,1) accanto a PRENOTAZIONE |
| Per una prenotazione, quale camera al minimo / al massimo? | una sola | (1,1) accanto a PRENOTAZIONE |
| Per una camera, quante prenotazioni al minimo / al massimo? | nessuna o molte (nel tempo) | (0,n) accanto a CAMERA |
Modello E-R finale
10 Quinto esempio: Palestra — focus entità debole + evento ripetibile Approfondimento
Le richieste del testo
Prima di leggere il procedimento svolto, prova a:
- capire perché AULA non riesce a identificarsi da sola;
- decidere se ISCRIZIONE è un rombo o un rettangolo;
- ricavare tutte le cardinalità con la domanda magica.
Aiuto: applica le 4 domande del Passo 1 e la convenzione dell'entità debole di Er3.2. Confronta poi con la soluzione e usa la rubrica della §12.
«Gestisco una palestra disposta su due edifici e vorrei un programma che:
- memorizzi i dati dei soci: il codice tessera (unico), il nome e il cognome; di ogni socio vogliamo registrare più numeri di telefono;
- descriva le aule: ogni aula è individuata dal numero d'aula e dall'edificio in cui si trova; di ogni aula conosciamo la capienza; dei due edifici conosciamo il nome;
- gestisca i corsi: il codice (unico), il nome e il livello; ogni corso è tenuto da un solo istruttore e si svolge in un'aula; degli istruttori conosciamo il codice (unico) e il cognome;
- registri le iscrizioni: uno stesso socio può iscriversi più volte allo stesso corso, in periodi diversi; di ogni iscrizione vogliamo ricordare il numero (unico), la data di inizio e la data di fine.»
Passo 1 — Individuo entità, attributi e associazioni (le 4 domande)
Applico le 4 domande del Passo 1 a ogni parola importante del testo:
- SOCIO — «La parola ha due o più dati propri descrittivi?» SÌ (codTessera, nome, cognome); «Rappresenta un legame…?» NO → entità. «Più numeri di telefono» → attributo multivalore.
- EDIFICIO — «Ha dati propri / più istanze?» SÌ (due edifici, ciascuno col nome) e legame con le aule → entità (anche con un solo attributo: non è un semplice valore di un'altra entità).
- AULA — «Ha due o più dati propri descrittivi?» SÌ (numero, capienza); «Rappresenta un legame…?» NO → entità. Ma serve anche l'identificatore: si risolve nel ramo «NO» della R1 del Passo 3.
- CORSO — «Ha due o più dati propri descrittivi?» SÌ (codice, nome, livello); «Rappresenta un legame…?» NO → entità. «Tenuto da un solo istruttore», «si svolge in un'aula» → associazioni con ISTRUTTORE e AULA (rombo SiTiene).
- ISTRUTTORE — «Ha due o più dati propri descrittivi?» SÌ (codice, cognome); «Rappresenta un legame…?» NO → entità.
- Iscrizioni — «Rappresenta un legame o un evento tra due o più concetti?» SÌ (sembrano il legame socio–corso). «La stessa coppia di istanze può tornare più volte?» SÌ: lo stesso socio rinnova l'iscrizione allo stesso corso in periodi diversi, e ogni periodo ha numero e date proprie → ISCRIZIONE è un'entità (con due associazioni 1:n, già deciso al Passo 1, domanda 4).
- Palestra — test del contenitore: «È una sola?» SÌ (il programma gestisce quella palestra). «Ha dati propri?» NO. «Devo farne un elenco?» NO → è contesto: non fa parte del modello E-R.
Passo 2 — Tabella Entità / Attributi / Associazioni
| Costrutto | Tipo | Attributi / Collegamenti |
|---|---|---|
| SOCIO | Entità | CodTessera, Nome, Cognome, Telefono (multivalore) |
| EDIFICIO | Entità | NomeEdificio |
| AULA | Entità | NumAula, Capienza — identificatore da completare (ramo «NO» della R1) |
| CORSO | Entità | CodCorso, Nome, Livello |
| ISTRUTTORE | Entità | CodIstruttore, Cognome |
| ISCRIZIONE | Entità | CodIscr, DataInizio, DataFine |
| Effettua, Riguarda, SiTiene, Tiene, Appartiene | Associazioni | collegano le entità come da testo |
Passo 3 — Le 4 domande di revisione
- R1 — Come si identifica? CodTessera, NomeEdificio, CodCorso, CodIstruttore, CodIscr: dichiarati univoci → pallino pieno. Per AULA non c'è identificatore proprio: si costruisce la coppia NumAula + Nome(EDIFICIO) (lo stesso numero può ripetersi nei due edifici) → entità debole, pallino nero esterno a L agganciato all'associazione identificante Appartiene.
- R2 — Come sono fatti i dati? Telefono → doppio cerchio (0,n).
- R3 — Come funziona il legame? Domanda magica su entrambi i lati (tabella qui sotto). CodIscr/DataInizio/DataFine descrivono l'iscrizione già riconosciuta come evento al Passo 1 → attributi dell'entità ISCRIZIONE.
- R4 — Segnale particolare? Nessun segnale nel testo: si salta. (L'entità debole AULA è già il ramo «NO» della R1, non un costrutto da cercare a parte.)
| Domanda | Risposta | Esito |
|---|---|---|
| Per un socio, quante iscrizioni al minimo / al massimo? | nessuna o molte (nel tempo) | (0,n) accanto a SOCIO |
| Per un'iscrizione, quale socio? | uno soltanto | (1,1) accanto a ISCRIZIONE |
| Per un'iscrizione, quale corso? | uno soltanto | (1,1) accanto a ISCRIZIONE |
| Per un corso, quante iscrizioni? | nessuna o molte | (0,n) accanto a CORSO |
| Per un corso, quale aula? | una soltanto | (1,1) accanto a CORSO |
| Per un'aula, quanti corsi? | nessuno o molti (in orari diversi) | (0,n) accanto ad AULA |
| Per un'aula, quale edificio? | uno soltanto (obbligatorio: serve a identificarla!) | (1,1) accanto ad AULA |
| Per un edificio, quante aule? | almeno una, anche molte — assunzione: ogni edificio del minimondo ha almeno un'aula | (1,n) accanto a EDIFICIO |
| Per un istruttore, quanti corsi? | nessuno o molti | (0,n) accanto a ISTRUTTORE |
| Per un corso, quale istruttore? | uno soltanto | (1,1) accanto a CORSO |
Cinque associazioni: Effettua (SOCIO–ISCRIZIONE), Riguarda (ISCRIZIONE–CORSO), SiTiene (CORSO–AULA), Tiene (ISTRUTTORE–CORSO) e Appartiene (AULA–EDIFICIO). Attenzione: Appartiene non è una normale 1:n, è l'associazione identificante dell'entità debole AULA.
Modello E-R finale
11 Sesto esempio: Panificio — focus generalizzazione (p,s) + evento ripetibile Approfondimento
Le richieste del testo
Prima di leggere il procedimento svolto, prova a:
- decidere se FORNITORE è un attributo o un'entità (domande 1-2 del Passo 1);
- applicare la domanda 4 a CONSEGNA (è ripetibile?);
- capire quali lettere t/p ed e/s merita la gerarchia del requisito 3.
Attenzione alla parola «entrambe»: determina la copertura. Confronta poi con la soluzione e usa la rubrica della §12.
«Gestisco un panificio e vorrei un programma che:
- memorizzi i dati dei fornitori: la partita IVA (unica) e la ragione sociale; di ogni fornitore vogliamo registrare più numeri di telefono;
- registri le consegne: un fornitore effettua più consegne dello stesso prodotto in giorni diversi; di ogni consegna vogliamo ricordare il numero (unico), la data e la quantità di pezzi consegnati;
- descriva i prodotti da forno: il codice (unico), il nome e il prezzo; alcuni prodotti sono vegani: per questi registriamo la certificazione vegana; altri sono senza glutine: per questi registriamo la soglia di glutine certificata; un prodotto può appartenere a entrambe le categorie.»
Passo 1 — Individuo entità, attributi e associazioni (le 4 domande)
Applico le 4 domande del Passo 1 a ogni parola importante del testo:
- FORNITORE — «La parola ha due o più dati propri descrittivi?» SÌ (partita IVA e ragione sociale: due dati propri, non solo un nome); «Rappresenta un legame…?» NO → entità, non attributo del prodotto.
- Telefono (del fornitore) — «Ha due o più dati propri descrittivi?» NO; «È collegata ad altri concetti?» NO → attributo; «più numeri di telefono» → multivalore.
- PRODOTTO_DA_FORNO — «Ha due o più dati propri descrittivi?» SÌ (codice, nome, prezzo); «Rappresenta un legame…?» NO → entità. «Alcuni prodotti sono vegani, altri senza glutine, un prodotto può appartenere a entrambe» → gruppi speciali (li decido con la R4 del Passo 3).
- Consegne — «Rappresenta un legame o un evento tra due o più concetti?» SÌ (sembrano il legame fornitore–prodotto). «La stessa coppia di istanze può tornare più volte?» SÌ: un fornitore effettua più consegne dello stesso prodotto in giorni diversi, e ogni consegna ha numero, data e quantità propri → CONSEGNA è un'entità (con due associazioni 1:n, già deciso al Passo 1, domanda 4).
- Panificio — test del contenitore: «È una sola?» SÌ (il programma gestisce quel panificio). «Ha dati propri?» NO. «Devo farne un elenco?» NO → è contesto: non fa parte del modello E-R.
Passo 2 — Tabella Entità / Attributi / Associazioni
| Costrutto | Tipo | Attributi / Collegamenti |
|---|---|---|
| FORNITORE | Entità | PIVA, RagioneSociale, Telefono (multivalore) |
| PRODOTTO_DA_FORNO | Entità | Codice, Nome, Prezzo |
| VEGANO / SENZA_GLUTINE | Gruppi speciali di PRODOTTO_DA_FORNO | CertificazioneVegana / SogliaGlutine (si completano con la R4 del Passo 3) |
| CONSEGNA | Entità | NumConsegna, Data, Quantita |
| Effettua / Riguarda | Associazioni | FORNITORE–CONSEGNA, CONSEGNA–PRODOTTO_DA_FORNO |
Passo 3 — Le 4 domande di revisione
- R1 — Come si identifica? PIVA, Codice, NumConsegna: dichiarati univoci → pallino pieno.
- R2 — Come sono fatti i dati? Telefono → doppio cerchio (0,n).
- R3 — Come funziona il legame? Domanda magica su entrambi i lati (tabella qui sotto): due associazioni 1:n. NumConsegna/Data/Quantita descrivono la consegna già riconosciuta come evento al Passo 1 → attributi dell'entità CONSEGNA.
- R4 — Segnale particolare? Sì: «alcuni prodotti sono vegani, altri senza glutine». Due figlie con dati propri (CertificazioneVegana, SogliaGlutine) → generalizzazione con barra e freccia verso il padre. «Alcuni prodotti» → copertura parziale; «un prodotto può appartenere a entrambe» → sovrapposta. Copertura (p,s).
| Domanda | Risposta | Esito |
|---|---|---|
| Per un fornitore, quante consegne al minimo / al massimo? | nessuna o molte (nel tempo) | (0,n) accanto a FORNITORE |
| Per una consegna, quale fornitore al minimo / al massimo? | uno soltanto | (1,1) accanto a CONSEGNA |
| Per una consegna, quale prodotto al minimo / al massimo? | uno soltanto (assunzione esplicitata) | (1,1) accanto a CONSEGNA |
| Per un prodotto, quante consegne al minimo / al massimo? | nessuna o molte (nel tempo) | (0,n) accanto a PRODOTTO_DA_FORNO |
Modello E-R finale
12 Verifica del modello e checklist finale Percorso base
Alla fine controlli il disegno sul testo (a scuola lo confronti con la traccia). Come?
- Leggi il disegno ad alta voce: «un AUTORE (1,n) SCRIVE (1,n) LIBRI» e confronta con le frasi del testo;
- Controlla che tutto ciò che chiede il testo ci sia e che non ci sia niente di inventato;
- Controlla lo stile del tuo disegno: nomi al singolare e in maiuscolo (è la convenzione del disegno, il testo della traccia non la usa), ogni entità con chiave (o debole spiegata), niente chiavi sui rombi, dati del legame sul rombo.
Tre esercizi graduati — prova tu
🟢 Livello 1 — Guidato: aggiungi un attributo
Specifica: «Dei soci vogliamo anche l'email (opzionale)». Dove lo metti? Che simbolo usi? È identificatore?
Soluzione: Attributo semplice Email su SOCIO, pallino vuoto, nessuna cardinalità (singolo valore opzionale = attributo normale, non multivalore). Non è identificatore.
🟡 Livello 2 — Semi-guidato: scegli la cardinalità
Specifica: «Ogni corso ha al massimo 30 studenti, ogni studente segue da 3 a 6 corsi». Associazione Frequenta(STUDENTE,CORSO): quali cardinalità?
Soluzione: Accanto a STUDENTE → (3,6) = per uno studente quanti corsi. Accanto a CORSO → (0,30) = per un corso quanti studenti (0 se corso appena creato). È una n:m.
🔴 Livello 3 — Autonomo: individua l'errore
Schema errato: ORDINE come rombo tra CLIENTE e PRODOTTO con attributi Data, Totale. La specifica dice: «Un cliente ordina più volte lo stesso prodotto in date diverse».
Soluzione: È l'errore visto nel Passo 1: la stessa coppia (cliente,prodotto) si ripete → ORDINE deve essere entità con NumOrdine identificatore, collegata con due 1:n a CLIENTE e PRODOTTO. Il rombo collegherebbe la coppia una volta sola.
| Criterio | 0 punti | 1 punto | 2 punti |
|---|---|---|---|
| Entità ed eventi | Mancano o sono quasi tutti errati | Individuati con qualche incertezza | Entità ed eventi sono distinti e motivati |
| Attributi e identificatori | Mancano o sono collocati male | Prevalentemente corretti | Completi, pertinenti e identificati |
| Associazioni e cardinalità | Legami o cardinalità assenti | Qualche errore di verso o min/max | Legami e cardinalità sono giustificati |
| Costrutti particolari | Non riconosciuti | Riconosciuti ma non sempre motivati | Applicati solo quando necessari |
| Tutto coperto e assunzioni | Frasi dimenticate | Quasi tutto coperto | Ogni frase si ritrova nel disegno e le assunzioni sono scritte |
Come leggere il punteggio: 0–4 = ripassa le basi; 5–7 = stai migliorando; 8–10 = sei autonomo. Basta valutare l’esempio che hai scelto tra §§6–8 (base) o §§9–11 (approfondimento).
Esempio già valutato — come si usa la rubrica
Per calibrare l'autovalutazione, ecco un lavoro-tipo già valutato. Consegna di uno studente sulla specifica della videoteca: FILM (Codice, Titolo, Anno), CASA (Sede, Telefono — senza identificatore), CLIENTE (CodCliente, Nome), NOLEGGIO come entità (NumNoleggio, DataUscita, DataRientro) con le due associazioni verso CLIENTE e FILM; associazione Produce 1:n corretta tra CASA e FILM; però il lato NOLEGGIO–FILM porta (0,n) invece di (1,1), e non c'è nessuna assunzione esplicitata.
| Criterio | Punti | Motivazione |
|---|---|---|
| Entità ed eventi | 2 | NOLEGGIO riconosciuto come entità (test decisivo applicato); CASA correttamente distinta da un semplice attributo di FILM. |
| Attributi e identificatori | 1 | Attributi pertinenti e ben collocati, ma CASA resta senza identificatore: ogni entità ne deve avere uno (es. CodCasa). |
| Associazioni e cardinalità | 1 | Produce corretta (1:n); ma ogni noleggio riguarda un solo film → accanto a NOLEGGIO serve (1,1), non (0,n). |
| Costrutti particolari | 2 | Evento ripetibile trasformato correttamente; nessun costrutto inventato oltre la specifica. |
| Tutto coperto e assunzioni | 1 | Tutto coperto, ma manca la lista delle assunzioni (es. «un noleggio riguarda un solo film»). |
Totale 7/10 → stai migliorando. Per arrivare a 9–10: aggiungi la chiave a CASA, correggi (1,1) sui lati di NOLEGGIO, scrivi le assunzioni. Quando ti valuti, scrivi punteggio + perché: se non sai spiegare un 2, è un 1.
Quiz finale cumulativo — 10 domande su tutto il manuale
Ogni risposta ti spiega subito il perché. Alla fine premi ↺ Ricomincia e rifallo fino a 10/10: è il miglior ripasso possibile prima della verifica.
13 Esercizi graduati per l'Esame di Stato Percorso completo
Tre problemi a complessità progressiva per allenare l'autonomia. Per ciascun esercizio puoi consultare gli aiuti progressivi a tre livelli (apri solo quello che ti serve!) prima di visualizzare la soluzione completa con schema E-R.
Esercizio 1 — Gestione parco auto aziendale
«Una società di consulenza gestisce il proprio parco autoveicoli. Di ogni veicolo interessa memorizzare la targa (univoca), il modello, la categoria (utilitaria, berlina, furgone) e la data di immatricolazione. Dei dipendenti si registrano matricola (univoca), cognome, nome e uno o più recapiti telefonici. I dipendenti possono noleggiare più volte lo stesso veicolo per trasferte di lavoro; di ciascun noleggio si vogliono registrare il codice noleggio, la data di inizio, la data di fine e i chilometri percorsi.»
💡 Livello 1 — Aiuto: Entità individuate e assunzioni
- Sostantivi candidati:
VEICOLO(con Targa PK),DIPENDENTE(con Matricola PK, Telefono multivalore). - Test decisivo: «Un dipendente può noleggiare più volte lo stesso veicolo?» Sì →
NOLEGGIOnon può essere un rombo, ma è una terza entità con CodNoleggio PK. - Società di consulenza: è il contesto del minimondo, resta fuori.
🔍 Livello 2 — Aiuto: Struttura dei legami e cardinalità
DIPENDENTE (0,n) ─── Effettua ─── (1,1) NOLEGGIO: un dipendente effettua da 0 a molti noleggi; ogni noleggio è effettuato da esattamente 1 dipendente.NOLEGGIO (1,1) ─── Riguarda ─── (0,n) VEICOLO: ogni noleggio riguarda 1 solo veicolo; un veicolo può essere noleggiato da 0 a molte volte.- Attributo Telefono: doppio cerchio (0,n) attaccato a
DIPENDENTE.
⭐ Livello 3 — Soluzione completa commentata e Diagramma E-R
Schema Logico risultante:
DIPENDENTE (Matricola(PK), Cognome, Nome) TELEFONO_DIPENDENTE (PK(MatricolaDipendente, NumeroTelefono), FK(MatricolaDipendente)) VEICOLO (Targa(PK), Modello, Categoria, DataImmatricolaz) NOLEGGIO (CodNoleggio(PK), DataInizio, DataFine, KmPercorsi, FK(MatricolaDipendente), FK(TargaVeicolo))
Esercizio 2 — Piattaforma di Formazione Online
«Una piattaforma e-learning eroga corsi multimediali. Di ogni corso si memorizzano il codice corso (univoco), il titolo, la descrizione e il prezzo. Ogni corso è suddiviso in moduli didattici ordinati: i moduli non hanno un codice globale, ma sono numerati progressivamente all'interno del rispettivo corso (NumModulo 1, 2, 3...) e hanno titolo e durata in minuti. Gli utenti registrati possono essere Studenti o Docenti: per tutti si memorizzano email (univoca) e password; degli studenti si registrano matricola e data iscrizione, mentre dei docenti si registra la tariffa oraria e la specializzazione. Uno studente può iscriversi a più corsi (iscrizione a data fissa) e ogni corso può avere molti studenti iscritti.»
💡 Livello 1 — Aiuto: Entità e Costrutti critici
MODULOè un'entità debole: è identificato da NumModulo + CodiceCorso(CORSO). Pallino nero esterno collegato all'associazione identificante.UTENTEè l'entità padre di una generalizzazione (t,e) con figlieSTUDENTEeDOCENTE.- Iscrizione tra
STUDENTEeCORSOè una relazione n:m con attributo DataIscrizione sul rombo (oppure entità autonoma se lo studente potesse re-iscriversi allo stesso corso).
🔍 Livello 2 — Aiuto: Cardinalità e Gerarchia
CORSO (1,n) ─── Comprende ─── (1,1) MODULO(entità debole).STUDENTE (0,n) ─── Iscrizione (Data) ─── (0,n) CORSO: associazione n:m con attributo di legame Data.- Generalizzazione: freccia da
STUDENTEeDOCENTEversoUTENTEcon vincolo(t,e)— totale ed esclusiva.
⭐ Livello 3 — Soluzione completa commentata e Diagramma E-R
Esercizio 3 — Pronto Soccorso, Triage e Visite Ospedaliere
«Un presidio ospedaliero intende informatizzare l'accettazione e il percorso clinico del Pronto Soccorso. All'arrivo, il Paziente (codice fiscale univoco, cognome, nome, data di nascita, recapito) effettua un Accesso registrato da un Infermiere di triage (matricola, cognome, nome). Dell'Accesso si memorizzano un numero progressivo annuale (identificatore), la data e l'ora di arrivo e il Codice Colore di triage (Rosso, Giallo, Verde, Bianco). Durante la permanenza associata a quello specifico accesso, il paziente può essere sottoposto a una o più Visite mediche eseguite da Medici di guardia (matricola, cognome, specializzazione); di ogni visita si registrano orario di inizio, diagnosi preliminare ed eventuale prescrizione. Nel corso di una visita medica, il medico può richiedere uno o più Esami diagnostici (codice esame univoco, tipologia, esito e ora refertazione).»
💡 Livello 1 — Aiuto: Architettura delle entità
- 4 Attori/Oggetti principali:
PAZIENTE,INFERMIERE,MEDICO,ESAME. - 2 Eventi temporali distinti a cascata:
ACCESSO: evento di ingresso al triage (collega Paziente e Infermiere).VISITA: atto clinico compiuto durante l'accesso (collega Accesso e Medico).
- Attenzione:
VISITAnon si collega direttamente a Paziente, ma adACCESSO, garantendo la tracciabilità della specifica permanenza ospedaliera.
🔍 Livello 2 — Aiuto: Catena delle cardinalità 1:n
PAZIENTE (0,n) ─── Ingresso ─── (1,1) ACCESSOINFERMIERE (0,n) ─── Triage ─── (1,1) ACCESSOACCESSO (1,n) ─── Include ─── (1,1) VISITAMEDICO (0,n) ─── Esegue ─── (1,1) VISITAVISITA (0,n) ─── Prescrive ─── (1,1) ESAME
⭐ Livello 3 — Soluzione completa commentata e Diagramma E-R
14 Guida alla Seconda Prova: dalla consegna d'esame allo schema logico Percorso completo
All'Esame di Stato la commissione valuta non solo la correttezza dello schema E-R, ma la completezza e chiarezza della documentazione. Ecco come tradurre il lavoro che hai già fatto (Passi 0→1→2→3) nei 5 paragrafi della consegna d'esame, usando come esempio la Biblioteca della §6 che già conosci.
| Passo del manuale | Cosa produce | Paragrafo della consegna |
|---|---|---|
| Passo 0 (§2) + Passo 1 (§3) | Lettura, ipotesi numerate, poi le 4 domande | Par. 1 — Analisi dei requisiti e assunzioni |
| Passo 2 (§4) + Passo 3 (§5) | Tabella di lavoro completata (entità, attributi, cardinalità, costrutti) | Par. 2 — Dizionario dei dati |
| Disegno E-R finale (esempi §§6–11) | Schema concettuale con tutti i costrutti | Par. 3 — Diagramma concettuale E-R |
| Regole di derivazione (nuovo, qui sotto) | Spiegazione delle trasformazioni E-R → tabelle | Par. 4 — Ristrutturazione del modello |
| Schema logico finale | Le tabelle con PK e FK | Par. 5 — Schema relazionale |
Paragrafo 1 — Analisi dei requisiti e Assunzioni Progettuali
Riformula brevemente gli obiettivi del sistema. Poi elenca in modo numerato le assunzioni che giustificano le tue scelte dove la traccia è ambigua o incompleta. Le hai iniziate al Passo 0 (§2) e le hai ampliate al Passo 1 (§3, domanda 4) e al Passo 3 (§5, R3 e R4): ora le metti per iscritto nella consegna.
• Assunzione 1: Un libro può essere scritto da più autori e un autore può aver scritto più libri → associazione Scrittura n:m.
• Assunzione 2: Un socio può prendere in prestito molti libri, ma lo stesso libro è prestato a un solo socio alla volta → il testo non lo dice esplicitamente, lo si deduce dal contesto di una piccola biblioteca.
• Assunzione 3: I donatori sono un sottoinsieme di SOCIO (e non una semplice etichetta) perché il testo presenta i donatori come «una categoria di soci».
Paragrafo 2 — Dizionario dei Dati (Tavola degli Attributi)
Presenta una tabella che descrive ogni entità, i suoi attributi, il tipo logico e la chiave primaria. Questa tabella è la traduzione formale della tabella di lavoro del Passo 2 (§4): prendi ogni riga della tabella e aggiungi le colonne con i tipi e i vincoli.
| Entità / Relazione | Nome Attributo | Tipo logico suggerito | Descrizione e Vincoli | Chiave |
|---|---|---|---|---|
| AUTORE | CodAutore | INT | Codice univoco (NOT NULL) | PK |
| AUTORE | Nome | VARCHAR(50) | Nome dell'autore | - |
| AUTORE | Cognome | VARCHAR(50) | Cognome dell'autore | - |
| LIBRO | Codice | INT | Codice univoco (NOT NULL) | PK |
| LIBRO | Titolo | VARCHAR(100) | Titolo del libro | - |
| LIBRO | AnnoPubbl | INT | Anno di pubblicazione | - |
| SOCIO | NumTessera | INT | Numero di tessera univoco (NOT NULL) | PK |
| SOCIO | Nome | VARCHAR(50) | Nome del socio | - |
| SOCIO | Cognome | VARCHAR(50) | Cognome del socio | - |
| DONATORE | ImportoDonazioni | DECIMAL(10,2) | Importo complessivo donato | - |
Paragrafo 3 — Diagramma Concettuale E-R
Disegna lo schema E-R che hai costruito con il metodo del manuale: rettangoli al singolare, chiavi con pallino pieno, rombi per le associazioni con cardinalità (min,max) su tutti i rami, freccia verso il padre per le generalizzazioni. Questo è il risultato del Passo 3 (§5) applicato alla tabella di lavoro.
Qui puoi copiare direttamente lo schema della Biblioteca (§6) che hai già disegnato — oppure ridisegnarlo meglio sul foglio protocollo.
Paragrafo 4 — Ristrutturazione del Modello (E-R → Tabelle)
Questa è la parte nuova: qui spieghi come trasformi lo schema E-R in tabelle. Ogni costrutto speciale ha una regola precisa:
| Costrutto E-R | Regola di trasformazione | Applicazione alla Biblioteca |
|---|---|---|
| Entità semplice | Diventa una tabella con le colonne = attributi | AUTORE(CodAutore(PK), Nome, Cognome) LIBRO(Codice(PK), Titolo, AnnoPubbl) SOCIO(NumTessera(PK), Nome, Cognome) |
| Attributo multivalore | Tabella satellite con PK composta e FK verso il padre | TELEFONO_SOCIO(PK(NumTessera, Telefono), FK(NumTessera)) |
| Associazione n:m | Nuova tabella ponte: PK(...) composta + FK(...) per ciascuna estremità (+ attributi del rombo) | SCRITTURA(PK(CodAutore, CodiceLibro), FK(CodAutore), FK(CodiceLibro)) |
| Associazione 1:n | La PK del lato «1» diventa FK nella tabella del lato «n» | PRESTITO(CodPrestito(PK), …, FK(NumTessera), FK(CodiceLibro)) |
| Sottoinsieme / Generalizzazione | Scelta: tabella unica nel padre con tutti gli attributi, oppure tabelle separate per ogni figlia | DONATORE: si può accorpare a SOCIO (con ImportoDonazioni NULL per i non-donatori) oppure separare — entrambe le scelte sono valide |
| Entità debole | La tabella include la FK dell'entità forte come parte della PK composta | (non presente in questo esempio — vedi palestra §10) |
| Attributo composto | Ogni componente diventa una colonna a sé (nel logico non esiste l'attributo composto) | (non presente in questo esempio — vedi segreteria §7) |
Paragrafo 5 — Schema Logico Relazionale Finale
Scrivi le tabelle finali con questa notazione: Attributo(PK) per una chiave primaria semplice; PK(attr1, attr2, …) per una PK composta; FK(Attributo) per ogni chiave esterna.
AUTORE (CodAutore(PK), Nome, Cognome) LIBRO (Codice(PK), Titolo, AnnoPubbl) SOCIO (NumTessera(PK), Nome, Cognome) DONATORE (PK(NumTessera), FK(NumTessera), ImportoDonazioni) ← sottoinsieme: PK = FK verso SOCIO SCRITTURA (PK(CodAutore, CodiceLibro), FK(CodAutore), FK(CodiceLibro)) ← tabella ponte n:m TELEFONO_SOCIO (PK(NumTessera, Telefono), FK(NumTessera)) ← tabella satellite multivalore PRESTITO (CodPrestito(PK), DataPrestito, FK(NumTessera), FK(CodiceLibro))
Notazione:
Matricola(PK) · PK(Matricola, IdEsame) · FK(Matricola). Esempio ponte: Svolgimento (PK(Matricola, IdEsame), FK(Matricola), FK(IdEsame), voto, data).15 Scheda di sintesi E-R (Cheat-Sheet) stampabile Consultazione
Tutto quello che serve per il ripasso rapido prima della verifica o dell'esame, concentrato in una scheda sinottica.
Tavola Sinottica Rapida — Progettazione E-R e Modello Logico
1. Simbologia Grafica E-R
• Rettangolo: Entità (sostantivo singolare)• Rombo: Associazione (verbo/legame)
• Pallino pieno (●): Identificatore univoco (PK)
• Pallino vuoto (○): Attributo semplice
• Doppio cerchio (◎): Attributo multivalore (0,n)
• Pallino grande con rami: Attributo composto
• Freccia verso il padre: Generalizzazione (t/p, e/s)
2. Le 4 + 4 domande (il procedimento da ricordare)
• Passo 1 — ruolo della parola: ha dati propri? è collegata ad altro? è un legame? la stessa coppia si ripete?• Passo 3 — revisione dello schema: come si identifica? (R1) come sono fatti i dati? (R2) come funziona il legame? (R3) il testo segnala qualcosa di particolare? (R4, solo se c'è un segnale)
• Domanda Magica (dentro R3): «Presa UNA istanza di A, quante di B al min / max?» La coppia (min,max) va accanto ad A. Conta le istanze collegate: non è il test di ripetibilità (quello è il Passo 1, domanda 4).
• Test Decisivo (Passo 1, domanda 4): «La stessa coppia può ripetersi?» Se SÌ → entità con due 1:n.
3. Regole di Traduzione nel Logico
• Relazione 1:n: la PK del lato (0,1)/(1,1) diventa chiave esterna nella tabella del lato (0,n)/(1,n): si scriveFK(Attributo).• Relazione n:m: nasce una tabella ponte con PK composta e le FK esplicite, es.
Svolgimento (PK(Matricola, IdEsame), FK(Matricola), FK(IdEsame), …).• Relazione 1:1: FK collocata nell'entità con partecipazione obbligatoria (1,1).
• Notazione:
Codice(PK) · PK(attr1, attr2) · FK(chiaveEsterna).
4. Checklist Pre-Consegna d'Esame
1. [ ] Ogni entità ha la sua PK (pallino pieno)2. [ ] Nomi di entità e legami: singolare + maiuscola nel tuo schema (la traccia non li usa)
3. [ ] Cardinalità presenti su tutti i rami
4. [ ] Eventi con storico modellati come entità
5. [ ] Generalizzazioni con vincoli (t/p, e/s)
6. [ ] Tabella delle assunzioni compilata
7. [ ] Verifica con lettura ad alta voce eseguita
16 Glossario dei termini Consultazione
Riferimento rapido per i termini usati nel manuale.
- Minimondo
- La parte di mondo che devi disegnare, quella descritta nel testo.
- Testo (della traccia)
- La traccia che ti danno all’esame con le richieste da trasformare in disegno.
- Entità
- Persone, oggetti o luoghi di cui il programma deve ricordare dati (STUDENTE, LIBRO, CAMERA): ne puoi fare l'elenco e contarle. Il segnale: il testo dice «di questa cosa vogliamo sapere…». Si disegnano con un rettangolo.
- Attributo
- Dato di un’entità. Vuoto = normale, pieno = chiave, doppio cerchio = più valori, grande = si divide in pezzi.
- Associazione
- Legame tra entità. Rombo. Non ha chiave, a volte ha una data.
- Cardinalità
- Numeri vicino all’entità: quanti legami può avere. 0 = può non averne, 1 = deve averne.
- Identificatore (chiave)
- Dato che identifica uno solo. Pallino pieno.
- Generalizzazione
- Padre con figlie che hanno già tutto del padre più qualcosa. Con due figlie scrivi t/p ed e/s, con una sola è un sottoinsieme.
- Entità debole
- Entità che da sola non si riconosce (es. Aula senza Edificio). Pallino nero a L sulla relazione.
- Associazione ricorsiva
- Legame dentro lo stesso gruppo. Anello a U con ruoli.
- Associazione ternaria
- Legame a tre insieme. Un solo rombo, non tre.
- Test decisivo
- La stessa coppia può tornare? Sì → entità, non rombo.
- Scelta tra due modi (trade-off)
- Due strade giuste: scegli in base a cosa chiede il testo.
- Ipotesi (assunzione)
- Decisione sul minimondo che il testo non impone. Si scrive al Passo 0 e si amplia dopo, per giustificare una scelta (es. «la coppia socio–libro non si ripete»).
- Istanza
- Una singola «cosa» del gruppo: Marco Rossi è un'istanza dell'entità STUDENTE. Nel disegno non appare, ma ogni rettangolo rappresenta tutte le sue istanze.
- Sottoinsieme
- Generalizzazione con una sola figlia: freccia verso il padre e nessuna indicazione e/s. Es. DONATORE sottoinsieme di SOCIO.
- Chiave primaria (PK)
- L'attributo con pallino pieno che identifica uno solo ogni istanza. Nel modello logico:
Attributo(PK)se semplice, oppurePK(attr1, attr2, …)se composta. - Chiave esterna (FK)
- Nel passaggio al logico, nei legami 1:n la chiave del lato «1» si ricopia nella tabella del lato «n»: si scrive
FK(Attributo). Nelle tabelle ponte compare insieme alla PK composta, es.Svolgimento (PK(Matricola, IdEsame), FK(Matricola), FK(IdEsame), …). - Associazione n:m
- Legame in cui entrambi i lati possono arrivare a molti (massimo = n). Nel logico nasce una tabella ponte con le due chiavi esterne.
- Entità forte
- Entità che ha un identificatore proprio (pallino pieno) e può «reggere» un'entità debole. Es. EDIFICIO rispetto ad AULA.