[firebase-br] Duvida Campos Firebird

Sandro Souza escovadordebits em gmail.com
Sáb Out 10 05:09:31 -03 2009


Bom dia/tarde Alex.

Grande Alex, a grande maioria dos SGBDs (não sei se todos) possuem 
tabelas de sistemas feitas com o propósito de podermos consultá-las para 
conhecer a estrutura daquele determinado banco de dados.

Não vou detalhar tudo aqui no momento (seria muito extenso), mas vou 
comparar o pouco que sei sobre o mySQL com o pouco que sei sobre o 
Firebird para que sirva de luz (pelo menos é essa a intenção). :D

No caso do mySQL, se não me engano, existe um "schema" (esquema = base 
de dados) chamado "INFORMATION_SCHEMA", onde você pode ler os dados 
sobre todos os outros schemas, ou seja, existe uma base de dados 
principal (INFORMATION_SCHEMA) que contém as informações sobre a 
estrutura (DDL) de todas as bases de dados daquele servidor mySQL, como 
a lista de bases de dados (tabela SCHEMATA, campo SCHEMA_NAME), a lista 
de tabelas daquela base de dados (tabela TABLES, campos TABLE_SCHEMA e 
TABLE_NAME), a lista dos campos/colunas de cada tabela (tabela COLUMNS, 
campos TABLE_SCHEMA, TABLE_NAME e COLUMN_NAME) entre outras tabelas.

No caso do Firebird, não existe uma base de dados principal contendo 
essas informações. Elas estão dentro de cada base de dados, contendo 
apenas as informações sobre a estrutura daquela base de dados apenas. 
Nesse ponto, o $$$ Oracle $$$ e o M$$$ SQL Server também se assemelham 
ao Firebird.

Cada base de dados do Firebird possui tabelas especiais, chamadas de 
"tabelas de sistema", que sempre iniciam com o prefixo "RDB$" 
([R]elational [D]ata[B]ase = banco de dados relational), e da mesma 
forma que no mySQL (e todos os outros SGBDs que tenham esse tipo de 
informação) podemos ler essas tabelas e conhecer a estrutura daquela 
base de dados.

Sendo assim, no caso do Firebird, assim que você se conecta a uma base 
de dados, você pode obter as informações básicas sobre aquela base de 
dados na tabela RDB$DATABASE.

A lista de tabelas e visões fica na tabela RDB$RELATIONS (o campo 
RDB$RELATION_NAME contém o nome da tabela, o campo RDB$SYSTEM_FLAG é 
sempre 1 se aquela tabela ou visão for de sistema e o campo RDB$VIEW_BLR 
é sempre NULL se for realmente uma tabela), a lista de campos/colunas 
fica na tabela RDB$RELATION_FIELDS (o campo RDB$RELATION_NAME contém o 
nome da tabela, o campo RDB$FIELD_NAME contém o nome do campo/coluna, o 
campo RDB$FIELD_POSITION contém a posição/ordem do campo dentro da sua 
tabela (use no ORDER BY)) entre outras tabelas.

Claro que existem outras tabelas de sistema, mas aqui eu coloquei apenas 
a "ponta do iceberg". Espero que lhe ajude na sua aventura. :D

Espero ter ajudado mais que atrapalhado. :D

Alex Miranda de Oliveira escreveu:
> Quero saber se no firebird existe algum jeito de saber
> se antes deu criar uma tabela ou um campo..
>
> se tem jeito eu checar se ela existe
> e so depois criar a tabela ou o campo...
>
> porque de checar se a tabela existe eu sei que no mysql existe
>
> conto com a ajuda de vcs...
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>   




Mais detalhes sobre a lista de discussão lista