SchemaSpy is a Java-based tool (requires Java 8 or higher) that analyzes the metadata of a schema in a database and generates a visual representation of it in a browser-displayable format. It lets you click through the hierarchy of database tables via child and parent table relationships as represented by both HTML links and entity-relationship diagrams. It’s also designed to help resolve the obtuse errors that a database sometimes gives related to failures due to constraints.

SchemaSpy comes with ABSOLUTELY NO WARRANTY.
SchemaSpy is free software licensed and distributed under LGPL version 3 or later
SchemaSpy can be redistributed under the conditions of LGPL version 3 or later.

If you like SchemaSpy, don’t forget to give us a star on Github.

SchemaSpy produces dot-file and uses either the dot executable from Graphviz or embedded viz.js to generate graphical representations of the table/view relationships. This was initially added for people who see things visually. Now the graphical representation of relationships is a fundamental feature of the tool. Graphvis is not required to view the output generated by SchemaSpy, but the dot program should be in your PATH (not CLASSPATH) or use the -gv or -vizjs arguments, else none of the entity relationship diagrams will be rendered.

SchemaSpy uses JDBC’s database metadata extraction services to gather the majority of its information, but has to make vendor-specific SQL queries to gather some information such as the SQL associated with a view and the details of check constraints. The differences between vendors have been isolated to configuration files and are extremely limited. Almost all of the vendor-specific SQL is optional.

SchemaSpy was mentioned in one of the O’Reilly’s book Java Power Tools