Co to jest DBML i po co konwertować na SQL?
DBML (Database Markup Language) to format opracowany przez Holistics, używany w popularnym narzędziu dbdiagram.io. Pozwala opisać schemat bazy danych w czytelnej, kompaktowej formie, bez całej składniowej ceremonii SQL-a.
W DBML piszesz `Table users { id integer [pk] name varchar }` zamiast `CREATE TABLE users (id INTEGER PRIMARY KEY, name VARCHAR(255))`. Krócej, czytelniej, łatwiej w code review. Ale ostatecznie potrzebujesz SQL-a, żeby utworzyć tabele w prawdziwej bazie.
To narzędzie konwertuje DBML na SQL dla PostgreSQL, MySQL albo SQLite. Obsługuje: tabele, kolumny z typami, klucze główne, auto-inkrementację, NOT NULL, UNIQUE, defaulty, indeksy, klucze obce (Ref-y), enumy. Pokazuje też błędy parsowania z numerami linii.
Jak korzystać
- Wklej swój schemat w DBML w lewe pole. Format wzorowany na dbdiagram.io.
- Wybierz dialekt docelowy: PostgreSQL, MySQL albo SQLite. Każdy ma własne typy i konwencje.
- W prawym polu zobaczysz CREATE TABLE i ALTER TABLE gotowe do wklejenia do migracji albo do bazy.
- Jeśli są błędy parsowania, lista pojawi się pod spodem z numerami linii. Popraw w wejściu i wynik się odświeży.
- Skopiuj wynik przyciskiem Kopiuj i wklej do swojego migration tool-a, Prisma, Drizzle, Flyway, Liquibase, cokolwiek używasz.
- Tryb Formatuj wynik używa formatera SQL żeby ładnie wciągnąć wcięcia. Możesz wyłączyć, jeśli wolisz surową formę.
Do czego się przydaje
Typowe scenariusze:
- Projektowanie nowej bazy danych na białej kartce. Zaczynasz od DBML, bo szybciej zapisujesz pomysły, niż w pełnym SQL-u. Kiedy schemat dojrzeje, generujesz CREATE TABLE.
- Synchronizacja diagramu z migracją. Masz diagram w dbdiagram.io (albo eksport z innego narzędzia), chcesz utworzyć tabele w nowej bazie. Konwerter przyspiesza tę drogę.
- Dokumentacja techniczna. DBML jest czytelne dla nieprogramistów. SQL jest wykonywalny. Pisz raz w DBML, generuj SQL dla developerów i diagram dla product managera.
- Code review schematu przed migracją. Łatwiej zobaczyć błąd w DBML niż w wielu liniach CREATE TABLE.
- Nauka SQL-a. Patrz, jak proste `Table users { id integer [pk] }` rozwija się do pełnego `CREATE TABLE "users" ("id" INTEGER PRIMARY KEY)`. Dobra ścieżka edukacyjna.
Po wygenerowaniu SQL-a warto go sformatować. Jeśli potrzebujesz schemat dla ORM-a, mamy konwerter SQL na ORM.