Database schema visualization is an essential process during the initial project design phase. Also, it can be useful when you need to reverse engineer a big schema and need to understand the various relationships between different tables. Below are given various database diagramming and visualization tools that will help you make sense of your complex database designs.
SchemaSpy is a Java-based tool (requires Java 5 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.
SchemaSpy uses Graphviz, specially the dot program to generate graphical representations of the table/view relationships. SchemaSpy is a command line tool. If you’re more comfortable with the GUI approach then try out Joachim Uhl’s SchemaSpyGUI.
2. MySQL Workbench
MySQL Workbench simplifies database design and maintenance and improves communication among DBA and developer teams. It has a nice schema visualization tool that also enables you do design with ER diagrams.
Many database features are supported, such as keys, foreign key constraints, comments and indexes. You can either save your design (for further loading & modifications), print it or export as SQL script. It is possible to retrieve (import) schema from existing database.
Like Schemaspy, SchemaCrawler generates database diagrams using Graphviz. You can easily filter out tables, views, columns, stored procedure and functions based on regular expressions, using the grep functionality.
Schemaball is an SQL database schema viewer. It however requires Perl and a few modules, such as GD and optionally Math::Bezier and SQL::Translator. Schemaball creates flexible visualizations of database schemas. Schemas may be read from an SQL schema dump, flat file or a live database.
Shemaball was originally designed for MySQL and works with MySQL out of the box. While InnoDB tables support foreign keys (as of Mysql 3.23.44), MyISAM tables do not (as of 4.0). Therefore, Schemaball can identify foreign keys using CONSTRAINT table options, by regular expressions applied to participating tables, or by reading constraints from a file.