Anterior Próximo Sumário Fale conosco! OpenBASE! o Banco de Dados inteligente!

O Esquema de um Banco OpenBASE

Através do esquema do Banco de Dados são definidos os aspectos físicos do modelo projetado, isto é, as características operacionais do Banco de dados, seus arquivos, registros, chaves, itens de dados e seus Relacionamentos. O arquivo texto que constitui o esquema deve ser escrito na Linguagem de Definição de Dados

O programa DEFINE compila o esquema do Banco de Dados, sendo que, terminada com sucesso a compilação do esquema, será criado o dicionário assim como todos os arquivos de dados e de índices que compõem o Banco de Dados.

Sintaxe geral do esquema

A seguir apresentamos a sintaxe geral de um esquema de Bancos de Dados OpenBASE que será comentada a seguir, passo a passo.

[<< <comentário> >>]

[$CONTROLE <opção>, ... , <opção>]

BANCO [<percurso>] <nome_bd> <código_de_seguranca>...

[{ARQRECUP | VARIAVEL | ARQREFAZ | DIARIO | DIAREC}]...

[{BLOQARQ | BLOQPAG | BLOQREG}]...

[ESQUEMA=[<percurso_bd_origem>]<nome_bd_origem>...

<código_de_seguranca_bd_origem>...

[<palavra_de_nível_bd_origem>] ]

[NIVEIS: <numero_nivel> <palavra_nivel>

     <numero_nivel> <palavra_nivel>]

[RELACOES:]


NOME: [<percurso>] <nome_arquivo> <tipo_arquivo>...

[ESQUEMA = [<percurso_bd_origem>] <nome_bd_origem>...

<codigo_de_seguranca_bd_origem>...

[<palavra_de_nivel_bd_origem>] ]

[REGISTRO:]

<nome_item> [{[<rep>] / (<ligações>) / (<caminho>)/(0)}]...

<tipo>:<tamanho>[,<num_decimais>] ... | |

[(<num_nivel_ler>,<num_nivel_grav>)] ...

[{POS <nome_item_rd>[+ <deslocamento>] /...

VIRTUAL (<nome_item_part>, ..., <nome_item_part>)}] ...

[UNICA]

    ...

    ...

Dentro do esquema, podem ser incluídos comentários, podendo estar em qualquer lugar e ocupar várias linhas.

Sintaxe [ << <comentário> >> ]

Onde: << Marca o inicio de um comentário e >> Marca o fim de um comentário

Exemplo

<< Isto e um comentário: primeira linha de um comentário de várias linhas >>

<< Isto e um comentário: segunda linha de um comentário de várias linhas >>

Declaração das Opções de Controle

O comando $CONTROLE do Esquema é opcional, podendo ser usado pelo projetista do Banco de Dados para especificar opções de controle válidas para todo o processamento do Esquema fonte pelo programa DEFINE. O comando $CONTROLE deve ser especificado no início do fonte do Esquema (primeiro registro do Esquema).

Sintaxe $CONTROLE <opção>, ..., <opção>

onde <opção> é uma das opções de controle relacionadas a seguir.

A lista de opções de controle é bastante extensa. Para não complicar demasiado, somente algumas opções de controles serão abordadas no momento. As demais opções serão abordadas detalhadamente mais adiante.

ARQUIVO (default)

§ Cria os arquivos de dados caso eles não existam.

ARQUIVOS = <n>

§ Informa o numero de arquivos que serão definidos na Base de Dados (arquivos de dados e arquivos de índices).

§ O valor "default" de n é de 1000 arquivos

Observação:

As opções de controle podem ser definidas com validade para todos os componentes de um Banco de Dados, sendo que para isso basta declará-las imediatamente após o comando $CONTROLE. As opções de controle podem ser definidas de modo a serem válidas apenas para determinados arquivos, sendo que para isto devem ser declaradas apenas para os arquivos onde se deseja que a opção atue. Vale lembrar que só faz sentido usar nos arquivos para desligar a opção ligada no comando CONTROLE ou para documentação.

Sintaxe

NOME: <nom_arq> <tipo> [<esquema>] [LISTA | NÃOLISTA]

CRIARQUIVO

