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

Estrutura dos ambientes OpenBASE

Os elementos estruturais do ambiente integrado constituído pelos produtos da família OpenBASE são agrupados conforme as seguintes categorias:

A seguir apresentamos com maiores detalhes os componentes acima referenciados.

Elementos dos Bancos de Dados OpenBASE

Um Banco de Dados OpenBASE consiste de um Dicionário de Dados e de um ou mais arquivos de dados com seus respectivos índices.

Dicionário de dados

O Dicionário de Dados é um arquivo em disco que contém a estrutura de um Banco de Dados e as informações necessárias para o gerenciamento do Banco de Dados.

É através do Dicionário que as rotinas de manipulação de dados acessam o Banco de Dados e reconhecem as estruturas de dados de cada arquivo.

Arquivos de Dados

Os arquivos de dados armazenam os registros de dados, segundo as especificações contidas no Dicionário de Dados. Arquivos de dados no OpenBASE são categorizados em função dos conjuntos de objetos básicos do MER original, ou seja, representam os conjuntos de Entidades e Relacionamentos. Assim sendo, o OpenBASE oferece dois tipos básicos de arquivos de dados:

Em condições especiais um Arquivo Entidade pode assumir a qualidade de Arquivo Tabela e um Arquivo Relacionamento a qualidade de Arquivo Consulta. O uso dos arquivos Tabela e Consulta, ocorre quando existe a necessidade de se definir em um Banco de Dados, arquivos que já foram definidos em outros Banco de Dados, ou seja, implementar interseções de Banco de Dados sem que haja redundância.

Arquivos de Índice

Além dos arquivos de dados, o OpenBASE implementa internamente arquivos de índices. Os arquivos de índices são gerados quando são atribuídas determinadas características especiais aos itens de dados, como:

No OpenBASE uma chave secundária (estrangeira ou alternativa) pode ser chave única. Não devemos confundir esta restrição de unicidade com as características da Chave Primária que é chave única em função de sua própria natureza (Atributo Determinante). Itens redefinidos ou virtuais podem constituir-se também em chaves. O OpenBASE implementa vários tipos de índices em função da unicidade ou multiplicidade das chaves:

Índices simples

Os índices simples são construídos quando ocorrem chaves primárias (únicas por definição) ou chaves secundárias únicas, onde as chaves mantém uma relação 1:1 com os registros no arquivo de dados.

Índices estruturados

Os índices estruturados são determinados pela ocorrência de chaves secundárias não únicas, onde as chaves mantém uma relação 1:N com os registros no arquivo de dados.

Para cada chave secundária não unívoca é criada, nos registros do arquivo de dados, uma área adicional denominada cabeçalho correspondente a entradas numa lista duplamente encadeada que gerencia os registros que contém as mesmas chaves.

Índices múltiplos

….

Arquivo de Recuperação

Este componente de Bancos de Dados OpenBASE é opcional. No Esquema de um Banco de Dados pode ser definido o recurso de recuperação através da opção ARQRECUP cuja finalidade é armazenar no arquivo de recuperação as imagens originais dos dados das uma transações antes de serem modificados.

Este recurso permite que uma ou mais transações possam ser desfeitas através dos procedimentos rollback ou undo). A quantidade de Arquivos de Recuperação deste tipo varia em função da estratégia de bloqueio adotada.

Arquivo Diário

Este componente de Bancos de Dados OpenBASE é opcional. No Esquema de um Banco de Dados pode ser definida a utilização de um recurso de recuperação através das opção DIARIO ou DIAREC.

Especificando a opção DIARIO, o OpenBASE armazena no arquivo diário (journal) as informações lógicas dos dados depois de serem modificados permitindo, assim, que uma ou mais transações sejam refeitas a qualquer momento, a partir de uma determinada hora ou a partir de uma determinada transação OpenBASE. Especificando a opção DIAREC, o OpenBASE armazena no arquivo diário (journal) as informações lógicas dos dados antes de serem modificados e depois de serem modificados permitindo, assim, que uma ou mais transações sejam desfeitas ou refeitas a qualquer momento, a partir de uma determinada hora ou a partir de uma determinada transação OpenBASE.

As opções DIARIO e DIAREC implicam na utilização automática da opção ARQRECUP. O arquivo diário pode ser único para todos os Bancos de Dados que utilizem estas opções ou não, dependendo das especificações no esquema. O arquivo diário é criado pelo programa BDSGBD, responsável por alguns controles do ambiente operacional dos Bancos de Dados OpenBASE.

Arquivos Complementares ao Dicionário de Dados

Após a compilação do esquema do Banco de Dados, são gerados os seguintes arquivos com o mesmo nome do Dicionário de Dados, mas com diferente extensão:

<dicion>    Nome do dicionário de Dados.

<dicion>.B    Arquivo criado, quando se utiliza bloqueio de banco.

<dicion>.C    Indica que estão sendo usados domínios para arquivos transposto.

<dicion>.G    Quando se utilizam bancos de dados distribuídos, indica o arquivo gerado na máquina cliente que informa o percurso local do dicionário de dados no servidor.

<dicion>.H    Quando se utilizam bancos de dados distribuídos, este arquivo é gerado em cada máquina que compõe o banco de dados distribuído:

<dicion>.L    Quando se utilizam bancos de dados distribuídos, este arquivo armazena a imagem anterior das transações não completadas nos arquivos que compõem o banco de dados distribuído.

<dicion>.P    Arquivo criado, quando o percurso e nome do dicionário, arquivos e itens, possuírem tamanho maior que 56 posições.

<dicion>.R    Arquivo de recuperação, gerado quando foi especificado o parâmetro <ARQRECUP> na declaração do esquema. O OpenBASE gera sempre este arquivo, anão ser que seja especificado <NAOARQRECUP>.

<dicion>.S    Arquivo que contém as informações de data-hora relativas aos arquivos replicados.

<dicion>.T    Indica que está se utilizando espelhamento de arquivos de dados.

<dicion>.Z    Arquivo com as informações necessárias para refazer as transações. <ARQREFAZ> especificado na declaração de um Banco de Dados OpenBASE.

Implementação de Bancos de Dados OpenBASE

O processo de implementação de Bancos de Dados OpenBASE inclui duas etapas:

A definição de Bancos de Dados OpenBASE inclui a elaboração de um esquema, que é a tradução do projeto lógico (MER) para a linguagem de definição de Dados do OpenBASE. O esquema descreve detalhadamente todas as informações necessárias que constituem o Dicionário de Dados do Banco de Dados, tais como:

O arquivo texto que contém o esquema é submetido ao programa "DEFINE" para processá-lo, sendo criado, efetivamente, um Banco de Dados OpenBASE com os seguintes componentes básicos:

O OpenBASE possui sua própria Linguagem de Definição de Dados (LDD) que permite construir o esquema conceitual de cada Banco de Dados, descrevendo sua estrutura completa, concentrando-se, especificamente, na arquitetura e descrição de entidades, atributos, relacionamentos, procedimentos de integridade e recuperação, estratégias de bloqueio, níveis de acesso e regras de utilização.

Existem diferentes terminologias associadas aos conceitos básicos do modelo relacional, dependendo do contexto. A Linguagem de Definição de Dados do OpenBASE, baseada no modelo conceitual Entidades - Relacionamentos (E-R), utiliza a terminologia comum de processamento de dados, ou seja, arquivo, registro e item (ou campo). O modelo relacional formal apresenta a terminologia relação, tupla e atributo ou, ainda, tabela, linha e coluna (no contexto do SQL e modelo relacional informal).

O esquema conceitual de um Banco de Dados OpenBASE reside num arquivo texto, que pode ser construído ou modificado através de um editor de texto ou utilizando os recursos gráficos e visuais do OpenBASE tais como OpenIDE, OpenDBA e Visual OPUS.

Um dos componentes da Linguagem de Definição de Dados, denominado DEFINE, compila o esquema, processa seus componentes de acordo com a sintaxe LDD do OpenBASE e constrói ou modifica os objetos do Banco de Dados, tais como dicionário de dados, tabelas de controle, arquivos de dados e arquivos de índice. Depois de concluída a compilação do esquema e a definição dos Bancos de Dados, os usuários podem efetuar as tarefas básicas de incluir, selecionar, alterar e suprimir objetos. Vejamos algumas características importantes em relação ao esquema:

Quando o processamento do esquema é completado com êxito, o DEFINE imprime um sumário contendo as seguintes informações: nome e tipos dos arquivos, quantidade de itens por arquivo, tamanho dos registros, tamanho dos cabeçalhos, numero de ligações entre as entidades, quantidade de chaves por arquivo, ... etc ...

Esquema dos Bancos de Dados OpenBASE

Neste tópico apresentamos uma referência da Linguagem de Definição de Banco de Dados do OpenBASE comentando, passo a passo, sua sintaxe e mostrando alguns exemplos.

[<< <comentário> >>]

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

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

[{ARQRECUP / DIARIO / DIAREC}]...

[{BLOQARQ / BLOQCHA / 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]

    ...

    ...

Comentários no esquema

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

[ << <comentário> >> ]

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

Exemplos:

<< 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 >>

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).

Exemplo:

$CONTROLE ARQUIVOS=200, TABELA, ERROS=10, ITENS=500

Consulte o manual de referência "DEFINE" e as atualizações apresentadas nos BITs (Boletins Informativos Técnicos) para obter as informações detalhadas sobre a sintaxe e utilização do comando $CONTROLE e suas opções.

As opções especificadas poderão ter validade para todos os componentes de um Banco de Dados, desde que declaradas imediatamente após o comando $CONTROLE. Caso você deseje que as opções especificadas se apliquem apenas a determinados arquivos, basta que as mesmas sejam declaradas nos arquivos onde se deseja que as opções atuem. Vale lembrar que só faz sentido usar as opções de controle nos arquivos apenas para desligar opções ligadas no comando $CONTROLE.

Exemplos:

<<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:

