Categorias
Java Oracle

Criando documentação do seu banco de dados com SchemaSpy

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 ainda 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:

  1. o arquivo jar do Schemaspy
  2. o arquivo jar que implementa a especificação JDBC do seu banco de dados, como por exemplo a do MySQL ou Oracle
  3. 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! =)

Fernando Boaglio, para a comunidade. =)