§ Os arquivos de dados são criados. Se já existirem, esses arquivos serão reinicializados.

DICIONÁRIO (default)

§ Determina a criação do dicionário de dados após a compilação do esquema.

ERROS = <n>

§ Se esta opção for especificada, após alcançado o número de erros estipulado em <n>, será interrompida a compilação do Esquema pelo DEFINE.

§ O valor default de n e 99999

ITENS = <n>

§ Informa o número de itens de dados que serão definidos no Banco de Dados.

§ O valor "default" de n e de 1800

LIGACOES = <n>

§ Informa o número de ligações (Relacionamentos declarados) que pode conter o Banco de Dados.

§ O valor "default" de n e de 500 ligações

LIGAT

§ Permite que um arquivo tipo E (Entidade) ou R (Relacionamento) referencie um arquivo tipo T (Tabela) de outro Banco de Dados.

LISTA (default)

§ Libera a listagem do Esquema na unidade de saída especificada.

NÃOCOMPCAB

§ Indica a não compressão de cabeçalho dos arquivos de índice.

NÃOLISTA

§ Suprime a liberação da listagem do Esquema.

NOMEBANCO

§ Liga o dispositivo de segurança do OpenBASE, encarregado de evitar colisões de nomes idênticos de arquivos de Bancos de Dados diferentes, evitando assim que haja superposição de arquivos e a destruição dos mesmos.

NOMEIGUAL

§ Indica que num Banco de Dados podem existir itens com nomes iguais, desde que estejam em arquivos diferentes.

PRIMBIN

Deve-se utilizar esta opção de controle nos seguintes casos:

    § o primeiro item ter tipo I, B, D ou M (binário).

    § o arquivo não ter chaves .

    § ter a primeira chave única mais a opção de controle

    § COMPCAB (DEFAULT)

Caso não seja utilizada esta opção, possibilitando que o banco de dados seja gerado, a seguinte mensagem será enviada durante a definição do banco de dados:

"Primeiro item não pode ser binário"

Outra forma de solucionar este problema é a declaração da cláusula NAOCOMPCAB para o arquivo.

REDEFU

§ Permite que um item de tipo Universal possa ser composto de itens de tipo interno binário.

SEMARQUIVO

§ Suprime a criação de arquivos de dados.

SEMDICION

§ Suprime a criação do dicionário de dados após a compilação.

SEMINTEGR

§ A mensagem "número de ligações maior que esquema" não é mais emitida para arquivos tipo T com números de ligações maior que na entidade no esquema.

<<banco "a" definido em a.e>>

BANCO a 1 ARQRECUP

NOME: ae     e

a (0)    u03

b     u05

<<banco "b" definido em b.e>>

$CONTROLE LIGAT, SEMINTEGR

BANCO b 1 arqrecup

NOME: be             e

    bc (0)         u05

    ba (ae)     u03

Observação:

Esta opção de controle (SEMINTEGR) só deve ser utilizada quando o usuário tiver certeza de que é a solução do seu problema pois, esta opção utilizada de forma indevida, poderá acarretar sérios problemas de INTEGRIDADE REFERENCIAL no BANCO DE DADOS.

Por exemplo, um registro do arquivo "ae" pode ser excluído no banco "a" mesmo havendo registros no arquivo "be" do banco "b" ligados a "ae", o que viola as regras de integridade referencial no banco "b".

SEMTABELA

§ Suprime a impressão da tabela sumário.

SEQIDX = 1

§ Indica que os nomes dos arquivos índices serão gravados no diretório do disco com um número seqüencial após ao nome.

§ Se diferente de 1 (default), grava um número seqüencial na frente do nome do arquivo de índice.

TABELA (default)

§ Quando a compilação é completada com êxito, o DEFINE imprime uma tabela sumário a respeito dos arquivos de dados contendo:

Resumindo, o DEFINE opera com as seguintes opções de controle por "default":

Exemplo

$CONTROLE TABELA, ERROS=10

Nesse caso, as opções de controle geradas são:

Notar que a opção TABELA poderia ser omitida por ser tratar de uma opção "default".

Anterior Próximo Sumário Fale conosco! OpenBASE! o Banco de Dados inteligente!