This looks great. I briefly self-hosted 'wwwsqldesigner' but it barely worked well enough and needed project-specific hacks. Also didn't route the lines as nice as these screenshots.
The $5/mo Pro plan says "Up to 50 team members"
Just to clarify, that means $5 per person who can share within their 50 person team, right?
The free plan seems quite reasonable/generous 100 diagrams/5 members. It says "Purchase Now" though instead of "Sign Up"
Ah, it's SASS style – I was hoping for an open source project. This product seems like a nice feature, but not a standalone product I would pay for (mainly because $5/month is difficult to get approved in a larger organization, it's not about the cost itself). I could see myself using this in conjunction with a cloud SQL provider or with a local DB tool like DataGrip.
Downsides are I need to have the Java JVM installed to use it. Also had to do some make a custom property file to make it work with postgres 12 the last time I used it.
Since you mentioned DataGrip, it seems like IDEA has this capability built in - [0]. You may need the Ultimate version. In that case, the $5/month really comes down to the collaboration features, although, office 365/google docs could be a poor-man's alternative.
For MySQL users on macOS, Sequel Pro can export your schema to graphviz format as well - [1]
Does this generate diagrams from schemas and vice versa? That's always been my preferred way to both refactor and get started, and a few tools do this.
You can initialize ERD by exporting database metadata, and you can manually edit ERD through web UI, and finally you can export sql, including mysql postgres and mssql format.
A problem that I run into with every single tool that does this is that any database that I would _like_ to have an ERD of, is inevitably too insane to be cleanly represented by an auto-generated ERD.
The approach that I am taking is to narrow the ERD to a specific context, such as a single HTTP server request route. When the specific tables and relationships are rendered for just that route, a manageable amount of data is presented.
This approach also provides metadata that can be used to figure out which tables are being used where in the code, and vice versa.
I have been thinking along these same lines as our architecture has gotten more complex over the years. I've toyed with the idea of adding some sort of comment syntax into our codebases that would allow some level of automation around this idea. Auto-generation might work quite well given the limited context, to your point.
Yup, I have the same problem with UML diagrams. I always end up drawing the UML or ER diagrams by hand (i.e. manually), incorporating the tables/fields/relationships that seem interesting, leaving out the things that aren't. Then I update the diagrams multiple times as I start to understand the system better, or make changes to it.
Hi, if you are working in Ruby or Java, you might be interested in my project which is called AppLand (https://app.land). AppLand dynamically draws visualizations of web services, code paths, and SQL queries. The information is obtained primarily by running test cases; a browser plugin can also be used to step through the app and create a recording, which is then visualized in AppLand. AppLand gives you an end-to-end depiction of your code and data flows, so it's broader in scope than a static analysis (e.g. class diagram). And unlike APM (e.g. New Relic) you get detailed information about code internals (parameter values, function calls, etc).
Best of all, you can filter the views down to specific classes, keywords, and web service routes, which solves the scaling problem ("too many nodes!") that one generally finds with UML or ERD on large projects.
For the first version we used Mermaid, but in order to make it more interactive it’s now custom d3 code. It uses many of the same dependencies as Mermaid, for example graph layout.
Happy to see GraphViz used for these things! We tried to use it at one of my jobs but it wasn't as good as what was being rolled by hand with a tree of thousands of nodes, so we created something bespoke. But it has been in my toolkit since then, and I used it at one point to draw a flow chart for a choose-your-own-adventure style book.
The word “many” is clutter in an ERM, every arrow by default is a one to many arrow. It's presence probably suggests that your arrows are backwards from what I would do, they should point in the direction of data access which you can do, they are always many to one. The word “one” is nice, but because in practice it is created by a unique index on a column on the referring table, I have always denoted it with a small black line perpendicular to the arrow on that root side. Also missing seems to be nullable foreign keys, which should be denoted with an open circle at the root of the arrow, for the same reason. The fact that you have to put so much stuff on this side is the only reason I don't like Crow's Foot notation.
And, like, one of course wants bi-directional arrows representing a many-to-many relationship but one would like to zoom in on that and see the actual table maybe.
Growing this thing outward, you want to teach people how to think with it. Two diagrams two paths on a diagram which start from the same place and follow arrows until they get to the same place, suggests a consistency danger. Probably you intend one row in the source table to only map to one row in the destination table, what happens if the two paths give me a different answer? Is there a way to rephrase this so that this is no longer a problem? Furthermore, there always is because arrows come in different strengths. I can always downgrade a one-to-one into a many-to-one arrow. I can always downgrade that into a nullable many-to-one arrow. I can always downgrade that into a many-to-many double arrow. and this is enough to open that sort of double pointing relationship, deciding one of these relations to be many to many instead of many to one.
I would love to teach a virtual class on this, but the one thing I struggle with is standardizing some idea of type so that the BS is kind of cleared away. Like a lot of tables could be written as “string ComponentAssemblyCategory,” okay, it has a creation date and version tracking and whatever else, but fundamentally there is just a unique varchar in there which is the point of the table to hold. This is also necessary for those many-to-many tables to be auto-collapsible, you would find after all of the other fields are removed it would just be a `null ClientProjects` table allowing every project to have many clients or each client to have many projects.
Possibly unpopular opinion, but this generic graphic style seems completely unsuitable for a ERD tool. After clicking the link I was confused for a few seconds how poorly the site with a generic full-screen header of a (very) generic person at a laptop on a desk graphic can possibly be on the front page of HN, put a screenshot of the tool in the hero image.
Agree, I can't tell enough about this tool from looking at the website to decide whether I want to sign up or not. I want to try it out, but there's no demo and I'm not signing up just to find out what the product is.
Owner: I say this not to be harsh but as an honest piece of advice: if you want to catch my interest, show me a demo.
I agree 100%. There are quite a few design issues with the site (which isn't unexpected on a DB tool like this), but this generic graphic style is not only not relevant to this application, it's the most overused style out there right now. It actively works against the brand, nothing memorable sticks out.
I'm not trying to be negative, but the site is not doing the business any favors.
Some feedback: there are a lot of grammatical mistakes on your landing page. My English isn’t perfect either, but I would recommend having a native speaker do a pass over it.
Tried to upload tables.csv/relations.csv of my postgresql, it errored out with "We're sorry, but something went wrong. If you are the application owner check the logs for more information."
Now I'm worried about where my .csv files have ended up.
Not only it says "Get Started" instead of "Online demo" and "Sign up Free"/"Login" instead of "Download" (or even "Free Trial"), but it is illustrated with an unprofessionally colorful generic guy in front of a laptop instead of anything remotely representative of what the application is and does.
Looks like an interesting and potentially useful tool! I periodically use schemaspy to generate an ERD but have often thought it would be great to do this as part of our CI process, so we have an always up-to-date diagram to refer to.
One suggestion, you should remove the footer on your landing page if all the links just point to `#`...
39 comments
[ 3.4 ms ] story [ 82.8 ms ] threadThe $5/mo Pro plan says "Up to 50 team members"
Just to clarify, that means $5 per person who can share within their 50 person team, right?
The free plan seems quite reasonable/generous 100 diagrams/5 members. It says "Purchase Now" though instead of "Sign Up"
Downsides are I need to have the Java JVM installed to use it. Also had to do some make a custom property file to make it work with postgres 12 the last time I used it.
For MySQL users on macOS, Sequel Pro can export your schema to graphviz format as well - [1]
[0] - https://www.jetbrains.com/help/idea/creating-diagrams.html [1] - https://www.norbauer.com/rails-consulting/notes/erd-diagrams...
This approach also provides metadata that can be used to figure out which tables are being used where in the code, and vice versa.
Context is king!
Best of all, you can filter the views down to specific classes, keywords, and web service routes, which solves the scaling problem ("too many nodes!") that one generally finds with UML or ERD on large projects.
The word “many” is clutter in an ERM, every arrow by default is a one to many arrow. It's presence probably suggests that your arrows are backwards from what I would do, they should point in the direction of data access which you can do, they are always many to one. The word “one” is nice, but because in practice it is created by a unique index on a column on the referring table, I have always denoted it with a small black line perpendicular to the arrow on that root side. Also missing seems to be nullable foreign keys, which should be denoted with an open circle at the root of the arrow, for the same reason. The fact that you have to put so much stuff on this side is the only reason I don't like Crow's Foot notation.
And, like, one of course wants bi-directional arrows representing a many-to-many relationship but one would like to zoom in on that and see the actual table maybe.
Growing this thing outward, you want to teach people how to think with it. Two diagrams two paths on a diagram which start from the same place and follow arrows until they get to the same place, suggests a consistency danger. Probably you intend one row in the source table to only map to one row in the destination table, what happens if the two paths give me a different answer? Is there a way to rephrase this so that this is no longer a problem? Furthermore, there always is because arrows come in different strengths. I can always downgrade a one-to-one into a many-to-one arrow. I can always downgrade that into a nullable many-to-one arrow. I can always downgrade that into a many-to-many double arrow. and this is enough to open that sort of double pointing relationship, deciding one of these relations to be many to many instead of many to one.
I would love to teach a virtual class on this, but the one thing I struggle with is standardizing some idea of type so that the BS is kind of cleared away. Like a lot of tables could be written as “string ComponentAssemblyCategory,” okay, it has a creation date and version tracking and whatever else, but fundamentally there is just a unique varchar in there which is the point of the table to hold. This is also necessary for those many-to-many tables to be auto-collapsible, you would find after all of the other fields are removed it would just be a `null ClientProjects` table allowing every project to have many clients or each client to have many projects.
I cant click to enlarge the few screenshots (so I cant take a better look)
I cant try the tool without subscribing and creating an account
And I agree with you, replace this generic gif of a a person sitting on a desktop with a screenshot of the tool or something more relevant
Owner: I say this not to be harsh but as an honest piece of advice: if you want to catch my interest, show me a demo.
I'm not trying to be negative, but the site is not doing the business any favors.
Edit, yes: https://webpixels.io/themes/quick-website-ui-kit
Now I'm worried about where my .csv files have ended up.
Not only it says "Get Started" instead of "Online demo" and "Sign up Free"/"Login" instead of "Download" (or even "Free Trial"), but it is illustrated with an unprofessionally colorful generic guy in front of a laptop instead of anything remotely representative of what the application is and does.
One suggestion, you should remove the footer on your landing page if all the links just point to `#`...