Show HN: Private, text to entity-relationship diagram tool

npack | 262 points

We've been using https://dbdiagram.io/, which also has an open-source markup language: https://github.com/holistics/dbml

shizcakes | 10 months ago

From what I can tell, a lot of these tools seem OK for capturing relatively simple database designs, but at least "look" fairly inadequate for more robust needs. This makes sense if you're trying to use a GUI for creating a database: there's going to be limits to how much you can accomplish easily with that approach so being robust for smaller databases works out.

Most of the time I want an ERD tool it's to capture a database that I've already built for documentation purposes, or to document a database that someone else has built and that I need to come to terms with.

For this I use SchemaSpy (https://schemaspy.org/). I let it reverse engineer the database, build the diagrams, etc. I like the way it organizes what it captures and that it will do things like capture in-database object comments and put them in sensible places; for example, this lets me use the PostgreSQL COMMENT ON * commands to add contextually relevant documentation in the DDL and this tool will do the right thing when I generate database documentation.

sbuttgereit | 10 months ago

The issue I have with a lot of these tools is they work fine when depicting relationships between tables in the same schema (talking mainly about PostgreSQL databases), but few support showing relationships between tables across different schemas.

Also, when the number of tables grows large, few have layouts arranged in an optimal way. I use D2 (https://d2lang.com/) to create ERDs. However, of the free layout engines available in D2, Dagre (https://github.com/dagrejs/dagre) and ELK (https://github.com/eclipse/elk) both don't have optimal placement of layouts for a sufficiently complicated database.

mih | 10 months ago

Jetbrains has their own mermaid plugin they started working on recently, and honestly, I’ve found mermaid to be really all I need.

https://plugins.jetbrains.com/plugin/20146-mermaid/reviews

graypegg | 10 months ago

Oh! I thought this was something about describing a data model in plain text and having an LLM generate the entity-relationship diagram tool.

I’ve done this with GPT4, asking it to output Mermaid relationship diagrams. And it’s usually impressively good (never went beyond ~10 entities). I also had it update and fix the result using natural language feedback.

I sometimes had to touch up a few things "by hand", but I really wouldn’t bother doing it from scratch myself anymore.

Even the failures are interesting, as they often result from an unclear description, or issues in my own understanding of the domain or model.

ElFitz | 10 months ago

I am somewhat maintaining a list of text to diagram tools at https://xosh.org/text-to-diagram/ (will add this one too)

These are two other dedicated tools I have on the list

https://app.quickdatabasediagrams.com/#/

https://dbdiagram.io/d

smusamashah | 10 months ago

I love that this is trending on HN. LLMs be damned. We still have lots of “simple” problems to be solved, like how to effectively write and share an ERD.

saadatq | 10 months ago

Great ! I am also excited to share ERDTOOL built in this space - https://erdtool.com ... - Multiplayer entity-relationship-diagramming tool - think Figma of ERDs - Supports Postgresql and MySQL (mysql part is new homepage hasn't been updated to reflect that) Building it solo. I hope this will also interest the tech community

kapv89 | 10 months ago

Created this python script to export mysql to this format. Used chatgpt so expect weird code.

it works! but dies a little with many tables :-)

code: https://paste.rs/1ZHp7.py3

screenshot: https://i.imgur.com/4D2hEWc.png

capitanazo77 | 10 months ago

I just today discovered that draw.io auto converts Mermaid to editable shapes in draw.io. The best of both worlds!

flarg | 10 months ago

My own tool adopts a mixed approach to the layout problem : diagram-as-text, but the line breaks and the order of the boxes (entities and relations) are used as position hints. The resulting layout is constrained to an invisible grid corresponding to a left-to-right and top-to-down reading of the source.

Moreover, since there are relatively few possible grid positions, automatically rearranging the layout becomes an assignment problem, which can be solved by a simple b&b algorithm.

Obviously, this wouldn't scale, but this is just a teaching tool that I use to present small ERDs to my students.

You may test it at https://mocodo.net. Click the turning arrows symbol to draw the diagram and the shuffle symbol to rearrange it randomly.

Warning: French-flavored ERD, aka Merise MCD.

laowantong | 10 months ago

I am using ChatGPT to generate PlantUML Entity Diagrams. I have a separate chat just for this purpose. It can generate the PlantUML and Spring JPA Java code for all my entities. If I need a change , I ask it to update the model and generate updated diagram and code. It also generate Liquibase xml changeset. Moreover, it can also generate my GraphQL schema .. and update it when I change the data model.

This is the friggin' holy grail of all diagramming and modeling tools. And it is available and working now. Everything else is just too primitive !

manishsharan | 10 months ago

Cool tool. My favorite tool for text to model / model to SQL is: https://app.quickdatabasediagrams.com/

otto_ortega | 10 months ago

Thanks! I was writing a FastAPI/SQLAlchemy+SQLModel/Rocketry app this week and dreaded documenting my model relationships. That said, I see a few SQLAlchemy extensions and Pydantic→Mermaid projects that can probably be used in my case, and that was the route I was initially planning on going down despite none of them being aesthetically pleasing.

Many of these online tools reasonably rely on human input to place tables/nodes. Do any of these recommended tools do a decent job of smartly laying out the final diagram?

hackish | 10 months ago

Something similar made by me (text2db) long time ago, cannot maintained it, but if someone wants to continue, code is available on github

https://stackblitz.com/edit/web-platform-hxc9oz?file=index.h...

https://www.youtube.com/watch?v=8hYtZ38wuz4

text2db | 10 months ago

Ah, diagrams from text. Every few months I look into producing slides, and look for something that saves me from having to use a mouse-intensive tool like PowerPoint or KeyNote, preferably using Markdown. There are plenty of tools to make markdown slides — slidev, Marp (esp w VSCode extension), HackMD, etc. But for diagrams I haven’t converged on a good workflow. Maybe mermaid is worth spending time with.

d4rkp4ttern | 10 months ago

I love tools like this (text to diagram) and tend to use mermaid for most things. I also really like draw.io which includes a gui and has integration with GitHub to save diagrams directly to a source repo.

Is there a solution that has direct, bi-directional integration with Postgres/MySQL. For example, execute DDL from the diagram or point to an existing db and output the diagram text?

digitalsanctum | 10 months ago

Since this thread is likely to attract good answers to this...

Are there any Terraform-like declarative tools for your schemas that will do a diff and generate a change script?

I've seen liquibase and it's just a series of migrations which I think is pretty gross.

I really like MS's SSDT tools, but the DACPAC workflow is pretty heavy to operationalize, though doable.

rjbwork | 10 months ago

This looks fantastic, exactly what I needed last time I worked with DBs and could not find. Hope to be using it soon.

davidktr | 10 months ago

1. Why not just use SQL?

2. You should really work on error handling. I went to /app and tried changing the name of the CustomerID column, and nothing happened. I tried changing something else and it didn’t work either. It should tell me that the other table is mentioning a non-existent column and the input is invalid.

Kwpolska | 10 months ago

I use ERDLab

Check it out at https://app.erdlab.io/designer/new

Has a lot more cool features for better visual representation like color tagging and search.

I also like the ability to create tables/notes using the canvas even though it has DDL support.

sexydev | 10 months ago

When I see things like this, now my immediate question is always: what's the underlying model? Is this like a generally open and free thing, with maybe a little bit of monetization to keep the lights on? Then that's great.

But, if this is looking to be a big moneymaker? eh, nah.

jrm4 | 10 months ago

I'm not too familiar with ER-diagrams -- how does this compare to Mermaid? https://mermaid.js.org/syntax/entityRelationshipDiagram.html

vegarab | 10 months ago
[deleted]
| 10 months ago

Is it possible to resize a table in the diagram? I work on a database that has a column name of "order_module_order_num" and if you try putting that in the text doesn't fit. The text runs into the data type.

kholdstayr | 10 months ago

Love it, is there any way to make it a little more fuzzy. Ie pk works but "primary key" doesnt, uint works, but "integer unsigned" doesnt?

Great idea for helping teams communicate.

verelo | 10 months ago

I’m a tech writer and love the idea of “drawing” diagram using the markup. Definitively will try to use it by my another docs project. Thank you.

mattdocumatt | 10 months ago

did you consider letting the input be just sql ddl rather than yet another layer of ddl?

allanrbo | 10 months ago

for lighter usage, i am using Database Designer on Android.

it is surprisingly easy to use and most of my ideas never come up when i'm on my pc anyway.

mfru | 10 months ago

neato! anyone interested in a collab on a more generic natural language graph making tool (think GoJS powered by LLM to make SysML diagrams etc). Demo of api here, I cant do front end, it is a weakness…

https://grapher.baselines.cloud/

hit me up on linkedin: /in/thenatefisher

fallingmeat | 10 months ago

Very cool!

tessbi | 10 months ago

why no dark modeeee ahh

Cypher | 10 months ago

just use dbdiagram.io

penciltwirler | 10 months ago

[dead]

sql-spy | 10 months ago

[flagged]

Solvency | 10 months ago

lpt: ask chatgpt or other sufficient LLMs for catchy domain name variations. I specifically ask for "in web 2.0 style".

I crank out short catchy brand names and domain names at far greater efficacy now, steers my thoughts really well if I’m not outright taking the first suggestion verbatim

yieldcrv | 10 months ago

> Generate DDL directly generate SQL statements to create your database tables.

Looks like it's capable of turning a diagram to SQL too? That's neat!

For those that are interested in an GPT-powered tool, we have a project that can generate diagrams from code of any language or natural language: https://eraser.io/diagramgpt

shinkim0914 | 10 months ago