

O Sistema Gerenciador de Bancos de Dados OpenBASE implementa todos os recursos e facilidades inerentes ao modelo relacional adotado. Entretanto, cabe ressaltar:
A seguir detalhamos alguns dos recursos básicos dos ambientes OpenBASE.
...
...
...
Os mecanismos de controle de acesso para atualização concorrente em Bancos de Dados OpenBASE são estabelecidos conforme as estratégias de bloqueio especificadas no Esquema do Banco de Dados. Para melhor compreensão dos mecanismos de bloqueio adotados, é importante compreender o que seja uma transação OpenBASE.
Uma transação OpenBASE é constituyída por uma determinada seqüência de atualizações nas Bases de Dados, podendo compreender um ou mais registros de um ou mais arquivos do Banco. O início de uma transação é definida por um comando de bloqueio (LOCK) e o seu final por um comando de desbloqueio (UNLOCK). Isto não significa que somente os registros envolvidos na transação sejam bloqueados. Na verdade, o que vai determinar o universo de registros a serem bloqueados é o tipo de bloqueio escolhido para o Banco de Dados.
Em uma aplicação do usuário escrita na linguagem OPUS, as transações que envolvem uma única atualização não precisam explicitar os controles de LOCK e UNLOCK, pois estes são supridos internamente pela OPUS, de forma automática.
O OpenBASE implementa os mecanismos de bloqueio apresentados a seguir.
Caso o usuário não especifique no Esquema do Banco nenhum tipo de bloqueio, o OpenBASE assume automaticamente (por default) um bloqueio por Banco, implementando em cada transação o bloqueio de todo o Banco de Dados.
Transações complexas, utilizando grandes Banco de Dados com intensa concorrência podem acarretar problemas de performance na utilização do bloqueio de Banco de dados. Em casos normais, o tempo que o Banco de Dados ficará bloqueado é praticamente imperceptível.
Para o OpenBASE, este tipo de bloqueio é bastante eficiente, econômico e seguro, sem possibilidade de ocorrer "deadlock".
Este tipo de bloqueio é útil quando os aplicativos se restringem a acessar registros de um único arquivo, ou seja, cada aplicação acessa um arquivo do Banco de Dados.
Este tipo de bloqueio define que todos os registros que contiverem a mesma chave estarão bloqueados. São bloqueadas as chaves primárias que se relacionam com os registros de uma transação e, em conseqüência, todos os registros que possuírem chaves estrangeiras, que referenciam as chaves primárias bloqueadas, estarão também bloqueados.
Este tipo de Bloqueio define que todas as páginas onde estão contidos os registros a serem atualizados pelas transações sejam bloqueados. O tamanho de uma página equivale a 1024 bytes e compreende um registro, parte de um registro, ou vários registros.
Este tipo de Bloqueio define que todos os registros a serem atualizados pelas transações sejam bloqueados.
Observações gerais sobre bloqueio:
As Entidades no OpenBASE podem se relacionar com outras entidades direta ou indiretamente (relacionamento entre registros de arquivos distintos). Declarar um relacionamento no OpenBASE não é simplesmente declarar os itens associativos, ou seja, a chave estrangeira das entidades envolvidas nos relacionamentos. Mais do que isso, é estabelecer as ligações e os caminhos a serem percorridos pelo Banco de Dados.
Toda Entidade é identificada através de seu atributo determinante (chave primária). Aliado a este atributo é informado o número de ligações, ou seja, em quantos arquivos de dados a chave primária da Entidade referenciada como chave estrangeira.
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.
Exemplo:
nome: PESSOA e
NOMEP (*) u30 << (*) será substituído por (1) >>
IDADE n2
nome: FILHOS r
NOMEP1 (PESSOA) U30
IDADEF n2
Todo relacionamento é identificado através dos atributos associativos (chave estrangeira). Aliado a estes atributos são informados os nomes das entidades aos quais eles se referem, ou seja, as procedências das chaves estrangeiras.
Após definir as ligações e caminhos dos relacionamentos, o OpenBASE administra automaticamente a integridade referencial, além de permitir, para obtenção de dados (se não existir itens com nomes repetidos no Banco de Dados), junção de dados dos registros relacionados em vários níveis de relacionamento.
A definição de todas as ligações e caminhos dos relacionamentos é efetuada no Esquema do Banco de Dados, ou seja, estarão definidas também no Dicionário de Dados. O fato de ter que definir estas informações no esquema, não determina na implementação física do BD, ponteiros (elos explícitos) entre registros. Todas as ligações são efetuadas de forma lógica, através do Dicionário de Dados.
A integridade referencial implementa a consistência das referências nos relacionamentos em um Banco de dados garantindo que:
Para efetivar a integridade referencial é necessário apenas definir os relacionamentos entre as entidades. O OpenBASE implementa automaticamente este recurso.
Bancos de Dados podem ser manipulados de maneira extremamente flexível com relação aos aplicativos. Dado um Esquema de um Banco de Dados qualquer, podem ser definidos subesquemas que irão manipular visões (ou porções) deste Banco de Dados.
O esquema base original, a partir do qual foram definidos os subesquemas, passa a ser chamado esquema global. Assim sendo, um subesquema apresenta visões ou partes do esquema base global conforme as especificações dos projetistas dos Bancos de Dados e suas respectivas aplicações.
Os arquivos declarados no subesquema devem existir no esquema global, sendo que os atributos dos arquivos definidos no subesquema devem ser compatíveis com os atributos do esquema global, ou seja, os itens declarados nos arquivos do subesquema devem encontrar itens correspondentes no esquema global, conservando seus tipos e tamanhos.
O OpenBASE permite interseções de Bancos de Dados, através de referências externas aos Arquivos Entidades e Relacionamentos. Estas referências são tratadas pelo OpenBASE como Arquivos TABELA e CONSULTA.
São arquivos externos ao Banco de Dados onde estão sendo declarados e se referem a arquivos Relacionamentos pertencentes a outros Banco de Dados. Ao ser declarado um arquivo Tabela ou Consulta, deve-se especificar a sua procedência, ou seja, a qual Banco de Dados ele pertence efetivamente. Por serem arquivos externos pertencentes a outros BDs, estes só poderão ser lidos e nunca atualizados.
Na declaração de um arquivo Tabela ou Consulta não é obrigatório declarar todos os itens de dados que estão definidos nos arquivos aos quais se referenciam (Entidades e Relacionamentos), porém todos os itens chaves devem ser declarados, na mesma ordem em que o foram, nos respectivos arquivos que estão sendo referenciados.