A opção de controle $SEMINTEGR do exemplo acima somente deve ser utilizada quando o usuário tiver certeza do que está fazendo. Utilizada de forma indevida, esta opção poderá acarretar sérios problemas de INTEGRIDADE no BANCO DE DADOS. Por exemplo, nas declarações do exemplo acima, um registro do arquivo "ae" poderá ser excluído no banco "a" mesmo havendo registros no arquivo "be" do banco "b" ligados a "ae", o que viola as regras básicas de integridade referencial no banco "b".

Declaração do Banco

A declaração do Banco de Dados e feita através de um conjunto de comandos especificados, de forma ordenada, dentro do esquema conforma a seguinte Sintaxe

BANCO [<percurso>] <nome_bd> <cod_seg> ... 

[{ARQRECUP / DIARIO / DIAREC / AUTOREC}] ...

[{BLOQARQ / BLOQCHA / BLOQPAG / BLOQREG}] ...

[ESQUEMA = [<percurso_orig>]<nome_orig> ...

<seg_origem> ...

[<nivel_origem>]]

[DISTRIB = [<servidor>] 

A seguir descrevemos os comandos utilizados na declaração de um Banco de Dados OpenBASE assim como as suas respectivas opções. Veja o manual específico do sistema DEFINE para maiores detalhes.

Comandos
e opções

Explicação

BANCO

Marca o início da declaração de um Dicionário de Dados OpenBASE

<percurso>

Indica o diretório completo onde será criado o Dicionário de Dados, sendo o valor default /usr/tsgbd/tsdic). No ambiente Windows o nome completo do percurso inclui a letra do Drive, que deve preceder o nome do diretório (ou pasta) onde reside (ou vai residir) o banco de dados OpenBASE. Caso não seja especificada a letra do Drive, serão aplicadas as seguintes regras:

  • Na definição de um Banco de Dados, não havendo especificação da letra do drive, nos comandos BANCO e/ou NOME:, será assumida a letra do "current drive"
  • Na abertura e utilização de um Banco de Dados é aceita a letra do Drive conforme especificado nas informações de Configuração do Registry
  • Pode ser utilizado o utilitário Wincnfg.exe (versão Windows do utilitário bdcnfg) para consultar ou modificar o percurso dos Bancos de Dados OpenBASE
  • Caso não haja especificação da letra do Drive dentro das informações do Registry, é assumido o Drive C como Drive default

Se um banco for migrado de Drive deve ser executado o comando define para inserir a informação do novo Drive no dicionário

<nome_bd>

especifica o nome do Dicionário de Dados: consiste de uma cadeia com até 12 caracteres, com as seguintes restrições:

  • pode conter letras, números, ponto (.) e sublinhado (_)
  • tem que iniciar por letra
  • não pode ter branco
  • deve ser único no diretório

<cod_Seg>

especifica o código de segurança do Banco de Dados que consiste de um número inteiro entre 1 e 4.294.836.225 (inclusive). Este número é o escolhido pelo projetista do Banco de Dados como uma senha

ARQRECUP

Determina que seja criado um ou mais arquivos, destinados a armazenar os dados das transações antes deles serem modificados, permitindo assim que uma ou mais transações não completadas possam ser desfeitas a qualquer momento (rollback / undo)

DIÁRIO

Determina que seja utilizado o arquivo DIÁRIO para armazenar todos os dados das transações depois deles serem modificados, permitindo assim que uma ou mais transações completadas possam ser desfeitas ou refeitas, a qualquer momento, a partir de uma determinada data/hora ou a partir de uma determinada transação identificada pelo seu numero. Esta opção implica na utilização automática da opção ARQRECUP

DIAREC

Determina que seja utilizado o arquivo DIÁRIO (criado pelo programa BDSGBD) para armazenar todos os dados das transações antes deles serem modificados e depois deles serem modificados.

AUTOREC

A opção AUTOREC indica que ao ser aberto um banco, se o arquivo de recuperação contiver uma transação não completada, a recuperação será feita automaticamente sem solicitar a execução do utilitário BDRECU, desde que não exista nenhum outro processo ativo utilizando o banco e que o bloqueio seja do tipo banco

BLOQARQ

Determina, para todos os processos de atualização do Banco de Dados que a estratégia de bloqueio será baseada em bloqueio de Arquivos

BLOQCHA

Determina para todos os processos de atualização do Banco de Dados que a estratégia de bloqueio será baseada em bloqueio de chaves

BLOQPAG

Estabelece para todos os processos de atualização do Banco de Dados que a estratégia de bloqueio será baseada em bloqueio de páginas

BLOQREG

Determina para todos os processos de atualização do Banco de Dados que a estratégia de bloqueio será baseada em bloqueio de registros

ESQUEMA =

Indica que Dicionário de Dados referenciado em <nome.bd> conterá a estrutura de um subesquema, ou seja, a estrutura parcial de um Banco de Dados já existente. Esta cláusula determina que na compilação do subesquema, seja aberto o Banco de Dados que dará origem ao subesquema (BDO), com a finalidade de consistir as estruturas definidas em ambos. Assim sendo:

  • Todos os arquivos declarados no subesquema devem existir no BDO
  • Todos os itens declarados em um arquivo no subesquema devem existir no arquivo que esta sendo referenciado no BDO e em conseqüência os tipos e tamanhos dos itens devem ser idênticos. A definição de um arquivo no subesquema deve contemplar todos os itens chaves do arquivo que esta sendo referenciado no BDO, na ordem em que foram declarados no BDO

No caso de subesquema não é necessário declarar as cláusulas de controle (ARQRECUP, DIÁRIO, BLOQARQ / BLOQCHA / BLOQPAG / BLOQREG), em função de todos os controle estarem subordinados ao Banco de Dados ao qual o Subesquema se referencia

<percurso_orig>

Percurso onde se encontra o Dicionário de Dados do Banco de Dados que será referenciado no Subesquema

<nome_orig>

Nome do Dicionário de Dados do Banco de Dados que será referenciado no Subesquema

<seg_origem>

Código de segurança do Banco de Dados que será referenciado no Subesquema

<nivel_origem>

Palavra de nível do Banco de Dados que será referenciado no Subesquema

DISTRIB=

A opção DISTRIB indica que o banco de dados é distribuído. O nome do Host onde residem o Banco de Dados e seu servidor mestre está especificado pelo operando <servidor>

Exemplos:

BANCO nota_fiscl 33 AQRRECUP DIÁRIO BLOQCHA

BANCO /usr/apl/bds/folha_pg 33 ESQUEMA=bd_rh 21 gerent 

banco teste 1

Em caso de Bancos Distribuídos:

banco abc 1 distrib=TS1

nome: arq1 e servidor=TS2

        c1(1) u03

nome: arq2 r servidor=TS3

c2(arq1) u03

Declaração dos Níveis de Acesso

Em um Banco de Dados OpenBASE são estabelecidos níveis de acesso às informações para os diversos perfis de usuários. Os níveis de acesso especificados podem ser proporcionais aos perfis funcionais dos usuários que manipulam as informações dentro de uma organização qualquer.

Sintaxe

NÍVEIS: <numero_nivel> <palavra_nivel>

<numero_nivel> <palavra_nivel>]

O comando NIVEIS define os níveis de segurança em termos de privacidade. O OpenBASE possibilita a atribuição de níveis de leitura e gravação, para cada item de dados. Cada nível de privacidade é definido associando-se um número de nível com sua respectiva palavra de nível. Os números de níveis são representados por inteiros de 1 a 15 e devem ser especificados em ordem crescente na codificação do Esquema do Banco de Dados. As palavras de níveis são constituídas por ate 6 caracteres, sendo o primeiro caractere obrigatoriamente uma letra. A declaração dos níveis é opcional. Caso seja declarado algum nível, e necessário declarar também o nível máximo, ou seja, associar uma palavra de nível ao nível 15.

Exemplo:

NIVEL: 01 todos

05 superv

10 gerent

12 diret

15 dba

Declaração dos Arquivos de Dados

Após declarar o Banco e seus atributos, dentro do esquema, pode ser feita a declaração dos arquivos, tabelas ou relações de cada Banco de Dados conforme a seguinte Sintaxe

[RELACOES:]


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

