Quando pensamos em um projeto de banco de dados, o primeiro grande objetivo é transformar em dados ou informações o que existe no mundo real do nosso usuário, em uma estrutura que suporte o atendimento a todas as necessidades futuras de informação que ele terá.
Nesta aula, você entenderá como se inicia um projeto de banco de dados e conhecerá o primeiro nível de uma Arquitetura de Banco de Dados que está mais próximo ao usuário, chamado de nível externo.
Neste momento, convido você a refletir um pouco sobre o mundo de projetos de Banco de Dados. Imagine quantos Sistemas existem, quantos projetos são desenvolvidos e como os Analistas/Desenvolvedores fazem para manter seus projetos dentro de um padrão mínimo que permita a todos trabalhar com o mesmo foco, mantendo uma uniformização que permita reproduzir as regras de negócios dentro do mundo dos computadores. Este é um grande desafio, pois temos que transformar algo que está em um mundo visual, que conhecemos, para o mundo dos dados. Pensando nisso, temos que relembrar o conceito de abstração que vimos na Lição 1.
Com a abstração buscamos trazer da realidade as características que utilizaremos dentro do sistema para atender às necessidades do nosso usuário. Para tornar essa abstração mais padronizada, em 1975, foi proposta uma arquitetura, utilizada até hoje, chamada Arquitetura de Banco de Dados ANSI/SPARC, que define quais são os níveis de abstração que devemos utilizar dentro de um projeto de banco de dados, respeitando todos os atores envolvidos no processo e a forma como estes enxergam a realidade dos dados, incluindo, nesses atores, os usuários, os desenvolvedores e os analistas de bancos de dados.
Como você já deve ter percebido, nós trabalharemos, então com três níveis de abstração dentro de um projeto de banco de dados: o primeiro chamamos de nível externo, que é aquele que define como o usuário visualiza o sistema, ou melhor, quais são as telas e os relatórios que o usuário terá, ou que ele quer dentro do sistema. O segundo, chamado de nível conceitual, é o que define a disposição das informações dentro do banco de dados, ou melhor, como as informações estarão organizadas. Por último, nós temos o nível interno, que define a maneira como os dados são, efetivamente, armazenados e quais os métodos utilizados para acessá-los.
Quando iniciamos um projeto de banco de dados, na grande maioria das vezes, consultamos o cliente, ou usuário do sistema, a pessoa que nos passará quais são as características que o sistema terá. É como se estivéssemos construindo uma casa nova, e o arquiteto precisasse fazer a planta dessa casa para que, depois, os engenheiros e os pedreiros conseguissem, efetivamente, construí-la. No momento em que o arquiteto está fazendo as entrevistas com a pessoa que o contratou para fazer o projeto, ele(a) faz diversas perguntas, buscando entender quais são os desejos e as necessidades que o(a) cliente tem em mente. Lembrando que, na maioria das vezes, esse cliente está sonhando com a sua casa, mas não tem o conhecimento técnico de como construí-la, não sabe qual é a necessidade de fundações, melhores materiais a serem utilizados, infraestrutura que deve ser providenciada, legislação aplicada etc.
No caso de desenvolvimento de sistemas de informação, temos problemas bem semelhantes, pois, em geral, o usuário conhece a sua empresa, suas regras de negócios e quais são seus problemas para obter informações dentro da realidade da sua corporação, o que chamaremos, tecnicamente, de “Realidade Nebulosa”. Utilizamos esta nomenclatura, pois sabemos que a realidade existe e faz parte do dia a dia do(a) nosso(a) contratante, porém extrair dele(a) estas informações e as validar demanda uso de alguns recursos que nos possibilitem criar modelos que sejam compreensíveis a todas as pessoas que estão envolvidas no projeto, que denominaremos “modelagem”.
Então, quando nos referirmos ao levantamento de dados junto aos usuários, a descrição das necessidades e o detalhamento das informações necessárias ou desejadas, diremos que estamos fazendo uma modelagem em nível externo.
O case te deixou intrigado(a)? Assista ao vídeo a seguir para conhecer um pouco mais sobre essa história:
Já falamos, anteriormente, em nossos desafios junto ao nível externo do sistema, ou do banco de dados, que é o nosso primeiro nível de trabalho, mas temos que pensar um pouco mais tecnicamente para conseguir entender o porquê de definirmos um padrão para desenvolvimento de projetos.
Você sabe que, hoje, temos, em nossas empresas, e também em nossa vida uma grande dependência dos dados e das informações. A cada dia, a agilidade em se obter informações aumenta, o que nos permite armazenar cada vez mais dados para extrair as informações, porém com todo este volume de informações, temos que conseguir extrair da realidade apenas o que é relevante para a nossa empresa ou para o nosso projeto.
Além disso, temos três tipos de atores diferentes que serão responsáveis pelo sistema: o usuário, os desenvolvedores e os administradores de banco de dados. É importante lembrar que cada um deles tem uma linguagem técnica diferente. Imagine se a cada nova necessidade tivéssemos que reescrever todo o nosso projeto?
Pensando nisso, a arquitetura de dados definiu nove características que são seguidas por todos os fornecedores de SGBD (Sistemas Gerenciadores de Banco de Dados), que, como nós já vimos anteriormente, é o software que faz a gestão dos Bancos de Dados e que permite aos programas do computador, ou sistemas, fazer acesso a eles, mantendo os dados e os processamentos independentes. As características são:
1. Independência física: o nível físico, que conheceremos melhor nas próximas lições, pode ser alterado, independentemente, do nível conceitual, nosso próximo assunto. Isso significa que não aparecem ao usuário os componentes de hardware do banco de dados, e que se trata de uma estrutura transparente para representar as informações armazenadas.
2. Independência lógica: o nível conceitual deve ter a capacidade de ser alterado sem provocar mudanças no nível físico, ou seja, o administrador do banco de dados deve ser capaz de introduzir melhorias no sistema e nos processos de dados, sem afetar a experiência dos usuários e as informações que já são fornecidas pelo sistema.
3. Facilidade de uso: as pessoas que não estão familiarizadas com a estrutura do banco de dados devem poder descrever os seus procedimentos de consulta ou de extração de dados sem fazer referência aos elementos técnicos do banco de dados, ou, para entender melhor, podem utilizar linguagens de programação diferentes para acessar o Banco de Dados.
4. Acesso rápido: o sistema deve ser capaz de responder aos programas o mais rapidamente possível, independentemente da forma ou da linguagem que o programa esteja desenvolvido ou estruturado. Para isso, o Administrador de Banco de Dados, ou Analista, deve prover recursos de acesso otimizados aos dados, que reduzam o uso de recursos de processamento e agilizem a identificação e a recuperação dos dados solicitados.
5. Administração centralizada: o SGBD deve permitir que o administrador manipule os dados, insira elementos e verifique a sua integridade de maneira centralizada. Essa parece ser uma característica óbvia, mas temos que observar que podemos ter dados distribuídos por vários servidores (computadores) instalados em diversos locais pelo mundo. Desta forma, o SGBD deve possibilitar ao administrador gerenciar todo o Banco de Dados como se todos os dados estivessem, fisicamente, em um mesmo local.
6. Redundância controlada: o SGBD deve conseguir evitar a redundância de dados, ou melhor, evitar ter dados repetidos armazenados no Banco de Dados. Isso serve para minimizar a possibilidade de erros e para evitar o desperdício do uso de recursos do sistema. Para entender melhor, exemplificaremos: pense que você tem anotado em duas agendas o número do telefone de um cliente. Caso o cliente altere o número de telefone, será necessário que você se lembre de alterar nas duas agendas, pois, caso contrário, você sempre terá dúvidas sobre qual é o número de telefone correto do cliente e terá que ligar para ambos os números para confirmar. Caso seja necessário manter a anotação dos dois números de telefone (antigo e novo), você deve criar algum tipo de controle para esse dado, como data de modificação. Desta forma, você saberá que o mais novo é o número de telefone válido.
7. Verificação da integridade: quando fazemos referência à integridade de dados, temos como principal objetivo manter a confiança dos dados armazenados. O maior desafio, nesse caso, é lembrar que os dados estão sempre interligados e, portanto, não podem ser apagados de forma irresponsável, pois podem impossibilitar a recomposição da informação. Para compreender melhor, consideraremos que temos, em nosso Banco de Dados, a informação de todas as cidades do Brasil, e estas cidades estão vinculadas a um Estado, ou Unidade da Federação. Temos, então, cadastrado que Maringá, Curitiba e Foz do Iguaçu pertencem ao Estado do Paraná, assim como Porto Alegre, Caxias do Sul e Uruguaiana pertencem ao Estado do Rio Grande do Sul. Agora, imagine que uma pessoa acesse o Banco de Dados e apague apenas o registro do Estado do Paraná. Quando outra pessoa for montar alguma informação sobre Maringá, por exemplo, não conseguirá saber a qual Estado essa cidade pertence, pois perdemos a referência do relacionamento entre o Estado, Paraná, e as suas cidades, logo, perdemos a integridade dos nossos dados e não podemos confiar mais neles.
8. Compartilhamento dos dados: o SGBD deve permitir que vários usuários acessem, simultaneamente, o banco de dados. Devemos lembrar que várias pessoas consultam ou alteram os dados ao mesmo tempo, então, o SGBD deve ser capaz de garantir que os dados mostrados para o(a) usuário(a) são atualizados e idênticos para todos. Para facilitar o entendimento, pense que você está fazendo uma consulta no Google e que outras pessoas, ao redor do mundo todo, com certeza, também estão fazendo consultas. Se uma pessoa apenas alterar qualquer dado, esta alteração deve ser apresentada de forma idêntica a todos os usuários, simultaneamente.
9. Segurança dos dados: o SGBD deve possibilitar a administração de direito de acesso aos dados de cada usuário, ou melhor, o(a) administrador(a) de banco de dados, ou analista, deve ter condição técnica de identificar qual é o tipo de dado que cada usuário pode ver ou alterar. Seria como se o valor do salário pessoal somente pudesse ser visto pelo(a) funcionário(a) e pela equipe de Recursos Humanos, mas não fosse acessível a outras pessoas, garantindo, assim, a privacidade desse dado. Além disso, somente a equipe de Recursos Humanos poderia fazer alteração no valor do salário, não sendo permitido que a pessoa alterasse seu próprio salário.
Agora que entendeu quais são as características que devemos observar, entenderá, efetivamente, o que precisamos registrar, ou levantar, no nível externo, junto ao usuário.
Para entendermos melhor, veja a figura a seguir:
Podemos observar que, neste modelo, o Analista observa a Realidade Nebulosa, que é onde estão todas as necessidades do cliente, e organiza as ideias em um modelo de alto nível, ou que representa o nível externo, que denominaremos aqui de minimundo, pois extrai uma porção da realidade que está sendo observada. O minimundo pode ser uma porção única, ou, ainda, pode ser subdividida, dependendo da complexidade da realidade do(a) nosso(a) cliente. A esse minimundo, ou às partes dele, daremos o nome visão, que discutiremos mais profundamente nas próximas lições. Devemos considerar, também, que é a Realidade Nebulosa que, efetivamente, interagirá com o nosso Banco de Dados, atualizando seus valores e, a cada atualização, podemos dizer que o Banco de dados tem uma nova “fotografia” da Realidade Nebulosa. Ou seja, a cada atualização, o Banco de Dados descreverá o estado atual da realidade, por meio dos dados que estão armazenados nele.
O mais importante quando fazemos referência ao nível externo, é entender que, neste nível, buscaremos compreender toda a realidade dos dados e as informações que o(a) usuário(a) necessita a partir da visão do(a) usuário(a), ou melhor, buscaremos aprender sempre a partir da sua realidade.
Nas próximas lições, você entenderá melhor as outras duas camadas, ou níveis, que utilizaremos para desenvolver um projeto de Banco de Dados, que são os níveis Conceitual (junto com o nível Lógico) e o nível Físico (ou nível Interno), que será nossa estrutura de dados.
Ficou interessado(a) sobre esse tema? Clique no play a seguir e assista ao vídeo:
Nesta aula, conhecemos quais são os três níveis de abstração que envolvem um projeto de Banco de Dados e nos aprofundamos nas características principais do primeiro nível, que é o nível externo. Para fixar melhor o nosso conhecimento e compreender um pouco mais sobre o nível externo, buscaremos informações para criarmos um sistema. Para efeito de exercício apenas, desenvolveremos um sistema de agenda pessoal. Esse mesmo sistema nós utilizaremos nas próximas lições, portanto, nesse primeiro nível, que é o externo, apenas entenderemos as necessidades que um(a) usuário(a) tem em relação a este tema.
Na imagem apresentada, podemos observar a realidade nebulosa, ou mundo real, onde as pessoas podem agendar seus compromissos em agendas de papel. Este é o nosso nível externo, pois não está dentro do nosso banco de dados. Nesse nível, na função de analista, temos que observar quais são as informações necessárias para, no nível conceitual, começarmos a projetar nosso Banco de Dados.
Podemos, então, observar que temos, os seguintes dados:
1) Compromisso: que tem um título, uma data, um horário, um local, que pode ser físico, ou pode ser um link para um ambiente de Internet.
2) Dados das pessoas que participarão: podemos observar que, nesta parte, temos o nome de duas pessoas, com o número do seu celular/telefone, e, no primeiro nome, temos, ainda, uma anotação de Whatsapp. Ambos têm um endereço de email, que sempre é necessário caso a reunião seja virtual.
3) Em uma terceira área, temos os temas que serão tratados na reunião.
4) Atividades a fazer, aquelas que devem ser desenvolvidas antes da reunião.
Pronto, montamos a nossa abstração em nível externo para o Sistema de Agenda. Em nossa próxima lição, continuaremos com o nosso exemplo, evoluindo para o nível Conceitual.
ELMASRI, R.; NAVATHE, S. B. Sistemas de Banco de Dados. 7. ed. São Paulo: Pearson Education do Brasil, 2018.
MACHADO, F. N. R.; ABREU, M. Projeto de Banco de Dados, uma visão Prática. 11. ed. São Paulo: Editora Érica, 2014.