About ERDFlow

Database design, from the first idea to the tables.

ERDFlow is a visual database design application. It helps students, learners and developers understand conceptual database modeling and relational schemas, and keeps both in one project.

A. About ERDFlow

One project, two connected views

A project can begin as a conceptual ER diagram — entities, attributes and relationships — or as a relational schema of tables, columns and keys. Both are views of the same project, so moving from one to the other does not mean starting again.

ERDFlow is a desktop application written in C++ with Qt, and is being prepared for Windows, macOS and Linux. Its core is developed in the open on GitHub.

B. Why ERDFlow exists

Making database design easier to learn and to do

Database design is hard to learn

Entities, attributes, relationships, cardinality and participation are abstract until you can see them. ERDFlow draws them in the notations that courses and textbooks use.

Concepts have to become tables

Turning a diagram into tables means deciding keys, giving many-to-many relationships a table of their own and storing multivalued attributes separately. ERDFlow works out a schema from the diagram, so each of those steps can be seen.

Keys are where mistakes hide

Primary and foreign keys hold a schema together. ERDFlow’s Connect tool starts on the key being referenced and creates or reuses the foreign key where the connection is let go — including a key that is both primary and foreign.

Rebuilding at every stage wastes work

ERDFlow’s principle is draw once, progressively refine. Each stage is another view of the same project rather than a new drawing, so earlier work is refined instead of thrown away.

C. What ERDFlow can do today

Built and working in ERDFlow Core

What is listed here is implemented in the current source. ERDFlow is not yet packaged for public download; installers will follow once release packaging and testing are complete.

Conceptual ER diagrams

Regular and weak entities; relationships with cardinality and participation; key, composite, derived and multivalued attributes; and ISA generalization and specialization.

Four ER notations

Chen, min–max, crow’s foot (the default) and Bachman, chosen from either canvas’s Appearance menu.

Relational schema design

Tables and columns with types, sizes and rules; primary and foreign keys connected safely; and a physical or compact view of each table.

Conversion between stages

A schema worked out from the conceptual diagram, and a schema drawn by hand converted into its conceptual diagram.

Import and export

Pictures as SVG, PNG, JPEG, WebP, TIFF or a PDF page; a PDF report, Markdown data dictionary, HTML report or CSV listing; and project copies. Another project can be imported from an .erdx file, or from an SVG or PNG that carries one.

Projects that keep their work

Versioned .erdx project files, undo and redo, and built-in Company and University examples in both conceptual and relational form.

Not available yet

Generating SQL or reading SQL in; Mermaid ER and DBML export; reordering a table’s columns; multiple pages per project; and autosave with recovery. Installers have not been produced for any platform yet.

D. The engineering journey

Challenges, and how they were approached

ERDFlow’s architecture decisions are recorded in the repository as ADRs. A few of the problems they address:

One project, many representations

In place today

Every element keeps a stable identity that survives renaming and refinement, and the tables and columns that come from the diagram stay mapped to the elements they came from.

A layered core

In place today

The domain, application, infrastructure and interface layers depend in one direction only, which keeps the modeling rules apart from the Qt interface.

Two ways into a schema

In place today

A schema can be worked out from a diagram or drawn by hand, and a hand-drawn schema can be read back as a conceptual diagram.

Undo you can rely on

In place today

Every edit is a command that can be undone, and the history is kept within a fixed memory budget.

Tested and measured

In place today

More than two thousand checks in the desktop test suite, a performance baseline for large diagrams, and limits that reject oversized or malformed project files.

Cross-platform from the start

Ongoing work

Written in C++20 with Qt 6. Continuous integration is set up to build and test on Windows, macOS (Apple Silicon and Intel) and Linux; installers, signing and clean-system testing are still to come.

Protecting your edits

Ongoing work

The design keeps hand-made changes from being silently overwritten when a stage is generated again. The reviewable baseline and three-way reconciliation that complete it are still being built.

E. Open source and community

ERDFlow Core is open source

ERDFlow Core, the desktop application, is public on GitHub under the MIT License. Its documentation is public too — from the architecture decisions to the record of what is implemented — and changes reach the main branch as focused pull requests checked by continuous integration.

F. Future direction

Where ERDFlow is going

ERDFlow focuses on conceptual design and relational schemas, with the conversions, imports and exports described above. Work continues on what is not built yet and on release packaging for Windows, macOS and Linux.

SQL generation and other advanced features are not part of ERDFlow today, and no release dates have been set.

G. Get involved

Ways to take part