Progettista ERD — progetti uno schema di database ed esporti DDL, Mermaid o JSON
Progettista ERD
Progetti uno schema relazionale senza un server di database: aggiunga tabelle, dia loro colonne con tipi, chiavi e valori predefiniti, poi le colleghi con relazioni. Il diagramma entità-relazione si ridisegna mentre scrive, e lo stesso modello viene esportato come DDL CREATE TABLE per MySQL, PostgreSQL, SQL Server, SQLite o Oracle, come sorgente Mermaid erDiagram, oppure come JSON dello schema portabile che può reimportare qui o aprire nel Generatore di migrazioni. Tutto viene eseguito localmente.
Che cos'è un ERD? ERD è l'abbreviazione di diagramma entità-relazione, ed è il disegno di progetto di un database, non la registrazione di uno finito. Un paragone utile è il progetto di un edificio: il database in funzione è l'edificio, l'ERD è il progetto, e nessuno versa il calcestruzzo prima di aver misurato. Questa pagina è il tavolo da disegno di quel progetto — qui si modella lo schema, e il DDL, il sorgente Mermaid e il JSON dello schema vengono stampati tutti da quello stesso modello, così il disegno non può discostarsi dall'SQL che ha prodotto.
Lo stesso diagramma a tre livelli. Un ERD concettuale nomina solo le cose che contano e come si relazionano, con parole che un non programmatore può verificare. Un ERD logico aggiunge le chiavi che identificano ciascuna cosa e risolve i collegamenti molti-a-molti, restando privo di dialetti di qualsiasi motore. Un ERD fisico aggiunge ciò che un particolare prodotto richiede — ampiezza dei tipi, valori predefiniti, nullabilità, vincoli di unicità, regole di eliminazione — ed è il livello che esporta qui quando sceglie MySQL, PostgreSQL, SQL Server, SQLite o Oracle.
Da dove vengono le scatole. Legga una descrizione del sistema e sottolinei i sostantivi: cliente, fattura, prodotto, spedizione. Quelle sono le tabelle. I fatti e le qualità collegati a un sostantivo — la data di una fattura, un prezzo unitario, un indirizzo e-mail — sono le sue colonne. Un verbo che lega due sostantivi, come in «un ordine è effettuato da un cliente», è una relazione, e viene memorizzata copiando la chiave identificativa della riga padre nella riga figlia come chiave esterna.
Quando un collegamento è molti-a-molti. Una ricetta usa molti ingredienti e un ingrediente compare in molte ricette, quindi nessuna delle due tabelle può conservare la chiave dell'altra senza ripetersi. La risposta è una terza entità il cui unico compito è accoppiarle — la tabella di giunzione (o associativa), che contiene una chiave esterna per ciascun lato, spesso con quella coppia di chiavi come chiave primaria. Un modello fatto in gran parte di tabelle di accoppiamento del genere è del tutto normale: una linea molti-a-molti su una lavagna deve sempre diventare una scatola nello schema reale.
Perché preoccuparsi prima che esista il DDL. Una linea sbagliata su un disegno costa un minuto per cancellarla; lo stesso errore scoperto dopo il rilascio costa una migrazione sui dati in produzione. Un diagramma è anche l'unico artefatto che i non sviluppatori possono rivedere, e gli errori di relazione — una cardinalità invertita, una chiave unica mancante, righe figlie che possono restare senza padre — qui si vedono come linee palesemente sbagliate, mentre in un file DDL di 400 righe si nascondono tra i vincoli.
In avanti o all'indietro? Questo progettista va in avanti: prima il modello, poi il DDL. La pagina gemella SQL to ERD va nell'altra direzione — incolli istruzioni CREATE TABLE esistenti e ricostruisce il diagramma, che è la strada più rapida quando il database esiste già.
1 — Tabelle
Modifica
Nome della tabella
Colonne
Relazioni
Actions
2 — Colonne
Colonna
Tipo
PK
AI
NN
UQ
Predefinito
Actions
PK = chiave primaria, AI = autoincremento / identità, NN = non nullo, UQ = unico
3 — Relazioni (chiavi esterne)
Tabella figlia
Colonna figlia
Actions
Tabella padre
Colonna padre
Alla cancellazione
Actions
Una chiave esterna diventa una riga CONSTRAINT ... FOREIGN KEY nel DDL.
4 — Esportazione
Sorgente Mermaid erDiagram
Il modello JSON è il formato di interscambio della famiglia di strumenti per database: lo incolli nel Generatore di migrazioni come schema prima/dopo, oppure lo reimporti qui per continuare a modificarlo più tardi.