É possivel gerar o dicionário de dados a partir de um BD já existente?

Engenharia Reversa e Dicionário de Dados

O dicionário de dados permite que os analistas obtenham informações sobre todos os objetos do modelo de dados através de uma forma textual, contendo explicações por vezes difíceis de incluir no diagrama entidade-relacionamento

Modelo Entidade-Relacionamento Seja por uma questão cultural ou simplesmente por falta de tempo, muitas vezes o banco de dados não possui nenhuma documentação. Qualquer uma dessas situações acaba por prejudicar a manutenção ou futuras atualizações no BD. Nestes casos, a técnica de engenharia reversa pode ser utilizada para sanar esse problema.

A engenharia reversa de software consiste em analisar um determinado sistema para criar sua representação em um nível mais alto de abstração. Na inexistência do dicionário de dados (por exemplo), podemos gerar o modelo de dados a partir de um banco de dados já existente. Para exemplifiar adotarei as três tabelas modeladas: Fornecedor, Produto e Estoque. Seus respectivos scripts SQL para criação são exibidos a seguir:

TABELA PRODUTO

CREATE TABLE PRODUTO (
   CODPRODUTO INT PRIMARY KEY IDENTITY,
   FORNECEDOR_CODFORNECEDOR INT NOT NULL,
   DESCRICAO VARCHAR(100) NULL,
   PESO FLOAT NULL,
   COR VARCHAR(20) NULL,
   VALIDADE VARCHAR(10) NULL,
   INDEX PRODUTO_FKIndex1(FORNECEDOR_CODFORNECEDOR)
);

TABELA FORNECEDOR

CREATE TABLE FORNECEDOR (
   CODFORNECEDOR INT PRIMARY KEY IDENTITY,
   NOME VARCHAR(30) NOT NULL,
   TELEFONE VARCHAR(15) NOT NULL,
   EMAIL VARCHAR(80) NOT NULL,
);

TABELA ESTOQUE

CREATE TABLE ESTOQUE (
   CODESTOQUE INT PRIMARY KEY IDENTITY,
   PRODUTO_CODPRODUTO INT NOT NULL,
   LOTE INT NULL,
   QUANTIDADE INT NOT NULL,
   INDEX ESTOQUE_FKIndex1(PRODUTO_CODPRODUTO)
);

banco de dados Importante destacar que neste teste prático o SGBD adotado foi o Microsoft SQL Server Managment. Como existem diferentes formas de implementação, alterações nos scripts SQL poderão ser necessárias dependendo do SGBD que você estiver usando (MySQL, PostgreSQL, Oracle, etc.). A funcionalidade do script para geração do dicionario de dados é descrita a seguir:


SCRIPT PARA DICIONÁRIO DE DADOS

SELECT
   T.name as Tabela,
   C.name as Coluna,
   TY.name as Tipo,
   C.max_length as Comprimento,
   C.precision as Precisão,
   C.collation_name as Codificação
FROM sys.columns C
INNER JOIN sys.tables T
   ON T.object_id = C.object_id
INNER JOIN sys.types TY
   ON TY.user_type_id = C.user_type_id
ORDER BY T.name, C.name

dicionário de dados Percebam que o SELECT faz uma junção (JOIN) entre os objetos que queremos documentar, neste caso, as tabelas, trazendo consigo o nome das colunas, o tipo de dado armazenado em cada coluna, o comprimento dos dados, a sua precisão e o tipo de codificação de caracteres. Este script pode ser aplicado em qualquer situação onde você precise gerar o dicionário de dados de um banco de dados já existente.

1 Usuário Online
Bom dia, seja bem vindo(a)!

Playlist


Arquivos do Blog