[ESQUEMA = [<percurso_orig>] <nome_orig>...

<seg_origem>...

[<nivel_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]

    ...

    ...

A seguir descrevemos os comandos utilizados na declaração dos arquivos de dados em Bancos de Dados OpenBASE assim como as suas respectivas opções. Veja o manual específico do sistema DEFINE para maiores detalhes.

Comandos
e opções

Explicação

RELAÇÕES:

Para documentar o início das declarações dos arquivos de dados de um Banco, utiliza-se, opcionalmente, a declaração RELAÇÕES:

NOME:

Marca o início da declaração de cada arquivo de dados

<percurso>

Especifica o percurso onde será criado o arquivo de dados. Em caso de omissão, será assumido o mesmo percurso utilizado para o Dicionário de Dados

<nome_arquivo>

Especifica o nome do arquivo de dados e consiste de uma cadeia com até 10 caracteres com as seguintes restrições:

  • pode conter letras, números, ponto (.) e sublinhado (_)
  • tem que iniciar por letra
  • não pode ter branco
  • deve ser único no diretório

No MS-DOS, <nome_arquivo> não pode ultrapassar 8 caracteres

<tipo_arquivo>

Especifica o tipo do arquivo de dados, designado por uma letra.

Tipos Básicos: E e R

    • E —> Entidade
    • R —> Relacionamento

Referências Externas aos tipos básicos: T e C

    • T —> Tabela
    • C —> Consulta

Tipos documentacionais: A, L e F

    • A —> Entidade Associativa
    • L —> Entidade de Ligação
    • F —> Entidade Fraca

Observações

Arquivos do tipo Tabela se referem a arquivos do tipo Entidade pertencentes a outros Banco de Dados e arquivos do tipo Consulta, se referem a arquivos Relacionamentos pertencentes a outros Banco de Dados.

Arquivos tipo T ou C, também podem participar de Subesquemas.

A definição de um arquivo tipo T ou C deve contemplar todos os itens chaves do arquivo que esta sendo referenciado (E ou R).

Os tipos dos arquivos documentacionais são convertidos pelo DEFINE para os tipos básicos. Assim sendo, Entidade Associativa ou Entidade de Ligação e convertida para Entidade, assim como, Entidade Fraca e convertida para Relacionamento

ESQUEMA =

Esta cláusula só será utilizada no caso de interseção de Banco de Dados, ou seja, se o tipo do arquivo for T (tabela) ou C (consulta).

Em função de um arquivo tipo T ou C se referir a um arquivo de um outro Banco de Dados, esta clausula determina que na compilação do Esquema ou Subesquema, seja aberto o Banco de Dados, ao qual o arquivo tipo T ou C se refere (BDR), com a finalidade de consistir as estruturas de ambos os arquivos, ou seja, o que se refere com o que está sendo referenciado.

Assim sendo, todos os itens declarados no arquivo tipo T ou C devem existir no arquivo tipo E ou R que está sendo referenciado no BDR e em conseqüência os tipos e tamanhos dos itens devem ser idênticos

<percurso_orig>

Percurso onde se encontra o Dicionário de Dados do Banco de Dados ao qual o arquivo pertence efetivamente

<nome_orig>

Nome do Dicionário de Dados do Banco de Dados ao qual o arquivo pertence efetivamente

<seg_origem>

Código de segurança do Banco de Dados ao qual o arquivo pertence efetivamente

<nivel_origem>

Palavra de nível do Banco de Dados ao qual o arquivo pertence efetivamente

Exemplos:

<< BANCO exemplo1 33 ** Banco hipotético ** >>

NOME: arq_dpto E << Entidade Departamentos >>

NOME: arq_func A << Entidade Funcionários>>

<< BANCO exemplo2 44 ** Banco hipotético ** >>

NOME: arq_func T ESQUEMA=exemplo1 33

NOME: arq_proj E << Entidade Projetos >>

NOME: arq_part R << Relacionamento Participação >>

Declaração dos Itens de Dados

A declaração dos itens de dados e feita logo a seguir a declaração do arquivo de dados cujos itens de dados fazem parte do seu registro. Veja a sintaxe do comando:

[REGISTRO:]

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

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

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

... [{POS <nome_item_rd>[+<deslocamen>] |

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

... [UNICA]

A seguir descrevemos os comandos utilizados na declaração de um Banco de Dados OpenBASE assim como as suas respectivas opções. Veja o manual específico do sistema DEFINE para maiores detalhes.

Comandos
e opções

Explicação

REGISTRO:

Opcionalmente, para documentar o inicio das declarações dos itens de dados que compõem o registro de um arquivo de dados, utiliza-se a palavra REGISTRO seguida de dois pontos (:)

<nome_item>

<nome_item> especifica o nome dos itens que compõem cada registro de um arquivo de dados o qual compõe-se de uma cadeia com até 63 caracteres com as seguintes restrições:

  • pode conter letras, números, ponto (.) e sublinhado (_)
  • tem que iniciar por letra
  • não pode ter branco
  • deve ser único no diretório

[<rep>]

É o fator de repetição de um item. A LDBD não permite que sejam implementados itens multivalorados. Para tanto, o usuário pode definir que um item seja repetido tantas vezes quanto for determinado em <rep>, que consiste de um valor numérico inteiro contido entre colchetes.

Este recurso quando utilizado faz com que o DEFINE associe aos nomes dos itens repetitivos, um número seqüencial que varia de 1 a <rep>. Assim sendo, se o nome do item for telefone e o fator de repetição for 3, três itens serão criados com os respectivos nomes: telefone1, telefone2 e telefone3.

Observações

  • Um item repetitivo não pode ser chave e nem ser redefinido.
  • Tratar itens repetitivos como sendo itens comuns, ou seja, não confundir um item repetitivo com vetor

(<ligações>)

Especifica o número de ligações que a Entidade mantém com outras Entidades, ou seja, e o número de vezes em que a chave primária da Entidade é referenciada como chave estrangeira em outros arquivos do Banco de Dados. Assim sendo, <ligações> é um número que pode variar de 0 a n.

Este argumento deve ser declarado somente em arquivos tipo Entidade e ao lado do item que corresponde ao Atributo determinante da Entidade. Desta forma, o item que associa o número de ligações passa a ser a chave primária do arquivo Entidade.

Observações

  • número de ligações tem que ser declarado entre parênteses, pois é esta notação sintática "()" que especifica para o DEFINE a declaração de um item chave porém esta notação "()", não determina a categoria da chave (primária ou secundária).
  • Para que o DEFINE possa reconhecer que a chave declarada corresponde à chave primaria do Arquivo tipo Entidade, a mesma tem que ser a primeira chave declarada no registro. Caso contrário, a chave não será reconhecida como primária e sim como secundária.
  • Se o número de ligações não corresponder exatamente com o número de vezes que o Atributo Determinante é referenciado como chave estrangeira, o DEFINE acusa erro na compilação do Esquema. Assim sendo, o número de ligações tem que corresponder à quantidade de caminhos que fazem referencia a Entidade.

Numa relação entidade (tipo E ou T) o número de ligações pode ser especificado como *, o que será automaticamente substituído pelo número de referências nos arquivos posteriormente definidos, por exemplo:

nome: PESSOA e

NOMEP (*)    u30 << (*) será substituído por (1) >>

IDADE    n2

nome: FILHOS r

NOMEP1 (PESSOA)    U30

IDADEF        n2

(<caminho>)

É o nome do arquivo Entidade com o qual o item de dados ira fazer associação (procedência). Indica que o item e uma chave estrangeira (Atributo Associativo / Item Associativo). Este argumento define de forma declarada o Relacionamento entre as Entidades e assim sendo, determina para o OpenBASE a obrigatoriedade do controle da Integridade Referencial.

Observações

  • Pode ser declarado em arquivo tipo Entidade porém não pode ser o primeiro item do arquivo Entidade.
  • Um arquivo Entidade ou Relacionamento pode ter em seu registro mais de uma chave estrangeira. O limite de chaves por registro e de até 127.
  • Chave estrangeira está na categoria de chave secundária

(0)

Indica que o item é uma chave alternativa, porém se esta chave for a primeira de um arquivo tipo Entidade, define que a Entidade não possui ligações mas assume o papel de chave primária. Caso contrário corresponde a uma chave alternativa que pode ser declarada tanto em arquivos tipo Entidade quanto em arquivos tipo relacionamento.

Observações

  • Todos os Itens podem ser chaves, salvo os Itens repetitivos.
  • Um arquivo tipo Entidade ou Relacionamento pode ter em seu registro mais de uma chave alternativa.
  • limite de chaves por registro é de até 127
  • Chave alternativa está na categoria de chave secundária

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

Define o tipo e o tamanho do Item, assim como o número de casas decimais no caso do item suportar valores numéricos.

Tipo do Item

O tipo do item a ser declarado em <tipo> poderá ser especificado como:

U        Universal

N        Numérico sem sinal

S        Numérico com sinal

P        Numérico compactado sem sinal

C        Numérico compactado com sinal

I        Numérico Binário (positivo)

B        Numérico Binário (positivo/negativo)

F        Numérico Ponto Flutuante (positivo ou negativo)

D,D2,D4    Data

L        Lógico

M         Multimídia (Objeto Binário Longo)

No OpenBASE um item de dado do tipo D2, só aceita datas compreendidas entre 01/01/1901 e 04/06/2080, inclusive, na conversão de uma variável de memória para o item D2 do banco. Caso a data esteja fora deste intervalo, é emitida a mensagem "OPUS(varite) => Estouro na conversão numérica". Para datas com tipo D4 esta conversão pode ser feita para datas dentro ou fora do intervalo mencionado anteriormente.

O item D4 indica uma data no formato aaaa/mm/dd onde aaaa ocupa 2 bytes, mm 1 byte e dd 1 byte. O dia 1 é considerado 01/01/0001. A data 31/12/1900 ainda é considerada como data nula para se manter compatibilidade com o tipo D2.

Para sua utilização na OPUS em conjunto com as datas tipo D2 foram feitas as seguintes alterações:

<tamanho>

O tamanho do item a ser declarado em <tamanho>, consiste de um valor numérico que varia em função do tipo do item. Este tamanho nem sempre representa o número de bytes para armazenar o conteúdo do item

<num_decimais>

Se o item suportar valores numéricos é possuir casas decimais, o número de casas decimais é informado em <num_decimais>, que consiste de um valor numérico entre 1 a 18. Neste caso, o separador entre o tamanho do item e as casas decimais é obrigatoriamente a vírgula (,). As casas decimais são virtuais, assim sendo, internamente, o valor contido em <tamanho>, corresponde ao conteúdo do item com suas respectivas casas decimais: internamente não apresenta separador entre a parte inteira e as casas decimais

(<num_nivel_ler>,
<num_nivel_grav>)

Especifica um par de números inteiros que declaram o nível de privacidade para leitura e gravação do    item de dados. <num_nivel_ler> é o número do nível de leitura que consiste de um número de nível declarado anteriormente em nível, tem que ser menor ou igual ao nível de gravação. <num_nivel_grav> é o número do nível de gravação que consiste de um número de nível declarado anteriormente em nível, tem que ser maior ou igual ao nível de leitura.

Os níveis de leitura e gravação estão associados às suas respectivas palavras de níveis e funcionam da maneira seguinte: Na abertura do Banco de Dados, o usuário declara a sua palavra de nível e o OpenBASE converte esta palavra para o número do nível associado à palavra (Numero de Nível do usuário - NNU). Desse modo, permite consistir se o usuário tem ou não autorização para ler ou gravar (atualizar) o item. Assim sendo, se NNU for maior ou igual ao nível de leitura do item, o usuário pode ler o item. Se NNU for maior ou igual ao nível de gravação, o usuário pode gravar o item. Caso o usuário, num procedimento de leitura não seja autorizado a acessar o item, o valor de retorno do item é mascarado em função do seu tipo

POS <nome_item_rd>
[ + <deslocamen>]

Define que o item é uma redefinição de um outro item de dados, permitindo assim que um item seja decomposto em subitens ou que um item seja composto por itens contíguos.

A implementação da redefinição de um item baseia-se na superposição de itens na mesma área de registro. Assim sendo, um item que redefine um outro, não ocupa espaço adicional no registro, em função de utilizar a mesma área de registro ocupada por um ou mais itens já declarados.

<nome_item_rd> É o nome do item a ser redefinido que consiste do nome de um item já existente (não pode ser o nome de um item repetitivo).

<deslocamento> É o deslocamento em bytes, em relação à posição inicial do item a ser definido que consiste de um número inteiro.

Se <nome_item> iniciar na mesma posição de registro, ocupada por <nome_item_rd>, não é necessário informar o <deslocamento>

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

Define que o item é um item virtual.

A implementação de itens virtuais, baseia-se na montagem em memória da composição de itens. Assim sendo, itens virtuais não ocupam espaço adicional no registro.

<nome_item_part>, ..., <nome_item_part>) É a lista dos nomes dos itens que compõem o item virtual.

Observações sobre itens virtuais:

  • Itens virtuais são os últimos itens a serem declarados no arquivo do qual fazem parte.
  • Os itens que participam da lista, podem ser declarados na lista em qualquer ordem.
  • tamanho do item virtual, corresponde à soma dos tamanhos dos itens que o compõem.
  • Se os itens da lista são do tipo N, o tipo do item virtual pode ser N ou U. Se os itens da lista são do tipo N e U, obrigatoriamente o tipo do item virtual tem que ser U. Se na lista de itens houver item do tipo interno binário, obrigatoriamente o item virtual tem que ser do tipo U e o controle REDEFU têm que ser declarado.
  • Itens virtuais não podem ser atualizados

ÚNICA

Estabelece restrição de unicidade para chave secundária (chave única).

Não pode ser declarado em chaves primárias devido ao fato deste tipo de chave ser única por definição

Observações sobre o <tipo> de itens

A função OPUS "DTOC", para itens do tipo D2, retorna uma cadeia de caracteres no formato dd/mm/aa se foi especificado set century off e 1901 <= ano <= 1999. Caso contrário, a função retorna uma cadeia no formato dd/mm/aaaa. Para itens do tipo D4, retorna uma cadeia no formato dd/mm/aaaa, mesmo para datas menores do que 1901 e datas maiores do que 1999. A função "CTOD" considera uma cadeia no formato dd/mm/aa como dd/mm/19aa.

Quanto à conversão de variáveis para itens do banco, observe o seguinte:

Se tipo D2, 01/01/1901 <= data <= 04/06/2080, caso contrário é emitida a mensagem OPUS (varite) => Estouro na conversão numérica.

Quanto à conversão do tipo do item D2 para D4 observe o seguinte:

Os itens tipo D2 de um banco de dados podem ser descarregados e carregados no mesmo banco de dados com os itens alterados de tipo D2 para tipo D4.

Observações sobre o <tamanho> dos itens

Para melhor compreensão do <tamanho> do item, consulte a Tabela a seguir.

Tipo
item

Tamanho
a declarar

Tamanho
em Bytes(tb)

Valores Suportados

Tipo Interno

U

1 a 2048

1 a 2048

Cadeia de caracteres

Cadeia

N

1 a 18

1 a 18

Numérico de 1 a 18 dígitos

Cadeia

S

1 a 18

1 a 18

Numérico de 1 a 18 dígitos mais sinal

Cadeia

P

2 a 18 (par)

1 a 9

Numérico de 1 a 18 dígitos

Compactado

C

1 a 17 (impar)

1 a 9

Numérico de 1 a 18 dígitos mais sinal

Compactado

I

2 ou 4

2 ou 4

Numérico entre 0 e 2

Binário

F

4 a 8

4 a 8

Numérico de n dígitos.

Se tb=4 então n=7 senão n=15.

Ponto flutuante

B

1 ou 7

1 ou 7

Numérico entre –2(8*tb-1) e 2(8*tb-1)-1.

Binário

D

2

2

Data no formato dd/mm/aa entre
00/00/00 e 31/12/99.

Binário

D2

Data no formato dd/mm/aaaa entre
01/01/1901 e 04/06/2080.

Binário

D4

Binário

L

1

1

0 -> falso - 1 -> verdadeiro

Binário

M

4

1 a 4 Gb

String de Bits

Binário

O valor de retorno do item é mascarado em função do seu tipo, conforme tabela abaixo.

Tipo dos itens

Máscaras

U

Espaços em branco

N,S,P,C,I,B.F

Cadeia de dígitos preenchida com o número nove (999999999)

D,D2,D4

Data em branco ("//")

L

Falso (zero)

Exemplos:

NOME: arq_dpto E << Entidade Departamento >>

<< Declaração dos itens da Entidade Departamento >>

sigl_dpto (1)    u2

nome_dpto     u30

NOME: arq_func E << Entidade Funcionário >>

<< Declaração dos itens da Entidade Funcionários >>

matr_func (1)     u5

nome_func    u30

data_nasc     u6

dian     u2 POS data_nasc

mesn     u2 POS data_nasc + 2 <<ou POS dian + 2 >>

anon     u2 POS data_nasc + 4 <<ou POS mesn +2 >>

sexo_func(0)     u1

salario [12]     B4,2 (5,10)

cpf_func (0)     u11 UNICA

chave_aux(0)     u4 VIRTUAL (anon, mesn)

NOME: arq_lota R << Relacionamento Lotação >>

<< Declaração dos itens do Relacionamento Lotação >>

dpto_lota (arq_dpto)     u2

func_lota (arq_func)     u5

data_lota         d2

Processamento do esquema

O comando DEFINE aciona o compilador de Esquemas e Subesquemas que darão origem efetivamente à criação do Banco de Dados conforme a seguinte Sintaxe

DEFINE [-<opcao>] <nome_Esquema>, onde:

A seguir descrevemos o comando DEFINE assim como as suas respectivas opções. Veja o manual específico do sistema DEFINE para maiores detalhes.

parâmetros

Explicação do parâmetro

-a <nome arquivo>

transfere a listagem do Esquema para o arquivo de <nome arquivo>

-c <nome arquivo>

informa o nome de um arquivo que contém os nomes dos arquivos do Banco de Dados que deverão ser recriados, mesmo se existirem

-e

permite a execução do "DEFINE" em background

-f

suprime a listagem do Esquema

-p <nome do programa>

O "DEFINE" cria um "pipe" para o programa <nome do programa>

-I

direciona a listagem do Esquema para o SPOOL

<nome_Esquema>

é o nome do arquivo fonte que contém o Esquema ou Subesquema a ser compilado

-s

Indica que não será perguntado ao usuário, se deseja recriar os arquivos do banco de dados. Substitui a opção $controle SEMARQUIVO, utilizada no esquema do banco de dados

Administração dos ambientes OpenBASE

Os ambientes OpenBASE oferecem uma grande variedade de facilidades para auxiliar os usuários na execução das tarefas administrativas inerentes aos Bancos de Dados.

Esse conjunto integrado de recursos OpenBASE recebe o nome de Sistema de Utilitários de Bancos de Dados (SUBD) apresentando programas voltados para a manutenção e administração de Banco de Dados, permitindo, por exemplo:

Este capítulo focaliza os utilitários, principalmente do ponto de vista das plataformas UNIX, cujos nomes são precedidos do prefixo BD (Banco de Dados). Na versão Windows, os nomes dos utilitários OpenBASE são prefixados por WIN em vez de BD.

Não é recomendável que os usuários acessem Bancos de Dados OpenBASE utilizando outros meios diferentes das interfaces e utilitários oferecidos pelo OpenBASE, pois estes garantem a consistência e integridade das informações. As maneiras de invocar os utilitários OpenBASE são:

A seguir apresentamos uma lista dos utilitários OpenBASE e suas respectivas funções globais.

Para obter maiores detalhes consulte os manuais específicos na .

Utilitário    Descrição global

BDADIC    Adiciona registros a arquivos de Bancos de Dados.

BDCDBF    Converte arquivos dbf para a estrutura dos Bancos OpenBASE.

BDCNFG    Muda configuração de ambiente.

BDDELE    Elimina Bancos de Dados OpenBASE.

BDDESC    Descarrega Banco de Dados OpenBASE.

BDESPA    Lista relatórios estatísticos dos arquivos de Bancos de Dados.

BDINDC    Otimiza a criação de arquivos de índice.

BDINDV    Cria uma chave virtual e seu arquivo de índice.

BDLICE    Lista tabela de usuários e bloqueios.

BDCODI    Lista informações sobre a cópia OpenBASE instalada

BDLIDI        Lista transações do diário.

BDMENS    Lista mensagens de erro do ambiente OpenBASE.

BDOTIM    Otimiza arquivos de índice.

BDRECA    Recarrega Bancos de Dados.

BDRECU    Recupera Bancos de Dados.

BDREDI    Refaz ou desfaz transações em Banco de Dados.

BDRMCE    Elimina pontos de controle (semáforos) em situações de contingência.

BDSERV    Servidor de Bancos de Dados OpenBASE.

BDSGBD    Gerenciador de bloqueios de Bancos de Dados OpenBASE.

BDTETE    Lista tabela TERMINFO.

BDVERI    Verifica integridade dos Banco de Dados.

BDVESQ    Recupera o esquema de um Banco de Dados a partir do seu dicionário.

BDVESCLI    Recupera (recria) o esquema de um Banco de Dados Distribuído.

BDSREP    Implementa servidores de replicação de Bancos de Dados OpenBASE.

BDCREP    Implementa clientes de replicação de Bancos de Dados OpenBASE.

BDSQL OPENBASE    Cria esquema SQL a partir do dicionário de Bancos de Dados OpenBase.

OPENB        Apresenta em menus os serviços do ambiente OpenBASE.

Para obter maiores detalhes destes utilitários assim como as informações referentes a todos os utilitários consulte os manuais específicos ("Utilitários do OpenBASE") na página internet do OpenBASE.

Sub-rotinas OpenBASE

Neste capítulo será apresentada a relação das sub-rotinas básicas dos produtos OpenBASE que permitem acessar Bancos de dados OpenBASE a partir de quaisquer linguagens de alto nível. A seguir apresentamos uma lista contendo algumas dessas sub-rotinas e a descrição global:

Sub-routina        Descrição global

BDABRE        abre Banco de Dados

BDACHC        acessa primeiro registro para leitura em cadeia

BDACHP        acessa primeiro registro para leitura por prefixo

BDALTE        altera itens não chave

BDBLOQ        bloqueia banco de dados

BDDESB        desbloqueia banco de dados

BDDESF        desfaz transação corrente

BDESCH        seleciona chave de ordem para leitura seqüencial

BDESVA        esvazia arquivo

BDEXCL        remove registros de arquivos

BDFECH        fecha arquivo do banco de dados

BDINCL        inclui registros

BDINCA        inclui registros no meio de uma cadeia

BDJUNT        faz junção no banco de dados

BDPEGC        faz leitura em cadeia

BDPEGD        faz leitura direta

BDPEGI        faz leitura seqüencial invertida

BDPEGM        faz leitura por chave

BDPEGP        faz leitura por prefixo

BDPEGS        faz leitura seqüencial

BDPEGT        faz leitura invertida em cadeia

BDPEGV        faz leitura invertida por prefixo

BDPOSI        posiciona em registro para leitura seqüencial

BDREST        restaura a tabela de execução de um arquivo

BDSALV        salva tabela de execução de um arquivo

BDTROC        altera valores de itens que não são chaves primárias

Para obter maiores detalhes destas rotinas assim como as informações referentes a todos os utilitários consulte os manuais específicos ("Utilitários do OpenBASE") na página internet do OpenBASE.

Consulta e Atualização dos Bancos de Dados

O ambiente OpenBASE disponibiliza um sistema Interativo de Consulta e Atualização de Bancos de Dados chamado GERAL (Gerador de Aplicações on-line), o qual oferece uma interface interativa e amigável para consultas e atualizações em Bancos de Dados. Adicionalmente, o sistema GERAL oferece os seguintes recursos: apresentação de menus e opções, gerador de relatórios, execução de consultas e atualizações em modo interativo e batch.

Em resumo, o sistema GERAL oferece os seguintes recursos:

Para invocar o GERAL, via terminal, digita-se:

Geral [<arquivo>]

O GERAL responde com:

COMANDO ?

Neste momento, o usuário pode entrar com os comandos. As entradas para o GERAL podem conter qualquer numero de linhas, até 700 caracteres. Em caso de necessidade, o GERAL abre um prompt com o sinal de interrogação na primeira coluna da linha seguinte ao comando digitado. Todas as entradas de comandos ou dados para o GERAL, são terminados com a tecla {ENTER}.

O GERAL permite que o usuário trabalhe na modalidade Batch, ou seja, os comandos para o GERAL podem ser especificados dentro de um arquivo fonte, criado com um editor de textos.

Neste caso, o GERAL será invocado com o comando:

GERAL <nome-do-arquivo> 

Onde: <nome-do-arquivo> é o nome do arquivo com os comandos do GERAL.

Por exemplo:

GERAL commands.p 

O arquivo de comandos do GERAL deve conter apenas comandos válidos, um em cada linha. Caso contrário, será enviada mensagem de erro e a execução será cancelada.

A seguir apresentamos uma lista dos comandos do sistema GERAL com uma descrição geral:

comando    descrição global

ACEITE        Invoca processador de telas ou retornar para a tela que invocou um processo

ALTERE    Substituir valores dos itens de um arquivo.

BANCO        Informar ao GERAL o Banco de Dados que será utilizado.

CALCULE    Calcular novos valores para itens numéricos no arquivo de seleção.

DESLIGUE    Desligar opções do GERAL.

ENTRE        Atribuir valor digitado pelo usuário a uma variável de memória.

EXCLUA    Remover registros de um arquivo do banco de dados.

EXECUTE    Executar um programa externo ao GERAL.

EXIBA        Exibir texto no dispositivo de saída.

EXPLIQUE    Exibir explicações sobre os comandos do GERAL.

GERCLI        Conectar um servidor de Banco de Dados.

IMPRIMA    Imprimir relatório formatado no dispositivo lógico associado.

INCLUA        Acrescentar registros em um arquivo do banco de dados.

INFORME    Exibir a estrutura do banco de dados utilizado.

LIGUE        Ligar opções do GERAL.

LISTE        Listar registros selecionados.

PROCEDA    Executar arquivos com comandos do GERAL.

SAIA        Terminar a execução do GERAL, retornando o controle ao sistema operacional.

SELECAO    Armazenar o endereço dos registros selecionados em arquivo para uso posterior.

SELECIONE    Selecionar registros de um arquivo do banco de dados.

UNIDADE    Trocar o dispositivo lógico para exibição das informações.

Para obter maiores detalhes consulte os manuais específicos na página internet do OpenBASE.

Interfaces para ferramentas RAD

O OpenBASE disponibiliza as funções e rotinas de manipulação de Bancos de Dos para serem utilizadas pelas linguagens Visuais Basic, Delphi ou outras ferramentas RAD, podendo, assim, ser elaborados aplicativos para acessar Bases de Dados OpenBASE utilizando variadas ferramentas de desenvolvimento.

O acesso aos Bancos de Dados OpenBASE pode ser feito através de bibliotecas dinâmicas (DLLs do OpenBASE), através dos recursos ODBC (Driver ODBC do OpenBASE) e utilizando interfaces COM e DCOM para acessar objetos e métodos OpenBASE. Os componentes OpenBASE podem ser disponibilizados para aplicativos desenvolvidos em diversos ambientes de programação, por exemplo:

As ferramentas RAD (Rapid Application Development) possuem, geralmente, as seguintes características:

As funções e objetos OpenBASE estão agrupados em duas bibliotecas de ligação dinâmica (DLLs), conforme a seguir:

ROTWIN32.DL

Biblioteca principal com as rotinas básicas de acesso ao Banco de Dados OpenBASE.

CLIWIN32.DLL

Similar a biblioteca ROTWIN32.DLL, porém as rotinas são voltadas para aplicações cliente dentro de uma arquitetura CLIENTE/ SERVIDOR em redes TCP-IP.

O módulo CLIWIN32.DLL inclui as funções para arquitetura cliente/servidor e permite desenvolver aplicativos cliente cujos servidores podem residir em qualquer outra plataforma, local ou remota, conforme veremos nos exemplos apresentados. As funções (ou rotinas) e métodos incluídos nessas bibliotecas dinâmicas permitem acessar e controlar Bancos de Dados OpenBase. Podemos agrupar todas as funções disponíveis em categorias, conforme a seguir:

Categoria das funções

Nome das funções

Leitura Seqüencial

ReiniciaCadeia

LeProximo[Registro]Sequencial

Le[Registro]AnteriorSequencial

EscolheChave

ObtemRegistrosNoArquivo

Leitura por Cadeia

IniciaCadeia

LeProximo[Registro]Cadeia

Le[Registro]AnteriorCadeia

PosicionaNoRegistroPorChave

ObtemRegistrosNaCadeia

Leitura por Prefixo

IniciaPorPrefixo

LeProximo[Registro]PorPrefixo

Le[Registro]AnteriorPorPrefixo

Leitura por Chave Primária

Le[Registro]PorChavePrimaria

Leitura por Endereço

Le[Registro]PorEndereco

PosicionaNoRegistro

ObtemEnderecoAtual

Inclusão, Exclusão e Alteração de Registro

ExcluiRegistro

ExcluiRegistroCascata

ExcluiRegistroPoeNulo

Inclui[Todo]Registro

Inclui[Todo]RegistroNaCadeia

Altera[Todo]Registro

Altera[Todo]RegistroCascata

Altera[Todo]RegistroPoeNulo

Conexão e Controle de Bancos

AbreBancoDeDados

FechaBancoDeDados

JuntaBancoDeDados

IniciaServidor

FinalizaServidor

Manipulação de Memos

PegaGravaItemMemo

LePoeItemMemo

ExcluiItemMemo

ObtemPercursoItemMemo

ObtemTamanhoMemo

Itens especiais

PoeItem

PegaItem

Rotinas Genéricas

Bloqueia

Desbloqueia

SalvaTabelaExecucao

RestauraTabelaExecucao

IniciaTransacao

FinalizaTransacao

DesfazTransacao

LigaOpcao

DesligaOpcao

EsvaziaArquivo

Crypt

Rotinas para Obter Informações

ObtemItensDoArquivo

ObtemInfoSobreItem

ObtemQtdChaves

ObtemChaves

ObtemNumeroDoItem

ObtemInfoSobreArquivo

ObtemQtdLigacoes

ObtemLigacoes

ObtemNumeroDoArquivo

ObtemQtdDeJuncoes

ObtemJuncoes

ObtemQtdVirtuais

ObtemVirtuais

ObtemTipoDaChave

ObtemQtdItensBasicos

ObtemItensBasicos

ObtemQtdRedefinicoes

ObtemRedefinicoes

ObtemNiveis

ObtemInfoSobreBanco

ObtemInfoSobreCadeia

ObtemDiretorio

ObtemCliente

ObtemMensagem

Neste manual não apresentamos em detalhe as funções e métodos incluídos nas DLLs nem os exemplos de aplicativos desenvolvidos em ambientes RAD tais como Visual Basic e Delphi.

Para obter maiores detalhes consulte os manuais específicos na página internet do OpenBASE.

Desenvolvendo aplicativos Internet - OpusWeb

O OpenBASE incorporou às linguagens OPUS e OPUSWin algumas ferramentas de programação Internet, Intranet e Extranet, que facilitam o desenvolvimento de aplicativos em servidores WEB. Esses comandos e funções constituem uma extensão das linguagens OPUS e OpusWin e recebem o nome de OpusWEB e estão disponíveis para as seguintes plataformas e ambientes operacionais:

As linguagens OPUS e OPUSWin oferecem recursos para a construção dinâmica de aplicativos Cliente/Servidor em ambientes Internet e Intranet, utilizando as interfaces CGI (Common Gateway Interface) e ISAPI (Internet Server Application Program Interface), padrões amplamente utilizado nos servidores WEB.

Conceitos básicos

Ao desenvolver aplicativos ISAPI ou CGI, é necessário compreender claramente os mecanismos de funcionamento dessas interfaces de programação. Todos os problemas encontrados na utilização da OPUSWEB se relacionam, direta ou indiretamente, com o desconhecimento dos padrões e mecanismos CGI e/ou ISAPI.

Por isso, a compreensão destes assuntos constitui requisito básico para desenvolver scripts, programas, extensões ou filtros para servidores Web.

Abordamos, inicialmente, alguma idéias básicas a respeito dos seguintes assuntos:

    1. O modelo Internet (cliente/servidor).
    2. O cliente ("Browser", "User Agent")
    3. O servidor (Web Server / HTTP Server)
    4. O protocolo (HTTP - Hypertext transfer protocol)

    O modelo Web cliente/servidor

    Os serviços da plataforma Web estão baseados no modelo cliente/servidor, que permite distribuir e compartilhar os seus componentes básicos, ou seja, a interface com o usuário, a lógica dos programas e os dados. No modelo cliente/servidor, o cliente:

    No modelo cliente/servidor, o servidor:

    Nos modelos tradicionais, os clientes e os servidores são classificados de "magros" ou "gordos". Estes termos indicam mais uma relação funcional do que características físicas. Trata-se de uma divisão do trabalho ditada pelo perfil do próprio aplicativo. Por exemplo, é bastante freqüente que o servidor seja otimizado para fornecer dados a múltiplos clientes e, usualmente, a aplicação cliente é otimizada para, apenas, interagir com o usuário final.

    O servidor é "gordo" quando toda a lógica funcional reside nele. Este é, ainda, o modelo mais comum na Web. O cliente "magro" é, usualmente, um Browser, que fornece apenas a interface com o usuário. Ou seja, as aplicações CGI ou ISAPI fornecem a lógica funcional dentro do servidor HTTP e o cliente apenas exibe os dados. Existem outros modelos cliente / servidor, com serviços distribuídos. Neste caso, as atividades são compartilhadas entre cliente e servidor.

    O cliente ("User Agent")

    Os clientes Web são também chamados "User agents" ou, simplesmente, Browsers. No passado, por serem os Browsers meras interfaces com o usuário, o modelo era "servidor gordo, cliente magro". Contudo, atualmente, existem tecnologias (por exemplo, Applets, Client-side Scripts, Style Sheets, plug-ins ...) que permitem maior grau de programação e processamento do lado do cliente.

    A expressão cliente, ou "User Agent" se refere, usualmente, ao parceiro de uma sessão HTTP que inicia o pedido ("request") a ser atendido ("response") pelo servidor Web.

    Na medida que a grande rede mundial (World Wide Web) cresce, em recursos e complexidade, novos tipos de "User Agents" são inventados para prover novas funcionalidades junto aos usuários.

    O servidor ("Web Server")

    Servidores Web são processos que aceitam conexões (ou seja, sessões HTTP) solicitadas por clientes Web (Browsers) e, em resposta, fornecem informações na forma de mensagens e documentos de variados tipos, por exemplo, textos, imagens, som, vídeo ... etc ...

    O desenvolvimento de servidores Web começou em 1990 e, atualmente, existem centenas de milhares de servidores Web na Internet, além de um número desconhecido de servidores utilizados nas Intranets corporativas.

    Inicialmente, e durante algum tempo, apenas havia opções de servidores Web para plataformas UNIX. Atualmente, existem bons Servidores Web para plataformas Win32 e Mac.

    O protocolo HTTP

    Os servidores Web utilizam o protocolo HTTP (Hypertext Transfer Protocol) que foi implementado para permitir uma transferência rápida e eficiente de documentos na Internet".

    Consulte o manual específico da para obter maiores detalhes e aprender a programar OpusWEB.

    Estrutura das transações HTTP

    HTTP é um protocolo fácil de entender, pois é baseado no paradigma pedido e resposta (request e response). Uma transação HTTP, independente da sua complexidade, possui a seguinte estrutura elementar:

    O protocolo HTTP é "stateless" por natureza. Isto quer dizer que cada transação (pedido e resposta) é completada de forma independente, não sendo preservadas as informações de status referentes às transações anteriormente completadas. Isto exige um nível maior de controle e complexidade na programação de aplicativos Web.

    Existem vários métodos e recursos que permitem administrar essa complexidade das transações HTTP.

    Consulte o para maiores detalhes.

    Ambiente e ferramentas SQL

    A Linguagem Estruturada de Consulta (SQL) baseia-se num ambiente chamado SQL OPENBASE (Tecnocoop SQL), o qual implementa todos os recursos disponíveis da SQL ANSI sob o OpenBASE.

    A linguagem do SQL OPENBASE é totalmente compatível com a SQL padrão ANSI X3.135 - 1986, com as seguintes extensões apresentadas pelo ISO ANSI working draft (jan/1988): criação e eliminação dinâmica de Tabelas, Visões, Índices e Privilégios, Comandos dinâmicos SQL, Comando LOCK TABLE, Dados do tipo DATA, Integridade Referencial, SQL embutida na linguagem OPUS, SQL embutida na Linguagem C, dentre outras.

    Outros aspectos importantes da SQL OPENBASE:

    Para obter maiores detalhes consulte os manuais específicos na página internet do OpenBASE.

    Linguagens de programação OPUS e OpusWin

    O OpenBASE possui linguagens de programação de alto nível. A linguagem OPUS permite desenvolver aplicativos para plataformas UNIX e WIN32 utilizando a interface caractere ou Console Application. No que diz respeito à manipulação de Bancos de Dados, a OPUS oferece ferramentas, comandos e funções poderosos e de grande performance pois está plenamente integrada ao ambiente e estrutura do OpenBASE. Além disso, a linguagem OPUS permite acessar qualquer tipo de Banco de Dados utilizando o ODBC e conjugando, desta forma, os recursos da SQL.

    Um programa escrito em OPUS, quando submetido ao processo de pre-compilação, é traduzido para linguagem C/C++, para então ser efetivamente processado pelo compilador C/C++. Isto quer dizer que todo programa escrito na linguagem OPUS precisa de um compilador C/C++ para tornar-se uma função, uma procedure, um programa executável. Consulte o para maiores detalhes.

    Um programa escrito em OpusWin, quando submetido ao processo de pre-compilação, é traduzido para linguagem C/C++, para então ser efetivamente processado pelo compilador C/C++. Isto quer dizer que todo programa escrito na linguagem OPUS precisa de um compilador C/C++ para tornar-se uma função, uma procedure, um programa executável (.EXE) ou uma DLL (.DLL). Veja como construir DLLs utilizando a OpusWin consultando o .

    O processo de gerar programas C/C++ oferece total portabilidade e alta performance às aplicações, além de permitir que o usuário possa agregar ao programa (no mesmo fonte e sem restrições), comandos da linguagem C/C++.

    A linguagem OPUS

    A OPUS é uma linguagem de alto nível que permite desenvolver aplicativos em múltiplas plataformas e arquiteturas.

    Para obter maiores detalhes consulte os manuais específicos na página internet do OpenBASE.

    A linguagem OpusWin

    Os programas escritos na linguagem OpusWin são compatíveis com os programas desenvolvidos na tradicional OPUS, do OpenBASE e aderem plenamente aos padrões WIN32, possuindo, em conseqüência, todas as suas características e vantagens.

    Para obter maiores detalhes consulte os manuais específicos na página internet do OpenBASE.

    Impressão em ambientes Windows – OPUSRel

    Interface visual de programação - VisualOpus

    A Visual Opus é uma ferramenta projetada para desenvolvimento de sistemas, implementando os recursos e facilidades das plataformas Windows 9X/NT/2000/XP e visando maior produtividade para usuários dos produtos OpenBASE.

    A Visual Opus não é uma linguagem de programação e sim uma interface gráfica que permite a elaboração e/ou modificação de programas OpusWin, utilizando recursos visuais padrão, de forma interativa. A linguagem de programação utilizada pela Visual Opus é a OpusWin, assim como, por exemplo, as linguagens utilizadas pelos ambientes Delphi e Visual Basic são, respectivamente, o Pascal e o Basic.

    Os módulos (programas e procedures) produzidos ou manipulados através da utilização da ferramenta Visual Opus podem ser incorporados ao ambiente de produtos da família OpenBASE. Desta forma, a Visual Opus constitui, sem dúvida, um poderoso recurso a ser utilizado no processo de desenvolvimento de aplicações. Os objetivos básicos da Visual Opus são os seguintes:

    Para obter maiores detalhes consulte os manuais específicos na página internet do OpenBASE.

    Ambiente integrado de desenvolvimento – OpenIDE

    O OpenIDE oferece um ambiente integrado de desenvolvimento de aplicativos. Neste tópico apresentamos a estrutura e os conceitos básicos deste recurso OpenBASE.

    Uma aplicação desenvolvida nas linguagem OPUS ou OpusWin resulta sempre em um programa principal e, normalmente, em um conjunto de rotinas ou funções. Os programas encontram-se inc;uídos em arquivos segundo critérios definidos pelos autores do projeto de um determinado sistema aplicativo.

    O arquivo que contem o programa principal é chamado de arquivo principal e, geralmente, contém também as rotinas e funções utilizadas pelo programa principal. Os demais arquivos, se existirem, contém as rotinas e funções.

    O código fonte das rotinas e funções especifica, através da opção $LIBRARY, as bibliotecas onde elas serão armazenadas depois de compiladas e ligadas. O programa principal, por outro lado, deve especificar quais as bibliotecas (opção $LIBRARY) que contém as rotinas e funções utilizadas.

    As linguagens OPUS e OpusWin possuem a facilidade de incluir, dentro de um programa, função ou rotina, trechos de código contidos em arquivos chamados de inclusão (INCLUDE).

    A compilação dos modolos fonte que compõem uma aplicação deve ser feita na seguinte ordem:

    1. os arquivos que contém as rotina e funções, em qualquer ordem
    2. o arquivo que contém o programa principal

    Como conseqüência:

    Janelas do ambiente OpenIDE

    O ambiente integrado OpenIDE é constituído por três janelas:

    1. No alto, à esquerda, está a janela do projeto. Esta janela mostra os arquivos do projeto organizados em arvores hierárquicas.
    2. No alto, à direita, se encontra a janela de texto, que exibe os programas do projeto
    3. Embaixo está a janela de mensagens. Esta janela informa os procediemntos sendo executados assim como os avisos de erros encontrados na construção do projeto bem como os erros de compilação das rotinas.

    O tamanho destas janelas pode ser alterado a qualquer momento utilizando o mouse, clicando e arrastando as barras de separação ou utilizando os botões apresentados na barra de ferramentas.

    Projetos no ambiente OpenIDE

    Os elementos de um determinado sistema aplicativo são agrupados em projetos, contituídos por:

    Abertura de projetos no ambiente OpenIDE

    Para criar novos projetos basta acionar o menu Arquivos/Criar Projeto. O OpenIDE mostrará uma caixa de dialogo onde deverá ser informado o nome completo (incluído o percurso) do projeto a ser criado. Isto feito, uma nova caixa de dialogo será exibida permitindo a especificação dos arquivos que farão parte do projeto. Se nada for informado o projeto será criado vazio, isto é, sem arquivos.

    Para abrir um projeto existente basta acionar o menu Projeto/Abrir Projeto. O OpenIDE mostrará uma caixa de dialogo onde será informado o projeto que está sendo aberto.

    Assim que o projeto for criado ou aberto ele será mostrado na árvore da janela projeto.

    Estrutura dos projetos OpenIDE

    Os elementos que compõem um determinado projeto OpenIDE são agrupados, organizados e apresentados utilizando árvores com a seguinte estrutura hierárquica:

    Ao lado de cada item da árvore pode existir um pequeno quadrado contendo o símbolo mais (+) ou o símbolo menos(-). A sua inexistência informa que o item não possui subitens. Se estiver preenchido com (+), significa que existem subitens, porém não estão sendo mostrados. Para exibi-los basta clicar no pequeno quadrado. Se existir preenchido com (-),significa que existem subitens e estão mostrados. Para que os subitens deixem de ser vistos, basta clicar no pequeno quadrado.

    Construção dos Projetos OpenIDE

    A construção de um projeto é iniciada pelo menu Projeto/Construir. Construir ium projeto significa executar, na ordem correta, todas as compilações e ligações que se fizerem necessárias como conseqüência das modificações feitas nos arquivos após a ultima construção realizada. O arquivo principal é compilado se todos os arquivos de rotina foram corretamente compilados. O resultado da compilação do arquivo principal é um arquivo executável ou DLL.

    O processo de construção pode ser acompanhado pelas mensagens mostradas na janela de mensagens. No caso de erros de compilação de um arquivo, um duplo clique na linha que o informa fará com que o arquivo seja colocado na janela de texto com a linha do erro selecionada.

    A construção de um projeto pode ser interrompida pelo comando de menu Projeto/Interromper Construção. A construção será interrompida ao final da compilação que estiver sendo executada.

    Manutenção dos projetos OpenIDE

    Os projetos OpenIDE podem ser modificados a qualquer momento, podendo-se incluir ou remover os elementos que o compõem.

    Reconstrução de projetos OpenIDE

    Através do menu Projeto/Reconstruir todo um poderá ser reconstruído sendo recompilados todos os seus programas, rotinas e funções.

    Inclusão e remoção de arquivos

    Para inserir arquivos no projeto basta comandar o menu Projeto/Inserir ou utilizar a tecla Insert com a janela do projeto selecionada. A resposta a este comando é a exibição de uma caixa de dialogo aonde os arquivos a serem inseridos poderão ser selecionados. Para remover arquivos de um projeto basta seleciona-los na árvore e teclar a tecla Delete ou acionar o menu Projeto/Remover.

    Exibição de arquivos e rotinas

    Para exibir um arquivo do projeto basta dar um duplo clique em seu nome na arvore do projeto. O conteúdo desse arquivo será mostrado na janela texto.

    Na janela ComboBox acionada através da barra de ferramentas estão todas as rotinas e funções pertencentes ao projeto. Selecione a região de edição da ComboBox, digite a inicial do nome da rotina a ser vista. Uma janela ListBox será aberta mostrando todas as rotinas ou funções cujos nomes iniciam com a letra inicial escolhida. Clique na rotina que deseja visualizar e o arquivo que a contém será colocado na janela texto.

    Execução dos projetos OpenIDE

    O comando de menu Projeto/Executar dispara, se necessário, a construção do projeto e em seguida se a construção foi bem sucedida comanda a execução do .exe gerado.

    Compilação de módulos fonte

    Para compilar um determinado módulo fonte de um projeto:

    Os erros de compilação serão mostrados na janela de mensagens e um duplo clique na linha que o informa fará com que a linha do erro apareça selecionada na janela texto, aonde poderá ser feita a correção.

    Formatação de arquivos fonte

    Embelezar um arquivo é reformatá-lo utilizando uma indentação que realça os loops, os case etc... permitindo que a leitura do programa seja facilitada. Para embelezar um determinado arquivo, faça o seguinte:

    Verificação dos Projetos OpenIDE

    A função de verificação do projeto, acionada através do menu Projeto/Verificação, analisa os componentes do projeta para detectar:

    Todos os problemas detectados são informados na janela de mensagens. Um duplo clique na linha da de uma mensagem fará com que o arquivo nela citado seja visualizado na janela texto. Se a mensagem referencia uma rotina ou função, a linha que contém a rotina será selecionada.

    Ambiente integrado DBA – OpenDBA

    O Opendba é uma ferramenta de Administração de Dados cujo objetivo é auxiliar o DBA na execução de trabalhos de criação e manutenção de banco de dados. Você pode:

    Modo de operação do Opendba

    Existem três maneiras de operação no Opendba:

    1. Mostrar só SQL: Trabalha com a interface totalmente voltada para o trabalho com banco de dados SQL.
    2. Mostrar só Esquemas: Trabalha com a interface totalmente voltada para o trabalho com banco de dados OPENBASE (define).
    3. Mostrar SQL e Esquemas: Trabalha com a interface voltada para o trabalho com banco de dados OPENBASE e/ou banco de dados OPENBASE convertidos para aceitar acesso SQL.

    Para ativar o modo de operação selecione no menu: Arquivo/Preferências.

    A tela do Opendba é dividida da seguinte maneira:

    Onde:

    1. Janela da arvore de banco de dados: É a janela mais a esquerda. Na árvore estão os bancos existentes, seus arquivos e itens componentes.
    2. Janela de trabalho: Utilizada para trabalho com textos, definição de esquemas, etc.
    3. Janela de Mensagens: Recebe as mensagens enviadas pelo programa na depuração de erros.

    Todas as funções do Opendba aplicam-se no item que está selecionado na árvore.

    Como criar um banco de Dados Openbase

    Você pode criar um banco Openbase se uma das opções do menu mostradas abaixo estiverem selecionadas:

    a) Arquivo/Preferências/Mostrar só Esquemas ou

    b) Arquivo/Preferências/Mostrar SQL e Esquemas

    Primeiramente você precisa de um esquema para compilar. Neste esquema estão definidos os atributos do banco, as tabelas e os itens que pertencem às mesmas.

    Como criar arquivos num banco de dados Openbase

    Mantenha o esquema selecionado na árvore, e ative no menu Esquema/Inserir Arquivo em ..., ou aperte a tecla INS . Aparece o diálogo para criação de arquivos.

    Leia as instruções com atenção. Depois de clicar na seta, digite o nome do arquivo e selecione o tipo. Para encerrar clique no botão ‘OK’. Repita este passo para cada arquivo que quiser inserir no banco de dados.

    Como criar campos num banco de dados Openbase

    Depois que o arquivo foi criado é hora de inserir campos. Na árvore, posicione-se sobre um arquivo. No menu, selecione Esquema/Inserir Campo em... ou aperte a tecla INS como atalho. Repare que surge na árvore a mensagem ‘’Item sendo definido’’. No diálogo para criação de campos, digite o nome do item e a espécie e clique no botão com a seta para direita.

    Depois, selecione o tipo da chave,

    selecione o tipo do item

    e vá para a próxima caixa de diálogo.

    Digite o tamanho do campo, o tipo de segurança e o número de repetições. Clique ‘OK’ para adicionar o item ao esquema. Repita para cada item que for inserido no arquivo.

    Compilando um esquema Openbase

    Para compilar o esquema criado, selecione:

    Na caixa de diálogo selecione o diretório onde ficará o banco e clique ‘OK’.

    Removendo um Banco de Dados Openbase

    Selecione na árvore, na seção Metadata/Bancos de Dados o banco que será removido. Depois selecione no menu:

    Você também pode usar a tecla DEL como atalho.

    Removendo Objetos de um esquema Openbase

    Primeiramente, uma das opções abaixo deve estar selecionada:

    Se Arquivo/Preferências/Mostrar SQL e Esquemas estiver selecionado:

    Removendo um esquema:

    Para remover um esquema selecione na árvore o esquema que você quer remover, e no menu, selecione Esquema/Remover Esquema... ou aperte a tecla DEL.

    Removendo um arquivo:

    Para remover um arquivo, selecione na árvore o arquivo que voçê quer remover, e no menu, clique em Esquema/Remover Arquivo... ou aperte a tecla DEL.

    Removendo um campo:

    Para remover um campo, selecione na árvore o campo que voçê quer remover, e no menu, clique em Esquema/Remover Campo....

    Se Arquivo/Mostrar só Esquemas estiver selecionado: Selecione na árvore o objeto Openbase que quer remover e clique em Esquema/Remover Objeto para cada um deles.

    Preparando um banco de dados Openbase para acesso SQL

    Primeiramente, a opção Arquivo/ Preferências/Mostrar SQL e Esquemas deve estar selecionada. Depois selecione na árvore em Metadata/Bancos de Dados, o banco que vai ser preparado. Selecionado o banco, ative no menu a opção Banco/Integrar Catálogo SQL. Leia o texto que está na dialog box e caso queira, modifique o caminho onde será gerado o catálogo SQL. O diretório default para criação da base SQL é c:\usr\tsgbd\tsdic\db. O diretório db é o diretório de localização dos arquivos que contém informações sobre a base SQL que está sendo criada. Quando você selecionar o diretório, por exemplo, c:\teste, você deve acrescentar mais um, por exemplo, c:\teste\base1ou c:\test\db ou qualquer nome que queira. Este procedimento é obrigatório, caso contrário aparecerá a mensagem ‘Diretório já existe’.

    Removendo Acesso SQL em um banco de dados Openbase

    Primeiramente, a opção Arquivo/Preferências/Mostrar SQL e Esquemas deve estar selecionada.Selecione na árvore, no caminho Metadata/Bancos de Dados um banco que tenha associado a ele o ícone (H). Este ícone indica que o banco esta com o acesso SQL disponível. Depois, selecione no menu Banco/Remover Catálogo SQL, << Falta terminar >>.

    Criando um banco de dados SQL

    Para criar um banco de dados SQL umas das duas opções do menu abaixo precisam estar selecionadas:

    Selecione no menu Banco/Cria Base SQL, que ativará a caixa de diálogo abaixo:

    Removendo um banco de dados SQL

    Primeiramente é necessário que no menu uma das duas opções abaixo estejam selecionadas:

    Selecione na árvore, no caminho Metadata/Bancos de Dados SQL o banco SQL que quer remover. Depois, selecione no menu Banco/Remove Base SQL ou simplesmente aperte a tecla DEL. Responda SIM a confirmação.

    Criando e removendo uma tabela em bancos de dados SQL

    Primeiramente é necessário que no menu uma das duas opções abaixo estejam selecionadas:

    Depois, selecione na árvore o banco de dados SQL que quer usar, no caminho Metadata/Bancos de Dados SQL.

    No menu, selecione Banco/Inserir Objeto Sql/Tabelas e a primeira caixa de dialogo aparece:

    Para verificar os atributos de um campo, selecione na lista ‘Campos Criados’ , e clique no botão ‘Atributos do campo selecionado’ . Alguns atributos também podem ser definidos nesta caixa.

    Para remover um campo , selecione na lista ‘Campos Criados’ e clique no botão

    ‘Remover Campo’. Clique em ‘Avançar’ para continuar.

    Para criar uma chave primária , dê um duplo clique na lista ‘Campos Criados’ , em cada campo que pertença a chave. Para remover algum campo da chave, basta posicionar o ponto de inserção na caixa ‘Campos que compõem a chave primária’ e remova com a tecla DEL.. Clique em ‘Avançar’ para continuar.

    Note que ao criar a primeira chave, o botão ‘Ver Todas’ é ativado. Este botão permite que você veja todas as chaves que foram criadas.

    Com um duplo clique sobre um campo na lista ‘Campos Criados’ os atributos do campo selecionado são mostradas numa caixa de propriedades.

    Para remover uma chave, selecione uma chave na lista ‘Chaves Criadas’ e clique no botão ‘Deletar’. A chave é marcada para ser deletada. Para confirmar clique no botão ‘OK’. Para sair do diálogo sem modificações, clique em ‘Cancelar’.

    Para continuar, clique em ‘Avançar’.

    5) Para criar chaves estrangeiras selecione o campo na lista ‘Campos Criados’ e selecione qual a tabela que será a referencia para este campo na lista ‘Tabelas Existentes’. A lista de tabelas existentes só será preenchida com tabelas do banco que tenham chaves definidas, senão a lista estará vazia, porque só é possível fazer referência a chaves existentes.

    Escolha o tipo de UPDATE e DELETE e clique em ‘Avançar’.

    Por fim, entra o último diálogo, que mostra o comando CREATE TABLE que dará origem a nova tabela. O comando CREATE SCHEMA é usado para identificar que as linhas seguintes serão comandos SQL.

    Primeiramente é necessário que no menu uma das duas opções abaixo estejam selecionadas:

    Depois, selecione na árvore o banco de dados SQL que quer usar, no caminho Metadata/Bancos de Dados SQL. Depois, selecione a tabela que quer remover.

    No menu, selecione Banco/Remover Objeto SQL/Tabelas. Confirme a operação.

    Criando uma visão num banco de dados SQL

    Primeiramente é necessário que no menu uma das duas opções abaixo estejam selecionadas:

    Depois, selecione na árvore o banco de dados SQL que quer usar, no caminho Metadata/Bancos de Dados SQL. No menu, selecione Banco/Inserir Objeto Sql/Visões e uma caixa de dialogo aparece:

    Na caixa de texto já vem escrito um template para o comando.

    Substitua ‘<Coloque aqui o nome da visão> pelo nome da visão que vc quer criar.

    Substitua ‘<Coloque aqui o comando SELECT> pelo comando de seleção de registros.

    Exemplo: Criando uma visão chamada ‘Visao1’ que conterá todos os registros do arquivo ‘pedidos’, do banco ‘sol’.

    Note que depois que a visão foi criada, ela automaticamente é incluida na árvore, no caminho do banco do qual ela se originou.

    Removendo uma visão de um banco de dados SQL

    Primeiramente é necessário que no menu uma das duas opções abaixo estejam selecionadas:

    Depois, selecione na árvore o banco de dados SQL que quer usar, no caminho Metadata/Bancos de Dados SQL. Depois, selecione a visão que quer remover.

    No menu, selecione Banco/Remover Objeto SQL/Visões. Confirme a operação

    Compilando um esquema SQL

    Um esquema SQL é um arquivo texto contendo comandos SQL. O texto deve ser obrigatóriamente iniciado pelo comando CREATE SCHEMA, indicando que as linhas a seguir conterão comandos SQL. Para que o esquema seja executado, um arquivo de esquema deve estar aberto, ou o esquema deve estar digitado na janela de texto.

    Primeiramente é necessário que no menu uma das duas opções abaixo estejam selecionadas:

    Depois, selecione na árvore o banco de dados SQL que quer usar, no caminho Metadata/Bancos de Dados SQL. No menu, selecione Banco/Executar Script.

    Abre-se um diálogo de abertura de arquivo. Por default, os arquivos que contém esquemas SQL tem extensão ‘.esq’, mas pode se usar qualquer extensão. Escolha o arquivo selecionando-o e clicando ‘OK’. Se o arquivo já estiver aberto, isto é, está na janela de edição, clique em ‘Cancelar’. Depois da operação acima, clique ‘OK’ ou ‘Cancelar’, para confirmar ou abortar a execução.Abaixo, vemos um pequeno exemplo de arquivo de esquema:

    CREATE SCHEMA

    CREATE TABLE MinhaTabela

        (MeuCampo    CHARACTER (10),

        MeuCampo1    CHARACTER (10),

        PRIMARY KEY (MeuCampo),

        UNIQUE (MeuCampo),

        UNIQUE (MeuCampo1))

    Recuperando um banco SQL danificado

    Às vezes um banco pode ficar bloqueado por várias razões, como falta de luz, processos bloqueados por um programa mal-comportado, etc. Para resolver este problema, selecione na árvore o banco que você quer recuperar e:

    Se você tiver selecionado Arquivo/Preferências/Mostrar SQL e Esquemas, clique no menu na opção Utilitários/Específicos para SQL/Recuperar Banco SQL.

    Se você selecionou Arquivo/Preferências/Mostrar só SQL, clique no menu na opção Utilitários/Recuperar Banco SQL.

    Refazer ou Desfazer Transações num banco de dados SQL

    Para que seja possível refazer ou desfazer transações num banco de dados SQL OPENBASE a opção para criação do jornal deve ter sido ativada quando da criação do banco SQL. Esta opção não deve ser usada quando da criação de acesso SQL para bancos de dados Openbase.

    Existem duas maneiras de se ativar a função, dependendo do modo de trabalho selecionado: Arquivo/Preferências/Mostrar SQL e Esquemas:

    Selecione na árvore, abaixo de Bancos de Dados SQL o banco de dados que deve ter as transações modificadas. Então, clique no menu em Utilitários/Específicos para SQL/Transações.

    Arquivo/Preferências/Mostrar só SQL

    Selecione na árvore, abaixo de Bancos de Dados SQL o banco de dados que deve ter as transações modificadas. Então, clique no menu em Utilitários/Transações.

    No diálogo que é mostrado abaixo, é necessário que algumas informações sejam preenchidas:

    O nome do arquivo diário tem como default \usr\tsgbd\tsdic\diario, troque o nome do arquivo se necessário. Se for preciso que se comece de uma data específica, digite a data inicial. Se ficar preenchida com o default dd/mm/aaaa todas as operações gravadas no arquivo diário serão refeitas ou desfeitas a partir data em o arquivo diário começou ser gravado.

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