Closed jpschewe closed 10 years ago
Question is do we want a diagram that is maintained manually or do we want to use something that reads the database and creates the diagram?
Depends. Do you ever intend to generate code from the diagram? if not, and you feel as if the diagram has documentation value, then generate the diagram from the schema.
I don't generate code off of it so generating the diagram is probably best. Although the schema changes depending on the challenge description. So a challenge description would need to be made that has all features init to create a generic database that we could then generate a schema off of. This isn't difficult, but we do need to be aware of this.
Some options that look promising.
SchemaSpy looks like it generates a set of HTML pages and diagrams (using GraphViz) that would be nice to walk through. We should look into if it supports HSQL and if it's callable directly from inside our application. http://schemaspy.sourceforge.net/
SchemaCrawler also looks good. It supports HSQL and it has an API for accessing database metadata as Java objects. It also uses GraphViz for diagrams. http://schemacrawler.sourceforge.net/index.html
If those don't pan out Erviz looks like it might be an option too. It hasn't been maintained in a LONG time, but we could generate diagrams with it. http://slopjong.de/2011/02/26/whats-erviz/
I decided on SchemaSpy as it was the first one I tried and I was able to get it connected to an internal example database. I hooked it into the documentation that is sent with the distribution. At this point I'm not hooked into the documentation in Jenkins.
Switched javadoc to go into docs/api rather than dist/docs/api. This allows all of the documentation to be referenced from Jenkins.
It seems that the plugin that I've been using has gone completely commercial and I can't download it anymore. I need to decide what to do about our database diagram.