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 |