Disclosure: I build Schemity, a desktop ERD tool - this post is from our blog and uses it for the examples.

TL;DR: Most diagram tools force manual translation: retyping SQL dumps into boxes, then hand-writing ALTER statements from diagram edits. Schemity imports SQL to generate the ERD and turns diagram edits into a reviewed migration SQL diff - both directions automated.

Paste a SQL dump into Schemity and the ERD draws itself; edit that ERD and a reviewed migration SQL diff comes back - the translation between SQL and diagram runs automatically in both directions. Most tools still make you do that translation by hand, and it usually starts like this.

Somewhere on your disk there is a schema. It might be a pg_dump output, a folder of migration files, or a schema.sql a departed colleague left behind. It is complete, precise, and utterly unreadable at a glance - forty CREATE TABLE statements do not show you how billing relates to users.

So you open a diagram tool. And the diagram tool opens a blank canvas.