Write the schema.
The diagram draws itself.
Sequelforge is text-to-diagram for real database engineers: a terse DSL that speaks full ER — weak entities, generalization/specialization, and (min,max) cardinalities — rendered as a live diagram and exported as production SQL for PostgreSQL, MySQL, SQL Server, Oracle and SQLite.
Chen and Crow's Foot notation, one click apart. No canvas dragging required.
- iduuid
- emailtext
- iduuid
- sincedate
- numberint
- titletext
Why Sequelforge
The parts other tools skip are the parts that matter
DBML-style tools stop at tables and arrows. Sequelforge keeps the rigor of the ER model and the speed of plain text.
True ER semantics
Weak entities with identifying relationships, IS-A generalization with disjoint and total constraints — modeled in the language, not faked with sticky notes.
(min,max) cardinalities
Write (1,1) or (0,*) once and flip the whole diagram between Chen and Crow's Foot notation live, without touching your schema.
Auto-layout while you type
Every keystroke re-parses the DSL and the diagram rearranges itself. No dragging boxes around, no stale screenshots in your wiki.
Production-ready SQL
One click exports DDL for PostgreSQL, MySQL 8, SQL Server, Oracle, and SQLite: composite primary keys for weak entities, table-per-type foreign keys for generalizations, references with delete actions.
Diagnostics as you type
Dangling references, duplicate columns, impossible cardinalities — flagged inline in the editor, long before they reach a migration.
Schema time travel
Paste your Flyway migrations and scrub through every version of your schema — additions, drops, and type changes highlighted as the diagram replays history, entirely in your browser.
From DSL to DDL
One source of truth, two artifacts
The same text produces the diagram for your design review and the SQL for your migration — with the ER semantics translated faithfully.
Table person {
id uuid [pk]
email varchar(255) [unique, not null]
}
// every person is exactly one subtype
Generalization person [disjoint, total] {
employee
customer
}
Table employee {
id uuid [pk]
hired_on date [not null]
}
Table customer {
id uuid [pk]
points int [default: 0]
}
Table project {
id uuid [pk]
name varchar(160) [not null]
owner uuid [ref: > employee.id, from: (1,1), to: (0,*), label: "manages"]
}
// no identity of its own: keyed by project + number
Weak Table task depends on project {
project_id uuid [ref: > project.id, not null]
number int [partial key]
}Weak entities → composite primary keys
task has no identity of its own, so the export builds PRIMARY KEY (project_id, number): the owner's key plus the partial key.
Generalization → table-per-type
Each subtype keeps its own table; its primary key becomes a foreign key to the supertype, so an employee is always a person.
(min,max) → real constraints
A (1,1) participation is a mandatory NOT NULL reference; (0,*) stays optional. The diagram and the DDL never disagree.
-- weak entity → owner key + partial keyALTER TABLE task ADD PRIMARY KEY (project_id, number);-- IS-A → table-per-typeALTER TABLE employee ADD FOREIGN KEY (id) REFERENCES person (id) ON DELETE CASCADE;-- (1,1) → mandatory referenceowner uuid NOT NULL REFERENCES employee (id)Also exports MySQL 8, SQL Server, Oracle and SQLite.
Migration timeline
Scrub through every version of your schema
Drop your Flyway migrations in and replay history. Additions, drops and type changes light up as the diagram morphs from V1 to today — no database connection, all in the browser.
- +users
Hover to pause · click any version to jump. The real thing reads your actual V1__*.sql … V99__*.sql files.
Your next schema deserves better than a whiteboard photo
Type it once. Review it as a diagram, ship it as PostgreSQL, and keep it in version control forever.