Simboli del diagramma ER
I diagrammi entità relazione usano tre famiglie di simboli. La zampa di gallina (crow’s foot) è la notazione degli strumenti per database. Chen è quella che si studia a lezione. UML applica ai dati i diagrammi delle classi. In tutte e tre una tabella o entità è un rettangolo, e una relazione è una linea tra rettangoli. Cambia il modo di scrivere la cardinalità, cioè quante righe da un lato corrispondono a una riga dall’altro. La zampa di gallina la segna alle estremità della linea, quindi ogni linea si legge due volte, una verso ciascuna tabella. Ogni simbolo qui sotto è accompagnato dalla sua lettura. Lo disegna ErdDocs, nella stessa notazione che usa per il tuo schema nello strumento più in basso.
Cosa significano le estremità della zampa di gallina?
Nella zampa di gallina tutto accade alle estremità della linea. Ogni estremità porta fino a due segni. Quello più vicino alla tabella indica il massimo, quello esterno il minimo.
| Simbolo | Nome | Come si legge | Esempio |
|---|---|---|---|
| Esattamente uno | Barra + barra: almeno uno e al massimo uno | un ordine appartiene a esattamente un cliente | |
| Zero o uno | Cerchio + barra: facoltativo, al massimo uno | un cliente ha al massimo una carta fedeltà | |
| Uno o molti | Barra + zampa di gallina: almeno uno | un ordine ha almeno una riga | |
| Zero o molti | Cerchio + zampa di gallina: quanti si vuole, anche nessuno | un cliente ha zero o molti ordini |
Come leggere una linea intera
Una linea di relazione si legge due volte, una verso ciascuna tabella. L’esempio classico di un negozio:
Le regole di lettura complete, compreso il significato dei segni quando lo schema è noto solo a metà, sono nella pagina sulla notazione a zampa di gallina. Quale combinazione scegliere è una questione di cardinalità.
Chen, zampa di gallina e UML a confronto
| Concetto | Chen | Zampa di gallina | UML |
|---|---|---|---|
| Entità / tabella | Rettangolo | Rettangolo con l’elenco delle colonne | Riquadro della classe |
| Attributo | Ovale collegato all’entità | Una riga dentro la tabella | Un campo nel riquadro della classe |
| Relazione | Rombo tra le entità | Una linea con i segni di cardinalità alle estremità | Linea di associazione |
| Cardinalità | Lettere 1, N, M accanto al rombo | Barra, cerchio e zampa di gallina alle estremità | Molteplicità 1, 0..1, 1..*, * |
| Chiave primaria | Attributo sottolineato | Segno di chiave nella riga della colonna | Stereotipo o proprietà |
Nei corsi italiani lo schema E-R indica spesso le cardinalità con coppie (min,max), come (0,N) o (1,1), scritte accanto all’entità. Dicono le stesse cose dei segni della zampa di gallina, che però stanno all’altra estremità della linea. In pratica, Chen va bene finché lo schema è solo un’idea. UML serve quando il diagramma vive accanto al codice dell’applicazione. Quando il database esiste già, serve la zampa di gallina. È proprio quella che ErdDocs disegna dallo schema incollato.
Un simbolo che i manuali non hanno: la linea tratteggiata
Nei dump reali spesso mancano le chiavi esterne. Le applicazioni Rails, Django e Laravel tengono le relazioni nel codice, e il database non dichiara nulla. In questo caso ErdDocs aggiunge un suo simbolo. La linea continua è una relazione dichiarata dal database. Quella tratteggiata è dedotta dal nome della colonna, per esempio user_id → users. La prima è un vincolo, la seconda un’ipotesi fondata.
I simboli su uno schema vero
Incolla il tuo SQL nello strumento qui sotto. Trova le chiavi esterne e i vincoli di unicità, e in base a quelli segna il lato «molti» di ogni linea.
Domande frequenti
Cosa significano i simboli della zampa di gallina?
Ogni estremità ha fino a due segni. Quello più vicino alla tabella indica il massimo. Una barra significa «al massimo uno», la zampa a tre punte «molti». Quello esterno indica il minimo. Una barra significa «almeno uno», un cerchio «può essere zero». Cerchio + zampa si legge quindi «zero o molti», barra + barra «esattamente uno».
Quale notazione usare, Chen o zampa di gallina?
La notazione di Chen è adatta alla didattica e alla progettazione concettuale. Il rombo fa della relazione un elemento a sé, ed è ciò che serve a lezione. La zampa di gallina è adatta ai database reali. Ogni tabella è un riquadro con le colonne dentro, che è la forma vera di uno schema.
Come si rappresenta una relazione molti a molti?
Con la zampa di gallina a entrambe le estremità. Nello schema fisico il molti a molti si realizza con una tabella ponte, per esempio order_items tra orders e products. Per questo gli strumenti che disegnano database reali mostrano due linee uno a molti che convergono sulla tabella ponte.
Perché gli strumenti per database non disegnano i rombi e gli ovali di Chen?
Perché in un database fisico ciò che Chen disegna a parte si riduce a tabelle e colonne. Un ovale di attributo è una riga dentro il riquadro della tabella. Un rombo di relazione è una colonna di chiave esterna oppure una tabella ponte. Disegnarli come forme separate raddoppierebbe le dimensioni del diagramma senza aggiungere alcuna informazione.
Vedi anche
- Diagramma ER: entità, relazioni e il punto in cui un modello concettuale diventa tabelle.
- Notazione a zampa di gallina: le regole di lettura, con esempi svolti.
- Cardinalità nel diagramma ER: come un database reale decide quali segni riceve una linea.
- Esempi di diagramma ER: quattordici schemi completi, ciascuno con il suo diagramma e il suo dizionario.