Skip to content(if available)orjump to list(if available)

Found a simple tool for database modeling: dbdiagram.io

smusamashah

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

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

You probably know this already but I’ll leave it for posterity.

https://mermaid.js.org/syntax/entityRelationshipDiagram.html

vseplet

Thank you very much, interesting!

lucb1e

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

I think you can also convert it to SVG with the same tool.

lucb1e

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

KronisLV

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/

solids

nickkell

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

blitztime

I found out about mermaid recently and have been using it to make diagrams. How do you use it for data modeling though?

PhilippGille

Did you follow the link that the parent poster posted? It's exactly about how to do data modeling with Mermaid.

hobs

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

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

bullen

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

You're cool!

jesperwe

The FLOSS tool https://drawdb.vercel.app/editor has been here on HN several times. IMHO also does a somewhat better job.

zelphirkalt

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

It works on mine.

rsecora

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.

vseplet

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

DBML is great. I hope it becomes a standard

maCDzP

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

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

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"

kiitos

"A picture of a schema"? What does this mean?

And by SQL do you mean DDL?

selcuka

> "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

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?

ozim

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.

bob1029

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

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

isalmon

If you need it for your warehouse (Snowflake/Databricks) - take a look at SqlDBM: https://sqldbm.com/