[HN Gopher] Found a simple tool for database modeling: dbdiagram.io
       ___________________________________________________________________
        
       Found a simple tool for database modeling: dbdiagram.io
        
       Author : vseplet
       Score  : 221 points
       Date   : 2025-04-27 01:40 UTC (21 hours ago)
        
 (HTM) web link (dbdiagram.io)
 (TXT) w3m dump (dbdiagram.io)
        
       | vseplet wrote:
       | While discussing data models, my colleague was sketching tables
       | and their relationships in an editor: table A, table B, columns
       | linking them.
       | 
       | He then generated SQL from the diagram and deployed the schema to
       | PostgreSQL. The schema was shared and reviewed.
       | 
       | The tool is https://dbdiagram.io
       | 
       | You can import/export SQL and generate images of your schema.
        
         | dcreater wrote:
         | DBML is great. I hope it becomes a standard
        
       | _ZeD_ wrote:
       | What's wrong with dbeaver?
        
         | ramon156 wrote:
         | Honestly, i love dbeaver but the fact it doesn't respect GTK
         | nicely and the UI hasn't gotten much love makes me want to
         | switch to something else. I know most people don't really get
         | bothered by it, so I'd say it's not that big of a deal. It is
         | for me though
        
           | 3eb7988a1663 wrote:
           | What else is on the table that is similarly nice? The only
           | other contender of which I am aware is DataGrip.
           | 
           | I likely only use 1% of the DBeaver features, so I do not
           | necessarily need something as powerful, yet most of the
           | database IDEs feel pretty anemic in their offerings.
        
         | DaiPlusPlus wrote:
         | > What's wrong with dbeaver?
         | 
         | The Apache-licensed DBeaver is too limited for my needs: it
         | exists to advertise their "DBeaver PRO" commercial license and
         | features, but even then you cannot get a perpetual license for
         | DBeaver PRO: it's subscription-only; their Enterprise edition
         | claims to not require Internet access - but is not intended as
         | a single-user software product (and it's priced accordingly).
         | 
         | In short: DBeaver simply won't sell me what I actually want.
        
       | maCDzP wrote:
       | I have found that ChatGTP and Claude are good at converting a
       | picture of a schema to SQL. So I sketch the schema by hand and
       | the LLM creates the SQL.
       | 
       | It can also save the picture as a mermaid text for future edits.
       | Pretty neat.
        
         | dangardan wrote:
         | I had the opposite problem, was given SQL ddl with near 1000
         | tables and hundreds of constraints, and had to produce the
         | schema map. Ran the ddl and connected it to yEd, and hey
         | presto, schema map!
        
           | hobs wrote:
           | The truth is that if you are modeling a relationship set of
           | 1000 tables you probably cant usefully show that to someone -
           | you can produce an image but nobody can likely use it.
           | 
           | Instead, consider breaking things down to functional areas
           | and then modeling those - just like how most city thinking is
           | "well get on this main road and then this secondary road will
           | get me to XYZ"
        
             | dangardan wrote:
             | That's a good point, but to extend my situation, it's a
             | client database I've been asked to transform. The map is
             | indeed difficult to grok all in one, but using different
             | views that come out of the box in yEd, along with some
             | basic rules such as "make all nodes with the word 'cust'
             | yellow", it's been surprisingly effective at exploring the
             | schema.
        
         | kiitos wrote:
         | "A picture of a schema"? What does this mean?
         | 
         | And by SQL do you mean DDL?
        
           | selcuka wrote:
           | > "A picture of a schema"? What does this mean?
           | 
           | A hand-drawn picture of a database schema. Something like
           | this:
           | 
           | https://www.dreamstime.com/stock-images-database-schema-
           | imag...
           | 
           | > And by SQL do you mean DDL?
           | 
           | DDL is a subset of SQL, so the distinction is moot.
        
             | kiitos wrote:
             | Huh, weird stuff!
             | 
             | Your linked image shows what appear to be tables, and the
             | little arrows appear to represent entity-relationships
             | between them. But I'm not sure how you'd get useful DDL out
             | of it -- none of the columns have types, no indices, etc.!
             | 
             | Maybe an LLM could sketch out a DDL skeleton from a
             | picture, which someone could use as a starting point?
        
               | Philpax wrote:
               | LLMs can infer a lot of details from "common sense" (i.e.
               | statistical association). As a human, I can figure out
               | what each field's types should be, so your frontier LLM
               | could, too: https://chatgpt.com/share/680e3a90-8660-8003-
               | 998f-91ad98e32f...
        
       | jesperwe wrote:
       | The FLOSS tool https://drawdb.vercel.app/editor has been here on
       | HN several times. IMHO also does a somewhat better job.
        
         | zelphirkalt wrote:
         | Doesn't seem to work on mobile at all. Tables that I add are
         | not shown in the diagram. The diagram area is not visible
         | unless I scroll sideways.I cannot scroll sideways, unless I
         | request desktop site and scroll there. But I still don't see
         | any entities in the diagram. When I use the buttons to add
         | tables in the diagram, they also do not show up in the grid,
         | but only on the left in the textual list of tables. Seems like
         | a complete non-functional tool on mobile.
         | 
         | Usually I wouldn't care too much about a tool like this running
         | on mobile, but not at a PC right now, so that's all I can give
         | feedback about.
        
           | dammaj wrote:
           | It works on mine.
        
           | matt_s wrote:
           | I wouldn't think mobile is a primary workspace for doing any
           | sort of diagramming, let alone ERD where its assumed the user
           | has a PC.
        
       | zelphirkalt wrote:
       | Is there a way to switch to numerical
       | multiplicities/cardinalities? I always find the circle and feet
       | notation not very readable and also less precise in some cases.
       | 
       | My personal go-to tool for this kind of diagram may remain yEd
       | graph editor for now.
        
       | vfclists wrote:
       | can it export to other graph drawing languages like graphviz or
       | mermaid?
        
         | vseplet wrote:
         | It seems like there was no such possibility.
        
       | quentincaffeino wrote:
       | have a look at plantuml
        
       | solids wrote:
       | Mermaid is also great
       | 
       | https://docs.mermaidchart.com/blog/posts/7-er-diagram-exampl...
        
         | blitztime wrote:
         | I found out about mermaid recently and have been using it to
         | make diagrams. How do you use it for data modeling though?
        
           | PhilippGille wrote:
           | Did you follow the link that the parent poster posted? It's
           | exactly about how to do data modeling with Mermaid.
        
             | hobs wrote:
             | I think most people would mean something like using the
             | foreign key constraints information schema views to
             | understand the relationships, print out the columns, etc -
             | its really a pretty trivial SQL query to create mermaid
             | relations (though your engine of choice may not have all
             | the metadata you want) but its actually difficult to find
             | the right level of granularity - its very easy to make a
             | lot of visual noise in mermaid.
        
           | Ygg2 wrote:
           | What do you mean by data modelling? Which UML part? You start
           | the diagram with a `erDiagram`                   ---
           | title: Order example         ---         erDiagram
           | CUSTOMER ||--o{ ORDER : places
        
         | nickkell wrote:
         | I use it in my project to document the schema. We keep the
         | markdown file in source control so that we update it whenever
         | we make database changes. We also have an extension that allows
         | viewing it as the diagram in vscode in our
         | .vscode\extensions.json file.
         | 
         | There are some disadvantages however:
         | 
         | 1. The foreign key relationships aren't completely clear
         | 
         | 2. The diagram became difficult to navigate in vscode as our
         | schema grew in size
        
       | alwinaugustin wrote:
       | This has been there forever.
        
       | ozim wrote:
       | Maybe it is me but I never find those relationships diagrams that
       | useful.
       | 
       | When structure is obvious then it is obvious and I don't need a
       | diagram - when structure is convoluted diagram is such a mess
       | anyway that it is not helping at all.
        
       | lucb1e wrote:
       | Language in that gif reminds me of DOT, from apt install graphviz
       | which is pretty widely used I think. Various tools I use
       | (including some I wrote or worked on) output to DOT format
       | because it's so simple, and from there you tell the tool to make
       | it into the appropriate format for your pdf report or webpage or
       | so: `cat diagram.dot | dot -T png > diagram.png`. The DOT format
       | is not as simple as dbdiagram though! But it's also not limited
       | to database diagrams:
       | https://en.wikipedia.org/wiki/DOT_(graph_description_languag...
       | 
       | In case someone wished this exists but for something other, or
       | more versatile, than database diagrams, although dbdiagram as a
       | product looks way more polished and integrated
        
         | notpushkin wrote:
         | I think you can also convert it to SVG with the same tool.
        
           | lucb1e wrote:
           | Yep!                   $ man dot | grep --context=10 svg
           | OUTPUT FORMATS            Graphviz uses an extensible plugin
           | mechanism [...] Traditionally, Graphviz supports the
           | following:            -Tdot (Dot format containing layout
           | information),            -Txdot (Dot format containing
           | complete layout information),            -Tps (PostScript),
           | -Tpdf (PDF),            -Tsvg -Tsvgz (Structured Vector
           | Graphics),            -Tfig (XFIG graphics),            -Tpng
           | (png bitmap graphics),            -Tgif (gif bitmap
           | graphics),            -Tjpg -Tjpeg (jpeg bitmap graphics),
           | -Tjson (xdot information encoded in JSON),            -Timap
           | (imagemap files for httpd servers for each node or edge that
           | has a non-null href attribute.),            -Tcmapx (client-
           | side imagemap for use in html and xhtml).
        
       | rsecora wrote:
       | I usually go with the FOSS https://pgmodeler.io
       | 
       | Its feature-rich, albeit focused on Postgres. And it's ability to
       | compare database schemas makes updating and applying diffs much
       | easier.
        
       | smusamashah wrote:
       | I maintain an almost exhaustive list of text to diagram tools
       | [1]. dbdiagram.io requires login to export.
       | 
       | Other dedicated text to database diagram tools are
       | 
       | 1. Database Diagram Tool https://databasediagram.com/app
       | 
       | 2. QuickDBD https://app.quickdatabasediagrams.com/#/
       | 
       | 3. ERD Lab https://app.erdlab.io/designer/guest (Requires Login
       | to Export)
       | 
       | [1]: https://xosh.org/text-to-diagram/
        
         | spintin wrote:
         | Isn't editable diagram to text more useful?
         | 
         | I used to query databases and create diagrams from the
         | metadata, but text to diagram just makes little sense to me.
        
           | omneity wrote:
           | You probably know this already but I'll leave it for
           | posterity.
           | 
           | https://mermaid.js.org/syntax/entityRelationshipDiagram.html
        
         | vseplet wrote:
         | Thank you very much, interesting!
        
         | xnickb wrote:
         | A bit more specialized, but still a nice list:
         | https://wiki.postgresql.org/wiki/Design_Tools
        
         | darth_avocado wrote:
         | Is there a tool that can connect to a db and generate its own
         | diagram?
        
           | colemannugent wrote:
           | DBeaver will generate an ER diagram from a connected DB
        
             | 3eb7988a1663 wrote:
             | I find the auto-generated layout to be pretty poor.
             | Requires a lot of jostling to get something more compact
             | and immediately usable.
        
           | jamwil wrote:
           | Proprietary and a bit pricy but Luna Modeller is good.
        
           | breadwinner wrote:
           | Visual DB can do that: https://visualdb.com/
        
           | ssfak wrote:
           | chartsdb[1][2] can be installed locally (or run through
           | Docker) and import your database schema
           | 
           | [1]: https://chartdb.io/ [2]:
           | https://github.com/chartdb/chartdb
        
           | speakspokespok wrote:
           | Your question doesn't include the size or complexity of the
           | database you're trying to visualize. With that preface said,
           | schemaspy has been around for years and years and I've seen
           | it at every tech company I've ever worked at for visualizing
           | their production databases. I think it's free?
           | 
           | https://schemaspy.org/samples/chinook/relationships.html
        
       | gitroom wrote:
       | insane the number of ways people handle diagrams - honestly i
       | just get lost in all the tool options. you think having too many
       | choices slows progress or actually helps in the long run?
        
       | bob1029 wrote:
       | Tooling is a big reason I would reach for SQL Server over
       | alternatives in many scenarios. Combining SSMS with 1-2 RedGate
       | utilities and an Excel license is essentially the one ring of
       | database management.
       | 
       | When you have a complex data model and need to constantly engage
       | the business regarding it, having an easy way to transform,
       | compare and visualize representations of the schema can mean the
       | difference between ~3 clicks and a multi-day journey into the
       | rabbit hole of shiny technology.
       | 
       | I would still reach for SQLite in any scenario where I am
       | embedding the DB in software that I am distributing. But, if I
       | need to stand up a database that multiple systems and users are
       | all going to talk to, I am always going to advocate for spending
       | a little bit of money.
        
         | DaiPlusPlus wrote:
         | > Combining SSMS with 1-2 RedGate utilities and an Excel
         | license [...] a complex data model and need to constantly
         | engage the business regarding it
         | 
         | SSMS suffers greatly from not having a Jupyter Notebook-style
         | mode; whereas SSMS' cousin in Azure Data Studio does feature
         | it, it's still thoroughly compromised in other ways to make it
         | useless, unfortunately.
        
       | KronisLV wrote:
       | This might be silly, but having tools like that built into MySQL
       | Workbench, alongside both forward and backward engineering (get
       | SQL from model and apply it, or get a model from an existing DB)
       | is one of the reasons why I very much enjoyed working with it:
       | https://dev.mysql.com/doc/workbench/en/wb-eer-diagrams-secti...
       | (I might otherwise _often_ prefer PostgreSQL, especially due to
       | the procedural language and transactional DDL), also works fine
       | with MariaDB for the most part
       | 
       | In most projects I've seen people just do some generic models
       | (not even proper ED diagrams) and write some SQL migrations to be
       | applied with something like dbmate or Flyway and call it a day,
       | though working on DB schemas feels like one of the areas where
       | model driven development actually makes a lot of sense and feels
       | natural, if the tooling is there! Otherwise you end up with the
       | actual schema and the models you make diverging slightly over
       | time, either due to people forgetting to add stuff, or you
       | yourself missing something. That's also why I enjoy the likes of
       | DbVisualizer for getting a nice overview about what's actually in
       | the schema: https://www.dbvis.com/
        
       | isalmon wrote:
       | If you need it for your warehouse (Snowflake/Databricks) - take a
       | look at SqlDBM: https://sqldbm.com/
        
       | bullen wrote:
       | I made a database ORM editor too: https://tinspin.itch.io/node
       | 
       | Mine is a desktop Java app. that exports XML that then gets
       | converted to SQL (create.sql)
       | 
       | and ORM Java sources with the matching SQL queries. No
       | reflection, just code generation.
       | 
       | Should work with MySQL (MariaDB), Postgres and Oracle.
        
         | vseplet wrote:
         | You're cool!
        
       | aerhardt wrote:
       | I've used it in the past really like it.
        
       | Crowberry wrote:
       | I can recommend drawsql
        
       | pablogancharov wrote:
       | Just for fun you can explain the domain problem to an LLM, then
       | ask it for the dbdiagram json representation. Fix any issue you
       | may spot, then ask the LLM to convert it to Jhipster modeling
       | language (JDL) and import it with the cli. For me that's the type
       | of workflow that involves AI, rather cursor/windsurf/claude
       | approach.
        
       | rbanffy wrote:
       | I would absolutely love a free tool that compiled SQL into UML
       | suitable for diagrams and visual exploration.
       | 
       | BTW, one that did the same for Terraform would make my life so
       | much easier...
        
         | perching_aix wrote:
         | I was also very interested in finding a TF auto-diagramming
         | tool at some point. After researching some examples however, I
         | became convinced that it's not something I actually wanted or
         | could make proper use of.
         | 
         | The issue I had with them is that they were just plain
         | confusing and "noisy". After reflecting on it a bit, this made
         | sense. Diagrams are only ever easy to follow if they have a
         | clear purpose, but with minimal to no human semantic context,
         | these auto generated diagrams could never be that way. They
         | were just aimless scattershots of boxes with pretty icons on
         | them.
         | 
         | Maybe it was just me not being used to them enough, and I could
         | have grown to appreciate them and utilize them well if I
         | bothered for long enough. But if I think about what I'd want
         | from a diagram, it would be things like how data flows through
         | an infrastructure, which Terraform cannot hope to have an exact
         | idea about. And this only gets worse when you upload custom
         | code, such as by using lambdas, containers, ec2 instances, what
         | have you.
        
       | bradleyy wrote:
       | It's really convenient for being able to quickly whip up diagrams
       | to share for discussion. Like when you have a small group of
       | folks that need to iterate on a DB design, it's super simple to
       | change things.
       | 
       | I've used this a bunch early in projects where the team needs to
       | agree on DB structure:
       | 
       | 1. whip something up as a discussion piece 2. usually a quick
       | meeting to iterate on it, spot problems, correct. 3. you're close
       | enough to build the DB bits, ship it. :)
        
       | bobbruno wrote:
       | I have an issue with calling any of the diagrams created by all
       | the tools mentioned "ER Diagrams". Entities are not the same
       | thing as tables, and Sr diagrams are not relational database
       | table diagrams. A (semi) visual representation of a database
       | schema of any size that'd require a visual representation is
       | almost necessarily a mess, and doesn't really help discussion or
       | design. It is at best a faster indexing into the DDL for the
       | tables.
       | 
       | What I'd love to have (but never saw an affordable tool) is the
       | ability to work at different levels of abstraction: physical
       | (which is what all tools here actually do), logical (hiding field
       | details, normalization and de normalization, giving better
       | business entity names, etc) and conceptual (to show how big
       | picture concepts relate, domain boundaries, department
       | dependencies/relationships).
       | 
       | Just the physical representation does, for my purposes, little
       | more than code highlighting.
        
       | aslakhellesoy wrote:
       | I've been using Mermerd [1] for years and never looked back.
       | Simple, does one thing well.
       | 
       | It gets even better with elk layout - just prepend this
       | frontmatter snippet to mermerd's output:                   ---
       | config:           layout: elk         ---
       | 
       | [1]: https://github.com/KarnerTh/mermerd
        
       ___________________________________________________________________
       (page generated 2025-04-27 23:01 UTC)