Banco de Dados
A tecnologia aplicada aos métodos de armazenamento de
informações vem crescendo e gerando um impacto cada vez maior no uso de
computadores, em qualquer área em que os mesmos podem ser aplicados.
Um "banco de dados" pode ser definido como um
conjunto de "dados" devidamente relacionados. Por "dados"
podemos compreender como "fatos conhecidos" que podem ser armazenados
e que possuem um significado implícito. Porém, o significado do termo
"banco de dados" é mais restrito que simplesmente a definição dada
acima.
Um banco de dados pode ser criado e mantido por um conjunto
de aplicações desenvolvidas especialmente para esta tarefa ou por um
"Sistema Gerenciador de Banco de Dados" (SGBD). E um SGBD permite aos
usuários criarem e manipularem bancos de dados de propósito gerais. O conjunto
formado por um banco de dados mais as aplicações que manipulam o mesmo é
chamado de "Sistema de Banco de Dados".
Uma característica importante da abordagem Banco de Dados é que o SGBD mantém não somente os dados mas também a forma como os mesmos são armazenados, contendo uma descrição completa do banco de dados. Estas informações são armazenadas no catálogo do SGBD, o qual contém informações como por exemplo, as estruturas de cada arquivo. O tipo e o formato de armazenamento de cada tipo de dado, restrições, etc. A informação armazenada no catálogo é chamada de "Meta Dados". No processamento tradicional de arquivos, o programa que irá manipular os dados deve conter este tipo de informação, ficando limitado a manipular as informações que o mesmo conhece. Utilizando a abordagem banco de dados, a aplicação pode manipular diversas bases de dados diferentes.
Todos nós sabemos existirem gigantescas bases de dados
gerenciando nossas vidas. De fato sabemos que nossa conta bancária faz parte de
uma coleção imensa de contas bancárias de nosso banco. Nosso Título Eleitoral
ou nosso Cadastro de Pessoa Física, certamente estão armazenados em Bancos de
Dados colossais. Sabemos também que quando sacamos dinheiro no Caixa Eletrônico
de nosso banco, nosso saldo e as movimentações existentes em nossa conta
bancária já estão à nossa disposição.
Nestas situações sabemos que existe uma necessidade em se
realizar o armazenamento de uma série de informações que não se encontram
efetivamente isoladas umas das outras, ou seja, existe uma ampla gama de dados
que se referem a relacionamentos existentes entre as informações a serem
manipuladas.
Estes Bancos de Dados, além de manterem todo este volume de
dados organizado, também devem permitir atualizações, inclusões e exclusões do
volume de dados, sem nunca perder a consistência. E não podemos esquecer que na
maioria das vezes estaremos lidando com acessos concorrentes a várias tabelas
de nosso banco de dados, algumas vezes com mais de um acesso ao mesmo registro
de uma mesma tabela!
O fato de montarmos uma Mala Direta em um micro PC-XT com um
drive já faz de nós um autor de um Banco de Dados?
Claro que não! Um Banco de Dados é antes de mais nada uma
coleção logicamente coerente de dados com determinada significação intrínseca.
Em outras palavras um arquivo contendo uma série de dados de um cliente, um
arquivo com dados aleatoriamente gerados e dois arquivos padrão dbf (dBase) que
tem uma relação definida entre ambos, não pode ser considerada uma Base de
Dados Real. Um Banco de Dados contém os dados dispostos numa ordem
pré-determinada em função de um projeto de sistema, sempre para um propósito
muito bem definido.
Um Banco de Dados representará sempre aspectos do Mundo
Real. Assim sendo uma Base de Dados (ou Banco de Dados, ou ainda BD) é uma
fonte de onde poderemos extrair uma vasta gama de informações derivadas, que
possui um nível de interação com eventos como o Mundo Real que representa. A
forma mais comum de interação Usuário e Banco de Dados, dá-se através de
sistemas específicos que por sua vez acessam o volume de informações geralmente
através da linguagem SQL. Os Administradores de Banco de Dados (DBA) são
responsáveis pelo controle ao acesso aos dados e pela coordenação da utilização
do BD. Já os projetistas de Banco de Dados (DBP) são analistas que identificam
os dados a serem armazenados em um Banco de Dados e pela forma como estes serão
representados.
Os Analistas e Programadores de Desenvolvimento, criam
sistemas que acessam os dados da forma necessária ao Usuário Final, que é
aquele que interage diretamente com o Banco de Dados.
Um SGBD - Sistema de Gerenciamento de Banco de Dados é uma
coleção de programas que permitem ao usuário definir, construir e manipular
Bases de Dados para as mais diversas finalidades.
Um conceito que deverá ficar bastante claro inicialmente é o
que envolve a separação clara entre os Gerenciadores de Base de Dados dos
Gerenciadores de Arquivo.
Sistemas baseados em "Banco de Dados" baseados em
Btrieve e dBase (Fox e Clipper), podem no máximo simular as características
típicas de um ambiente de Banco de Dados. As linguagens Delphi (utiliza
opcionalmente o padrão dBase) e o VB (que utiliza o Access), recomendam a utilização
de Banco de Dados reais, porém utilizam àqueles "Banco de Dados" que
possuem algumas características de Bancos de Dados, mas possuem características
típicas de Gerenciadores de Arquivo.
Vamos definir algumas regras básicas e claras para um sistema de manipulação de dados ser considerado um SGBD. Fica implícito que se ao menos uma das características abaixo não estiver presente no nosso "candidato" a SGBD, este poderá ser um GA (Gerenciador de Arquivo) de altíssima qualidade, "quase" um SGBD, mas não um SGBD.
A partir do que foi visto acima, podemos dizer que um Banco
de Dados possui as possui as seguintes propriedades:
·
é uma coleção lógica coerente de dados com um
significado inerente;
·
uma disposição desordenada dos dados não pode
ser referenciada como um banco de dados;
·
um banco de dados é projetado, construído e
populado com dados para um propósito específico;
·
um banco de dados possui um conjunto pré
definido de usuários e aplicações;
·
um banco de dados representa algum aspecto do
mundo real, o qual é chamado de "mini-mundo" ; qualquer alteração
efetuada no mini-mundo é automaticamente refletida no banco de dados.
Algumas normas definem um Sistema de Banco de Dados, são
elas:
Auto-Contenção - Um SGBD não contém apenas os dados
em si, mas armazena completamente toda a descrição dos dados, seus
relacionamentos e formas de acesso. Normalmente esta regra é chamada de
Meta-Base de Dados. Em um GA, em algum momento ao menos, os programas
aplicativos declaram estruturas (algo que ocorre tipicamente em C, COBOL e
BASIC), ou geram os relacionamentos entre os arquivos (típicos do ambiente
xBase). Por exemplo, quando você é obrigado a definir a forma do registro em
seu programa, você não está lidando com um SGBD.
Independência dos Dados - Quando as aplicações estiverem
realmente imunes a mudanças na estrutura de armazenamento ou na estratégia de
acesso aos dados, podemos dizer que esta regra foi atingida. Portanto, nenhuma
definição dos dados deverá estar contida nos programas da aplicação. Quando
você resolve criar uma nova forma de acesso, um novo índice, se precisar
alterar o código de seu aplicativo, você não está lidando com um SGBD.
Abstração dos Dados - Em um SGBD real é fornecida ao
usuário somente uma representação conceitual dos dados, o que não inclui maiores
detalhes sobre sua forma de armazenamento real. O chamado Modelo de Dados é um
tipo de abstração utilizada para fornecer esta representação conceitual. Neste
modelo, um esquema das tabelas, seus relacionamentos e suas chaves de acesso
são exibidas ao usuário, porém nada é afirmado sobre a criação dos índices, ou
como serão mantidos, ou qual a relação existente entre as tabelas que deverá
ser mantida íntegra. Assim se você desejar inserir um pedido em um cliente
inexistente e esta entrada não for automaticamente rejeitada, você não está
lidando com um SGBD.
Visões - Um SGBD deve permitir que cada usuário
visualize os dados de forma diferente daquela existente previamente no Banco de
Dados. Uma visão consiste de um subconjunto de dados do Banco de Dados, necessariamente
derivados dos existentes no Banco de Dados, porém estes não deverão estar
explicitamente armazenados. Portanto, toda vez que você é obrigado a replicar
uma estrutura, para fins de acesso de forma diferenciada por outros
aplicativos, você não está lidando com um SGBD.
Transações - Um SGBD deve gerenciar completamente a
integridade referencial definida em seu esquema, sem precisar em tempo algum,
do auxílio do programa aplicativo. Desta forma exige-se que o banco de dados
tenha ao menos uma instrução que permita a gravação de uma série modificações
simultâneas e uma instrução capaz de cancelar um série modificações. Por
exemplo, imaginemos que estejamos cadastrando um pedido para um cliente, que
este deseje reservar 5 itens de nosso estoque, que estão disponíveis e portanto
são reservados, porém existe um bloqueio financeiro (duplicatas em atraso) que
impede a venda. A transação deverá ser desfeita com apenas uma instrução ao
Banco de Dados, sem qualquer modificações suplementares nos dados. Caso você se
obrigue a corrigir as reservas, através de acessos complentares, você não está
lidando com um SGBD.
Acesso Automático - Em um GA uma situação típica é o
chamado Dead-Lock, o abraço mortal. Esta situação indesejável pode ocorrer toda
vez que um usuário travou um registro em uma tabela e seu próximo passo será
travar um resgistro em uma tabela relacionada à primeira, porém se este
registro estiver previamente travado por outro usuário, o primeiro usuário
ficará paralisado, pois, estará esperando o segundo usuário liberar o registro
em uso, para que então possa travá-lo e prosseguir sua tarefa. Se por hipótese
o segundo usuário necessitar travar o registro travado pelo primeiro usuário
(!), afirmamos que ocorreu um abraço mortal, pois cada usuário travou um
registro e precisa travar um outro, justamente o registro anteriormente travado
pelo outro! Imaginemos um caso onde o responsável pelos pedidos acabou de
travar o Registro Item de Pedido, e, necessita travar um registro no Cadastro
de Produtos, para indicar uma nova reserva. Se concomitantemente estiver sendo
realizada uma tarefa de atualização de pendências na Tabela de Itens, e para
tanto, previamente este segundo usuário travou a Tabela de Produtos, temos a
ocorrência do abraço mortal. Se a responsabilidade de evitar esta ocorrência
for responsabilidade da aplicação, você não está lidando com um SGBD.
Um SGBD possui algumas características que são elementares para o seu funcionamento, essas caracteisticas irão determinar se o SGBD está devidamente estruturado oferecendo assim as condições necessárias para seu bom uso. A seguir, iremos enumerar algumas características operacionais elementares que sempre devem fazer parte de um SGBD. São elas:
Controle de Redundâncias – A redundância consiste no
armazenamento de uma mesma informação em locais diferentes, provocando
inconsistências. Em um Banco de Dados as informações só se encontram
armazenadas em um único local, não existindo duplicação descontrolada dos
dados. Quando existem replicações dos dados, estas são decorrentes do processo
de armazenagem típica do ambiente Cliente-Servidor, totalmente sob controle do
Banco de Dados.
Compartilhamento dos Dados – O SGBD deve incluir
software de controle de concorrência ao acesso dos dados, garantindo em
qualquer tipo de situação a escrita/leitura de dados sem erros.
Controle de Acesso – O SGDB deve dispor de recursos
que possibilitem selecionar a autoridade de cada usuário. Assim um usuário
poderá realizar qualquer tipo de acesso, outros poderão ler alguns dados e
atualizar outros e outros ainda poderão somente acessar um conjunto restrito de
dados para escrita e leitura.
Interfaceamento – Um Banco de Dados deverá
disponibilizar formas de acesso gráfico, em linguagem natural, em SQL ou ainda
via menus de acesso, não sendo uma "caixa-preta" somente sendo
passível de ser acessada por aplicações.
Esquematização – Um Banco de Dados deverá fornecer mecanismos que possibilitem a compreensão do relacionamento existentes entre as tabelas e de sua eventual manutenção.
Para um grande banco de dados, existe um grande número de
pessoas envolvidas, desde o projeto, uso até manutenção. Podemos dividir esse
grupo de pessoas em quatro grupos que serão apresentados a seguir:
Em um ambiente de banco de dados, o recurso primário é o
banco de dados por si só e o recurso secundário o SGBD e os softwares
relacionados. A administração destes recursos cabe ao Administrador de Banco de
Dados, o qual é responsável pela autorização de acesso ao banco de dados e pela
coordenação e monitoração de seu uso.
O Projetista de Banco de Dados é responsável pela
identificação dos dados que devem ser armazenados no banco de dados, escolhendo
a estrutura correta para representar e armazenar dados. Muitas vezes, os
projetistas de banco de dados atuam como "staff" do DBA, assumindo
outras responsabilidades após a construção do banco de dados. É função do
projetista também avaliar as necessidades de cada grupo de usuários para
definir as visões que serão necessárias, integrando-as, fazendo com que o banco
de dados seja capaz de atender a todas as necessidades dos usuários.
Existem basicamente três categorias de usuários finais que
são os usuários finais do banco de dados, fazendo consultas, atualizações e
gerando documentos:
·
usuários casuais: acessam o banco
de dados casualmente, mas que podem necessitar de diferentes informações a cada
acesso; utilizam sofisticadas linguagens de consulta para especificar suas
necessidades;
·
usuários novatos ou paramétricos:
utilizam porções pré-definidas do banco de dados, utilizando consultas
preestabelecidas que já foram exaustivamente testadas;
·
usuários sofisticados: são
usuários que estão familiarizados com o SGBD e realizam consultas complexas.
Os analistas determinam os requisitos dos usuários finais e
desenvolvem especificações para transações que atendam estes requisitos, e os programadores
implementam estas especificações como programas, testando, depurando,
documentando e dando manutenção no mesmo. É importante que, tanto analistas
quanto programadores, estejam a par dos recursos oferecidos pelo SGBD.
No processamento tradicional de arquivos, cada grupo de
usuários deve manter seu próprio conjunto de arquivos e dados. Desta forma,
acaba ocorrendo redundâncias que prejudicam o sistema com problemas como por
exemplo o fato de que toda vez que for necessário atualizar um arquivo de um
grupo, então todos os grupos devem ser atualizados para manter a integridade
dos dados no ambiente como um todo.
A redundância desnecessária de dados levam ao armazenamento excessivo de informações, ocupando espaço que poderia estar sendo utilizado com outras informações.
Os primeiros bancos de dados basearam-se no modelo de redes
ou no modelo hierárquico.
No modelo de rede, os dados são representados por coleções
de registros e os relacionamentos entre dados são representados por ligações.
Cada registro é uma coleção de atributos, cada um dos quais contendo apenas um
valor de dado. Uma ligação é uma associação entre precisamente dois registros.
O modelo hierárquico caracteriza-se pela representação dos
dados através de uma coleção de árvores e os relacionamentos também são
relacionados por ligações. Um registo é similar ao modelo de rede, que é uma
coleção de atributos, os quais contém apenas um valor de dado. Uma ligação,
assim como no modelo de rede, é uma associação entre dois registros.
Os bancos de dados orientados a objeto, começaram a se tornar comercialmente viáveis em meados de 1980. Eles integram a orientação a objeto com aptidões de banco de dados. Através de construções orientadas a objeto, os usuários podem esconder os detalhes da implementação de seus módulos, compartilhar a referência a objetos e expandir seus sistemas através de módulos existentes. A funcionalidade de banco de dados é necessária para assegurar o compartilhamento concomitante e a continuidade das informações da aplicação.
CORNACHIONE JR., Edgard B., Informática: Aplicáda as
áreas de Contabilidade, Administração e Economia, 3ª ed., São Paulo, Atlas,
2001, 219 – 232 p.
DESCONHECIDO. Banco de Dados, Acessado em 12/02/2003,
no endereço eletrônico: http://www.dba.hpg.ig.com.br/tcc/Cap2.htm
.
MEIRELLES. Fernando de Souza, Informática: novas
aplicações com microcomputadores, 2ª ed., São Paulo, Makron Books, 1994, 366 –
372 p.