Weak entities · IS-A · (min,max) · Migration timeline

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.

team.sflive
Table person {
id uuid [pk]
email text [unique]
}
Table employee {
id uuid [pk]
since date
}
Generalization person {
employee
}
Weak Table task
depends on employee {
number int [partial key]
}
person
  • iduuid
  • emailtext
employee
  • iduuid
  • sincedate
taskweak
  • numberint
  • titletext
dis-a
(0,*)(1,1)owns
ChenCrow's Foot

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.

schemaforge
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.

postgresql · excerpt
-- 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.

schema timeline · 5 migrations
usersnew
iduuid
emailvarchar(255)
full_namevarchar(120)
V1create users
  • +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.