Relmic supports 8 database management systems from a single visual editor. This is not just a dropdown that swaps table syntax — each DBMS has its own data types, constraints, auto-increment semantics, identifier rules, and validation logic. Here is how we built it.
Why multi-DBMS matters
Teams rarely work with a single database. A company might use PostgreSQL for its main application, BigQuery for analytics, and SQLite for mobile storage. Agencies and consultants work across client stacks that span MySQL, SQL Server, and Oracle.
A schema design tool that only supports one DBMS forces you to learn a different tool for each project — or worse, design in a generic tool that generates incorrect SQL because it does not understand the target system. Relmic solves this by making DBMS selection a first-class project setting that affects every layer of the editor.
DBMS as a core abstraction
When you create a project in Relmic, you choose a DBMS and a version. This selection propagates through the entire experience:
- Data type picker — only shows types valid for the selected DBMS. PostgreSQL users see
JSONBandUUID; MySQL users seeENUMandSET. - Default expression suggestions — autocomplete offers functions that exist in your DBMS. A
timestampcolumn suggestsnow()in PostgreSQL butCURRENT_TIMESTAMPin MySQL. - Validation rules — identifier length limits, reserved keywords, and constraint rules are checked against the specific DBMS. Read more in the Validation docs.
- Code generation — exported DDL uses the correct syntax, quoting style, and dialect for the target DBMS.
What makes each DBMS different
SQL is standardized, but every DBMS extends and deviates from the standard in meaningful ways. Here is a brief look at the unique characteristics Relmic handles for each:
PostgreSQL
Rich type system with arrays, JSONB, UUID, and composite types. SERIAL and IDENTITY for auto-increment. Extensive function library for defaults.
MySQL
ENGINE selection (InnoDB for foreign keys), ENUM and SET types, AUTO_INCREMENT columns, charset and collation settings per column.
MariaDB
MySQL-compatible with additions like sequences, system-versioned tables, and extended JSON support.
SQL Server
IDENTITY columns, NVARCHAR for Unicode, schema-qualified naming, computed columns, and T-SQL-specific default expressions.
SQLite
Flexible type affinity system, limited ALTER TABLE support, AUTOINCREMENT only on INTEGER PRIMARY KEY, no ENUM type.
Oracle
NUMBER with precision and scale, VARCHAR2 vs CHAR semantics, sequence-based auto-increment, 128-character identifiers (12c+).
BigQuery
Struct and array types, partitioning and clustering options, no traditional primary or foreign key enforcement.
Redshift
Distribution and sort key strategies, DISTSTYLE options, Redshift-specific data types like SUPER for semi-structured data.
Version-aware generation
DBMS versions matter. PostgreSQL 15 supports MERGE statements that PostgreSQL 13 does not. Oracle 12c raised the identifier length limit from 30 to 128 characters. MySQL 8.0 introduced CHECK constraints that earlier versions silently ignored.
When you select a DBMS version in Relmic, the data type list, default expression suggestions, and validation rules adjust to match. If you use a feature that is not available in your selected version, validation flags it before you export.
Beyond SQL: ORM and type exports
Multi-DBMS support extends to non-SQL exports as well. When you export a Prisma schema, Relmic sets the correct provider and maps column types to Prisma's type system. Drizzle ORM exports use the correct dialect package (drizzle-orm/pg-core vs drizzle-orm/mysql-core). TypeScript interfaces and JSON Schema exports are DBMS-agnostic but still reflect the exact types you configured.
See the full list of formats in the Forward Engineering docs.
Switching DBMS
What if you start a project targeting PostgreSQL and later need to support MySQL? Relmic lets you change the target DBMS in project settings. When you switch, the editor re-validates your schema against the new DBMS rules and highlights any incompatibilities — types that do not exist, identifier names that are reserved, or constraints that work differently.
This makes Relmic useful not just for designing new schemas, but for evaluating the effort of migrating between database systems.