Proiectant ERD — proiectarea unei scheme de bază de date și exportul DDL, Mermaid sau JSON
Proiectant ERD
Proiectarea unei scheme relaționale fără server de baze de date: se adaugă tabele, li se dau coloane cu
tipuri, chei și valori implicite, apoi se leagă prin relații. Diagrama entitate-relație
se redesenează pe măsură ce se scrie, iar același model se exportă ca CREATE TABLE DDL pentru MySQL, PostgreSQL, SQL Server, SQLite sau Oracle,
ca sursă Mermaid erDiagram sau ca JSON de schemă portabil,
care poate fi reimportat aici sau deschis în Generatorul de migrații. Totul rulează local.
Ce este un ERD? ERD este prescurtarea de la diagramă entitate-relație și este
desenul de proiectare al unei baze de date, nu o înregistrare a uneia finalizate. O comparație utilă este un plan de construcție: baza de date în funcțiune este clădirea, ERD este planul, iar nimeni nu toarnă betonul înainte și nu măsoară după.
Această pagină este masa de desen pentru acel plan — modelul se conturează aici, iar DDL-ul, sursa Mermaid și JSON-ul schemei sunt toate tipărite din același model, astfel că imaginea nu se poate abate de la SQL-ul pe care l-a produs.
Aceeași diagramă, la trei niveluri. Un ERD conceptual numește doar lucrurile care contează și cum se leagă între ele, în cuvinte pe care un neprogramator le poate verifica. Un ERD logic adaugă cheile care identifică fiecare lucru și rezolvă legăturile multe-la-multe, rămânând fără dialectul niciunui motor. Un ERD fizic completează ce cere un anumit produs — dimensiunile tipurilor, valorile implicite, nullabilitatea, constrângerile de unicitate, regulile de ștergere — iar acesta este nivelul care se exportă aici, atunci când se alege MySQL, PostgreSQL, SQL Server, SQLite sau Oracle.
De unde vin casetele. Se citește o descriere a sistemului și se subliniază substantivele: client, factură, produs, expediere. Acestea sunt tabelele. Faptele și calitățile atașate unui substantiv — o dată a facturii, un preț unitar, o adresă de e-mail — sunt coloanele lui. Un verb care leagă două substantive, ca în „o comandă este plasată de un client”, este o relație, iar ea se stochează copiind cheia de identificare a rândului părinte în rândul copil, ca cheie externă.
Când o legătură este multe-la-multe. O rețetă folosește multe ingrediente, iar un ingredient apare în multe rețete, deci niciunul dintre tabele nu poate păstra cheia celuilalt fără să se repete. Răspunsul este o a treia entitate al cărei singur rol este să le împerecheze — tabelul de joncțiune (sau asociativ), care conține câte o cheie externă pentru fiecare parte, adesea cu această pereche de chei ca cheie primară proprie. Un model care este în mare parte din astfel de tabele de împerechere este complet normal: o linie multe-la-multe de pe o tablă albă trebuie întotdeauna să devină o casetă în schema reală.
De ce contează înainte ca DDL-ul să existe. O linie greșită pe un desen costă un minut de șters; aceeași greșeală descoperită după lansare costă o migrare peste date live. O diagramă este și singurul artefact pe care îl pot revizui cei care nu sunt dezvoltatori, iar defectele de relație — o cardinalitate pusă pe dos, o cheie unică lipsă, rânduri copil care pot rămâne fără părinte — apar aici ca linii vădit proaste, pe când într-un fișier DDL de 400 de rânduri se ascund printre constrângeri.
Înainte sau invers? Acest proiectant merge înainte: întâi modelul, apoi DDL-ul. Pagina-soră SQL în ERD merge în sens invers — se lipesc instrucțiunile CREATE TABLE existente și reconstruiește diagrama, ceea ce este varianta mai rapidă odată ce baza de date există deja.
1 — Tabele
Editare
Nume tabel
Coloane
Relații
Actions
2 — Coloane
Coloană
Tip
PK
AI
NN
UQ
Implicit
Actions
PK = cheie primară, AI = autoincrement / identitate, NN = not null, UQ = unică
3 — Relații (chei externe)
Tabel copil
Coloană copil
Actions
Tabel părinte
Coloană părinte
La ștergere
Actions
O cheie externă devine o linie CONSTRAINT ... FOREIGN KEY în DDL.
4 — Export
Sursa erDiagram Mermaid
Modelul JSON este formatul de schimb pentru familia de instrumente pentru baze de date: se lipește în
Generatorul de migrații ca schemă înainte/după sau
se reimportă aici pentru a continua editarea mai târziu.