alt=capaSQL12.JPG hspace=0 src="/loja/img/Capa_SQL42_G.gif" border=0>

Clique aqui para ler todos os artigos desta edição

Crie sua ferramenta administrativa para o Firebird

Conheça as tabelas de sistema e, através delas, monte sua ferramenta administrativa

 

Muitos usuários e administradores de banco de dados Firebird desconhecem as funcionalidades que as tabelas de sistema possuem. Com elas podemos extrair informações da estrutura do banco, resolver problemas do dia-a-dia e até mesmo construir uma ferramenta administrativa.

Pensando nisso, o objetivo deste artigo é explicar o que são e como funcionam as tabelas de sistema do Firebird, indo dos conceitos básicos, com exemplos práticos de sua utilização, até a montagem de uma ferramenta administrativa, semelhante ao IBConsole, que já foi muito utilizado por DBAs Interbase. Você poderá escolher a linguagem ou IDE usada na montagem. Dessa forma, poderá optar pelo Delphi, Kylix, JAVA, PHP, entre outras, e terá a possibilidade da ferramenta ser multi-plataforma e rodar via web. Não entraremos aqui em questões utilitárias, como backup, validation, etc. Nosso foco são as tabelas de sistema.

Conceito

As tabelas de sistema são “artifícios” utilizados pelos SGBDs para que estes possam armazenar, de forma organizada, as informações da estrutura do banco de dados, que conhecemos em SQL como DDL, ou seja, são as definições das tabelas, campos, geradores de número, triggers, chaves, índices, entre outros. No Interbase e no Firebird as informações ficam armazenadas nas tabelas que iniciam com RDB$, sendo que as mesmas ficam ocultas, por padrão, na maioria das ferramentas administrativas. Os exemplos citados neste artigo foram testados e executados utilizando a ferramenta IBExpert (www.ibexpert.com), na sua versão 2006.08.12 Personal Edition. E a versão do Firebird foi a 1.5.3 que pode ser baixada em www.firebirdsql.org.

Só lembrando: todo cuidado é pouco! Evite fazer alterações de dados nessas tabelas, isso pode corromper o banco e, por segurança, use um banco de testes.

Preparando o IBExpert

Estamos considerando que você já possui seu BD registrado no IBExpert. Aqui o utilizaremos com sua instalação padrão, sem Plugins ou opção de tradução, sendo assim, estará em inglês.

No IBExpert as tabelas ficam ocultas por padrão, então devemos ativar a opção de listagem. Para isso, vá até Database Registration Info através do Menu Database ou clicando com o botão direito no registro do seu BD. Selecione a opção DB Explorer no item Additional, feito isso, ative a opção Show System Tables, conforme mostra a Figura 1.

 

Figura 1. Ativando a listagem das tabelas de sistema.

 

Após esse procedimento você terá a opção System Tables visível no Database Explorer, como podemos observar na Figura 2.

 

Figura 2. Opção System Tables visível.

Conhecendo as tabelas

A Tabela 1 mostra as tabelas existentes com uma breve descrição. Posteriormente abordaremos as principais, com exemplos e na montagem da nossa ferramenta administrativa.

 

Tabela

Descrição

RDB$CHARACTER_SETS

Contém a tabela de caracteres (character sets) disponíveis no banco de dados

RDB$CHECK_CONSTRAINTS

Armazena as restrições (Constraints),  sendo elas as PKs, FKs, Checks e também informações dos campos que foram criados como NOT NULL

RDB$COLLATIONS

Contém os Collates disponíveis no banco de dados

RDB$DATABASE

Contém a definição do banco de dados

RDB$DEPENDENCIES

Lista a dependência de objetos, como tabelas (tables), visões (views), triggers e campos calculados (computed columns)

RDB$EXCEPTIONS

Contém as exceções definidas pelo usuário

RDB$FIELDS

Contém as características de um campo, os domínios (domains) relativos a cada campo criado, e ainda os que são criados manualmente

RDB$FIELD_DIMENSIONS

Contém as dimensões de campos do tipo Array

RDB$FILES

Contém a definição dos arquivos secundários ou arquivos Shadow que fazem parte do banco de dados

RDB$FILTERS

Armazena informações de filtros dos Blob

RDB$FORMATS

Possui informações dos formatos dos campos

RDB$FUNCTIONS

Armazena informações das funções definidas pelo usuário (UDFs)

RDB$FUNCTION_ARGUMENTS

Contém os argumentos de uma UDF, possui relacionamento com a RDB$FUNCTIONS

RDB$GENERATORS

Armazena os geradores de número (Generators)

RDB$INDEX_SEGMENTS

Contém os campos que fazem parte de um índice

RDB$INDICES

Contém os índices

RDB$LOG_FILES

Sem uso

RDB$PAGES

Contém as páginas alocadas na base de dados

RDB$PROCEDURES

Contém informações sobre os procedimentos (Stored Procedures)

RDB$PROCEDURE_PARAMETERS

Contém os parâmetros dos procedimentos (Stored Procedures)

RDB$REF_CONSTRAINTS

Contém informações das integridades referenciais das FKs ...

Quer ler esse conteúdo completo? Tenha acesso completo