Se você já trabalhou em pelo menos uma manutenção de software com banco de dados, com certeza deve ter sofrido bastante para conseguir gerenciar uma quantidade de tabelas que não foi você que projetou.
Se a pessoa que fez a modelagem deixou um modelo de dados,sorte sua, se ela inda trabalha na mesma empresa, melhor ainda. Entretanto, na maioria das vezes isso não acontece, temos uma montanha de tabelas na nossa frente e precisamos de ferramentas para descobrir os relacionamentos entre elas.
Pois bem , sua vida de desenvolvedor vai mudar, pois depois de ler esse artigo você terá uma excelente ferramenta que:
- funciona com banco de dados: IBM DB2, Firebird, HSQLDB Server, Microsoft SQL Server, MySQL, Oracle, PostgreSQL e Sybase Server
- gera a lista de todas as tabelas
- gera a lista de todos os relacionamentos entre as tabelas
- gera a lista de todas as colunas das tabelas
- gera a lista de todas as constraints das tabelas
- gera a lista de possíveis anomalias nas tabelas, como por exemplo a falta de algum índice
- não custa um centavo, a ferramenta é open source!
A mágica é feita com a ferramenta “espiã de schema” de banco de dados chamada SchemaSpy!
Agradeço muito ao colega Hélio Frota que me mostrou essa pérola! =)

Veja aqui uma amostra do relatório que ela pode gerar.
Para fazer os seus relatórios basta ter apenas três coisas:
- o arquivo jar do Schemaspy
- o arquivo jar que implementa a especificação JDBC do seu banco de dados, como por exemplo a do MySQL ou Oracle
- um script batch com o comando para gerar o relatório, como por exemplo roda-report.cmd
No caso de gerar o relatório com o banco de dados MySQL, usando o usuário “root” e senha “teste” com o banco de dados “mysql”, temos a seguinte chamada:
[fb@cascao schemaspy]$ java -jar schemaSpy_3.1.1.jar -cp mysql-connector-java-5.1.6-bin.jar -cid -t mysql -db mysql -u root -p teste -host localhost -o diretorioDoRelatorio
Using database properties:
[schemaSpy_3.1.1.jar]/net/sourceforge/schemaspy/dbTypes/mysql.properties
Connected to MySQL - 5.0.60-log
Gathering schema details………………(2sec)
Writing/graphing summary…………(4sec)
Writing/graphing results………………(4sec)
Wrote relationship details of 18 tables/views to directory ‘diretorioDoRelatorio’ in 10 seconds.
Start with diretorioDoRelatorio/index.html
[fb@cascao schemaspy]$
Dessa geração de esquema, temos esse relatório abaixo:
Esse aqui foi gerado em Oracle 10g Express, acessando o usuário HR que vem com algumas tabelas de exemplo.
O batch utilizado foi esse:
java -jar schemaSpy_3.1.1.jar -cp ojdbc14.jar -cid -t orathin -port 1521 -db XE -u HR -p HR -host localhost -o reportOracle
Como resultado, temos esse relatório:
Note que ele exibe não só os relacionamentos para todas as tabelas, mas também os para apenas uma tabela, o que é excelente para uma rápida consulta; observe o exemplo dessa tabela LOCATIONS que se relaciona com DEPARTMENTS e COUNTRIES na imagem abaixo:
Agora, com apenas três arquivos, você pode carregar no seu pendrive um excelente gerador de documentação!
Bons relatórios! =)








julho 13th, 2008 at 2:55 pm
[...] Gerando relatórios do Schemaspy via Maven Antes de mais nada, para um melhor entendimento sobre o SchemaSpy e um startup mais rápido visite : Boaglio.com [...]
julho 13th, 2008 at 9:18 pm
Show de bola a ferramenta Fernando, cansei de ficar catando relacionamentos ou tabelas em imagens geradas pelo ERWiN ou em projetos de BD impressos
Vai me ajudar bastante
[]’s
julho 21st, 2008 at 4:41 pm
Boaglio,
Isso vai ser bastante útil aqui no projeto (pretendemos deixar disponível em um servidor para todo mundo consultar).
Obrigado pela dica.
novembro 24th, 2008 at 9:27 am
Bom dia,
alguém poderia me ajudar, trbalho com o banco oracle 8.0.5.1.0 e não conheço muito o Java, gostria de gerar esse arquivo referente aos dados do banco mas não sei como configurar o local onde se busca a conexão e nem se preciso de algum arquivo em específico para isso, sei que tenho algo referente ao java para poder usar o oracle application que fica emulado na máquina virtual do Java.
Alguém pode me ajudar?
Desde já agradeço.