Livello concettuale e schema E/R
Dalla differenza tra sistemi informativi e informatici alla progettazione concettuale: il modello Entity/Relationship per rappresentare entità, associazioni e attributi. UML e Chen a confronto, cardinalità, chiavi, associazioni con attributi.
Vedremo cosa significa modellare i dati, come progettare una base di dati attraverso i 3 livelli di astrazione affrontando il primo dei 3 livelli, il livello concettuale, e studiando un modello che consente di rappresentare i dati in modo semplificato: il modello entity/relationship.
1. Il modello dei dati
Modellare i dati significa realizzare una rappresentazione semplificata della realtà osservata o di un problema, individuandone gli elementi caratterizzanti e i legami che intercorrono tra essi.
La progettazione di un modello di dati avviene attraverso 3 livelli di astrazione:
LIVELLO CONCETTUALE o livello di oggetti: rappresenta la realtà dei dati e le relazioni tra essi attraverso uno schema. Indipendente dal DBMS.
LIVELLO LOGICO o livello di record: rappresenta il modo in cui i dati vengono organizzati negli archivi ovvero la composizione e la loro struttura logica. Deriva dal concettuale.
LIVELLO FISICO è l’implementazione del livello logico sui supporti per la registrazione fisica dei dati (file, indici, partizioni).
2. Il livello concettuale ed il modello E/R
La progettazione concettuale è la sintesi tra la visione degli utenti e la visione di chi progetta l’applicazione. Essa deve possedere 2 caratteristiche opposte: essere estremamente precisa ed espressa con formalismi sufficientemente semplici da permetterne la lettura anche da parte di utenti non tecnici.
Il modello Entità / Associazioni ha queste caratteristiche.
In letteratura si legge spesso Modello Entità / Relazioni ma il termine relazione è importante nel modello relazionale dei dati, assumendo un significato totalmente diverso poiché si riferisce al livello logico della progettazione. Qui usiamo Entità / Associazioni.
Ipotizziamo di voler rappresentare i libri presenti in una biblioteca e i relativi editori. Potrò esprimere il modello nei due seguenti modi:
2.2 I componenti del diagramma E/R
2.1 Le Entità: «cosa devo memorizzare?»
Un’entità rappresenta una classe di oggetti della realtà che hanno caratteristiche comuni e un’esistenza autonoma nel contesto analizzato.
| Concetto | Esempio |
|---|---|
| Entità | STUDENTE |
| Istanza / occorrenza | Mario Rossi, matricola S1024 |
| Entità | LIBRO |
| Istanza / occorrenza | «Il nome della rosa», ISBN 9788845292613 |
2.2 Associazioni: «come sono collegati gli oggetti?»
Una realtà interessante non è composta da oggetti isolati. Gli oggetti interagiscono: uno studente frequenta un corso, un cliente effettua ordini, un autore scrive libri.
| Entità A | Associazione | Entità B |
|---|---|---|
| STUDENTE | frequenta | CORSO |
| CLIENTE | effettua | ORDINE |
| AUTORE | scrive | LIBRO |
2.2.1 Grado delle associazioni e ricorsive
Le associazioni hanno un grado determinato dal numero di entità che partecipano. Le più diffuse sono le binarie. Ternaria: Fornitore, Prodotto, Magazzino → Fornitura. Ricorsiva: DIPENDENTE coordina DIPENDENTE.
2.3 Attributi di entità e di associazioni
Un’entità da sola dice che cosa stiamo rappresentando, ma non quali informazioni vogliamo memorizzare. Gli attributi descrivono le proprietà delle entità. Formato, dimensione, opzionalità.
Anche le associazioni possono avere attributi. Esempio concessionaria: Persona, Automobile, Acquisto con data, prezzo_acquisto, targa.
In questa fase di progettazione vanno individuati solo gli attributi elementari e non vanno definiti gli attributi derivati da una elaborazione. Esempio: età da DataNascita, saldoContoCorrente da movimenti. Il mancato rispetto produce inefficienza.
2.4 Le Chiavi — identificare univocamente
Una chiave primaria (Primary Key, PK) è un insieme minimale di attributi o un attributo che identifica univocamente ogni istanza di un’entità. Se formata da più attributi è chiave composta {PPK}.
Chiave Candidata: attributo (o combinazione minima) che identifica univocamente. Es. STUDENTE: sia Matricola che CodiceFiscale sono candidate.
Chiave Primaria (PK): candidata scelta come identificatore principale. Non può contenere NULL e deve essere unica. Es. Matricola.
Chiave Esterna (FK): concetto modello relazionale. Attributo che fa riferimento a PK di altra tabella. Es. CodClasse in STUDENTE → CLASSE.
3. Tipi di associazione — Molteplicità
La molteplicità di un’associazione è il numero di possibili istanze di un’entità in corrispondenza di un’istanza dell’altra entità che partecipa all’associazione.
| Notazione | Significato | Esempio |
|---|---|---|
| (1,1) — 1..1 | Obbligatoria esattamente una | Ogni STUDENTE appartiene a esattamente una CLASSE |
| (0,1) — 0..1 | Opzionale al massimo una | PERSONA può avere zero o un PASSAPORTO |
| (1,N) — 1..N | Obbligatoria, molte | CLASSE deve avere almeno uno STUDENTE |
| (0,N) — 0..N | Opzionale, molte | PROFESSORE può avere zero o più CORSI |
4. Cardinalità: la parte più importante del diagramma
La cardinalità indica quante occorrenze di un’entità possono essere associate a occorrenze dell’altra. È la regola del gioco del mondo reale.
Uno a uno: Ad ogni occorrenza di A corrisponde al massimo una occorrenza di B, e viceversa. Es. PERSONA ——1—— POSSIEDE ——1—— PASSAPORTO
Uno a molti: Ad ogni occorrenza di A corrispondono più occorrenze di B, ma ogni B è associata a una sola A. La più comune. Es. CLASSE ——1—— CONTIENE ——N—— STUDENTE
Molti a molti: Ad ogni occorrenza di A corrispondono più occorrenze di B, e viceversa. Nel relazionale si risolve con tabella di congiunzione. Es. STUDENTE ——N—— FREQUENTA ——M—— CORSO
5. Come si passa da una traccia al diagramma E/R - 7 passi
Individua i «nomi importanti» — persone, oggetti, luoghi, eventi o concetti autonomi. Candidati entità.
Elimina i falsi candidati — «Indirizzo» è attributo di Cliente; «cliente» è entità.
Individua gli attributi — Per ogni entità: quali informazioni servono per descriverne un’istanza?
Trova gli identificatori — Scegli PK naturale se affidabile, altrimenti artificiale id_cliente.
Individua i verbi — effettua, contiene, scrive, insegna, appartiene, prenota… sono associazioni.
Determina le cardinalità — Leggi frasi in entrambe direzioni. Non indovinare: deduci dal testo.
Controlla il modello — Tutte le informazioni richieste sono rappresentabili? Duplicazioni? Entità inutili?
Ogni autore può scrivere uno o più libri ed ogni libro deve essere scritto da un solo autore
Ogni editore può pubblicare uno o più libri ed ogni libro deve essere pubblicato da un solo editore
Ogni categoria deve classificare uno o più libri ed ogni libro deve essere classificato attraverso una sola categoria
6. Esempio completo — la biblioteca
Scenario: vogliamo gestire una piccola biblioteca. Sono presenti LIBRI, AUTORI, EDITORI e CATEGORIE.
| Entità | Attributi principali | PK |
|---|---|---|
| AUTORE | id_autore, nome, cognome, nazionalità, data_nascita, genere | id_autore |
| LIBRO | ISBN, titolo, anno_pubblicazione, lingua, prezzo | ISBN |
| EDITORE | id_editore, ragione_sociale, indirizzo, città | id_editore |
| CATEGORIA | id_categoria, descrizione | id_categoria |
| Associazione | Cardinalità | Motivazione |
|---|---|---|
| AUTORE — scrive — LIBRO | 1:N | Un autore molti libri; ogni libro un autore (versione semplificata) |
| EDITORE — pubblica — LIBRO | 1:N | Un editore molti libri; ogni libro un editore |
| CATEGORIA — classifica — LIBRO | 1:N | Una categoria molti libri; ogni libro una categoria |
7. Un caso più realistico: libri e più autori
Se un autore può scrivere molti libri e un libro può avere molti autori, l’associazione diventa AUTORE N:M LIBRO. Nel modello relazionale sarà necessario introdurre tabella associativa SCRITTURA.
8. Associazioni con attributi
Alcune informazioni descrivono il legame tra entità. In STUDENTE — sostiene — ESAME, il voto non è attributo dello studente né dell’esame, ma del legame specifico.
Chiediti sempre: «Questo attributo descrive l’oggetto oppure descrive il collegamento tra due oggetti?» La risposta determina dove collocarlo. Voto non descrive studente in assoluto, né esame in assoluto. Descrive quello studente in quell’esame.
9. Associazioni ternarie e ricorsive: quando il modello diventa più complesso
TERNARIA: FORNITORE — PRODOTTO — SEDE: una specifica sede acquista uno specifico prodotto da uno specifico fornitore.
RICORSIVA: DIPENDENTE — supervisiona — DIPENDENTE: un dipendente può essere responsabile di altri dipendenti.
Per gli esercizi ordinari conviene privilegiare associazioni binarie quando sono sufficienti a rappresentare correttamente la realtà. Le associazioni ternarie e ricorsive si usano quando la loro informazione non può essere rappresentata senza perdere significato.
10. Errori tipici nella progettazione E/R
| Errore | Perché è sbagliato | Correzione |
|---|---|---|
| Confondere entità e attributo | Si perde possibilità di rappresentare più occorrenze autonome | Chiedersi se concetto ha propria identità |
| Usare nome+cognome come PK | Non garantisce unicità | Usare identificatore affidabile |
| Invertire 1 e N | Struttura DB errata | Leggere relazione in entrambe direzioni |
| Mettere tutto in una sola entità | Produce ridondanza | Separare concetti autonomi |
| Creare tabella per ogni associazione 1:N nel concettuale | Si confondono concettuale e logico | Prima modellare realtà; poi tradurre in tabelle |
| Ignorare attributi dell’associazione | Voto, quantità, ruolo collocati male | Verificare se attributo dipende dal legame |
11. E/R e modello relazionale: non sono la stessa cosa
Nel diagramma E/R non stai ancora scrivendo SQL. La FK è un concetto del modello logico relazionale. Nel modello concettuale ci interessa soprattutto esprimere che un ordine è effettuato da un cliente.
12. Laboratorio mentale — progettare senza disegnare subito
Una videoteca gestisce film, registi e clienti. Ogni film ha codice, titolo, anno e durata. Un regista può dirigere più film, mentre ogni film ha un solo regista. Un cliente può noleggiare più film e lo stesso film può essere noleggiato da molti clienti nel tempo. Per ogni noleggio si devono memorizzare data di inizio e data di restituzione.
Domande: Quali sono le entità? PK? Associazioni? Cardinalità? Dove collocheresti le date del noleggio?
Entità: FILM, REGISTA, CLIENTE. Associazioni: REGISTA 1:N FILM; CLIENTE N:M FILM tramite NOLEGGIO. Attributi dell’associazione NOLEGGIO: data_inizio, data_restituzione. Queste informazioni dipendono dallo specifico rapporto tra un cliente e uno specifico film.
Una scuola gestisce studenti, classi e docenti. Ogni studente appartiene a una sola classe. Una classe comprende molti studenti. Un docente può insegnare più materie e una materia può essere insegnata da più docenti. Obiettivo: costruisci il diagramma E/R individuando anche l’eventuale entità MATERIA.
In un’azienda ogni dipendente può supervisionare altri dipendenti. Un dipendente può avere al massimo un supervisore diretto, mentre un supervisore può avere molti collaboratori. Obiettivo: rappresenta l’associazione ricorsiva SUPERVISIONA e indica le cardinalità.
□ Ho individuato tutte le entità necessarie?
□ Ogni entità ha un identificatore?
□ Gli attributi sono associati all’entità corretta?
□ Le associazioni hanno un nome significativo?
□ Ho verificato la cardinalità in entrambe le direzioni?
□ Ho individuato eventuali attributi delle associazioni?
□ Sto descrivendo il modello concettuale, senza anticipare inutilmente SQL?
□ Il diagramma rappresenta davvero tutte le regole espresse dalla traccia?
Il modello E/R descrive concettualmente una realtà prima della sua implementazione nel DBMS. Le entità rappresentano classi di oggetti autonomi; le loro singole occorrenze sono le istanze. Gli attributi descrivono le proprietà delle entità e, in alcuni casi, delle associazioni. La PK identifica univocamente ogni istanza. Le associazioni rappresentano i legami significativi. Le cardinalità fondamentali sono 1:1, 1:N e N:M; per una descrizione più precisa si possono indicare minimo e massimo, come 0..N o 1..1. Una relazione N:M è corretta nel modello concettuale; nel modello relazionale sarà trasformata tramite entità/tabella associativa. Un attributo come voto, quantità, ruolo o data di partecipazione può appartenere all’associazione se descrive il legame e non una delle entità. La progettazione efficace parte dalla traccia: nomi → entità, proprietà → attributi, verbi → associazioni, frasi quantitative → cardinalità.
Vuoi passare all'azione? Accedi alla repository ufficiale GitHub del corso per scaricare i file del laboratorio pratico in formato .md.
Vuoi consultare la sezione dedicata ai laboratori sul sito? Accedi cliccando il pulsante qui sotto.
🛠️ Sezione dedicata ai LaboratoriConsulta anche la sezione dedicata alle Guide. Qui trovi soluzioni ad esercizi sul modello E/R.
📦 Sezione dedicata alle Guide📚 Prossimo passo - Dal concettuale al logico
Nella prossima lezione traduciamo questo schema E/R in tabelle relazionali: PK, FK, vincoli, e come la N:M diventa tabella associativa con doppia FK. Se questo E/R è chiaro, il relazionale sarà meccanico. Portate i diagrammi di oggi: li trasformeremo in SQL.