Banco de dados relacionais


O que é um banco de dados? 
Antes da criação dos bancos de dados, na década de 50, as informações eram armazenadas em folhas de papel, que por sua vez eram separadas em pastas que eram guardadas em arquivos, também chamados de armários e geralmente metálicos. Esta forma de armazenamento ocupava bastante espaço e era custoso encontrar fichas mais antigas, sendo que o desafio da época foi a digitalização destas informações, pois o computador começou a ganhar espaço nas empresas, deixando de ter seu uso mais restrito aos meios acadêmico e militar. 
 Fazendo uma analogia, dentro da área de dados, estes objetos possuem nomes específicos: as folhas são chamadas de registros, as pastas de tabelas e os armários de arquivos.  
O primeiro de armazenamento de informações a surgir foi o sequencial, onde as informações eram armazenadas em fitas magnéticas, cartões perfurados etc, onde para ler um determinado registro, é necessário ler todos os registros desde o primeiro até encontrar o desejado. O método era bastante lento. 
Depois das fitas surgiram os discos, disquetes e HDs, onde não era mais necessário ler todas as informações para encontrar um determinado registro, pois eles possuem índices que podem ser lidos de forma direta, tornando a consulta muito mais rápida. Ficou conhecido como arquivo de acesso direto.  
Os bancos de dados são compostos por 4 partes: base de dados (dados propriamente ditos), sistema gerenciador, linguagem de exploração (acesso ao dado) e programas adicionais como gerenciamento de usuários.    
Modelo 
Os modelos são necessários para criar uma abstração do mundo real, ou seja, eliminar os detalhes e determinar um escopo delimitado. Nesta etapa, as decisões tomadas afetam o desempenho do banco de dados físico a ser construído. Um modelo mal construído levará a um banco de dados lento. E esses problemas gerados tendem a aumentar quanto maior o volume de dados armazenados. E quanto mais tardia a identificação destes problemas, maior a tendência de que seja mais difícil modificar para consertar. 
Trata-se de uma fase imprescindível, podendo-se comparar à construção de um prédio dispensando os trabalhos de um arquiteto. O profissional que desenvolve esta etapa geralmente é conhecido como arquiteto de dados ou analista de dados. O grande desafio na modelagem de dados é conseguir observar, aprender e ser capaz de reproduzir a realidade a ser modelada. Nesta etapa são realizadas entrevistas com usuário a fim de identificar suas reais necessidades. Resumidamente, modelar significa elaborar uma representação simplificada de um problema.  
Alguns modelos que já foram utilizados para realizar a modelagem: 
Abordagem Hierárquica 
Modelo mais antigo e foi muito popular nos anos 50 e 60. Os dados são organizados em hierarquias, ou árvores. Inicialmente foi utilizado pelo IMS da IBM. Alguns dos potenciais problemas são: atualizações custosas (inserções, modificações e exclusões) e propensão à redundância. Um exemplo seria procurar e atualizar o salário de um funcionário, sendo que para isso seria necessário primeiro acessar o departamento em que ele trabalha para depois acessar o registro.  
Abordagem em Rede 
Representa uma evolução do Modelo Hierárquico e utiliza grafos para eliminar redundâncias, ou seja, um nó filho pode estar vinculado a vários nós pais. Neste modelo não existem mais “raiz”, o percurso não se inicia sempre no mesmo ponto. Este modelo foi proposto inicialmente pelo DBTG. Os potenciais problemas deste tipo de banco de dados são a complexidade crescente das estruturas de grafos que podem comprometer o desempenho e a manutenção custosa de ponteiros.  
Abordagem Orientada a Objeto 
Proposta nos anos 90 e incorpora conceitos do Paradigma da Orientação por Objetos. Os dados residem em “objetos”, que possuem “métodos” e “propriedades”. Os objetos por sua vez se relacionam por composição ou herança. Esta abordagem não evoluiu, no máximo utilizou-se uma abordagem híbrida (objeto-relacional). 
Abordagem NoSQL 
Proposta em 1998, NoSQL significa “not only SQL” e representa uma alternativa à abordagem relacional. Seu uso foi motivado por startups que não tinham recursos para investir em grandes SDBDs. Possui uma imensa variedade de exemplos como Google BigTableFacebook e Dynamo (Amazon). 
Ex. Big Data 
Abordagem Relacional 
Foi proposta por Edgar F. Codd, um matemático pesquisador da IBM, em 1970 e é baseado em Entidades e Relacionamentos que vêm da teoria de conjuntos matemáticos. As redundâncias são resolvidas na etapa de Normalização e muitas vezes reduzem o desempenho, mas podem ser equilibrados. O projeto físico deriva de tabelas manipulados pela linguagem SQL, que é uma linguagem de consulta. Esta abordagem dominou o mercado durante 40 anos e ainda hoje é bastante relevante.   
O diferencial desta abordagem, é que ela possibilita caminhar pelas informações a partir de um dado desde de que tenham relações. Por exemplo: A partir do nome de um cliente é possível ter acesso ao seu endereço, às compras realizadas pelo cliente, a data das compras, suas preferências, a influência das compras no estoque.  
Modelagem relacional 
A modelagem relacional é baseada na teoria matemática de conjuntos. Sendo que os elementos de diferentes conjuntos podem ter relacionamentos. Por exemplo o conjunto 1 contendo como elementos os departamentos de uma empresa: engenharia, vendas, RH, financeiro e outros e o conjunto 2 contendo os funcionários da mesma empresa: João da Silva, Maria Aparecida, José de Sousa e outros. De forma geral, neste exemplo, cada funcionário se relaciona com um departamento, mas não existe essa obrigatoriedade. Além disso, podem existir departamentos sem relacionamento com nenhum funcionário ou ainda que um funcionário estivesse em mais de um departamento (não neste caso, mas não é necessário que cada elemento do conjunto 1 possua um correspondente no conjunto 2 e ainda, cada elemento dos conjuntos podem ter mais de 1 relação com os elementos do conjunto 2 e vice-versa). 
Cada um dos elementos dos conjuntos possui atributos. No exemplo, cada funcionário possui os atributos nome, data de admissão, salário, dependentes, CPF, endereço e etc. O que é comum a cada um dos elementos do conjunto é que possuam os mesmos atributos.   
Chaves 
Pode ocorrer de mais de um funcionário possuir o nome José, como saber qual registro se refere a cada um deles? Como contornar o problema? A resposta é que para garantir a unicidade dos elementos (tuplas), elegem-se um ou mais atributos como chaves. As chaves necessitam ser únicas para evitar duplicidade, neste caso, o nome não seria uma boa opção para chave. Uma melhor opção seria o número de matrícula, pois para cada novo funcionário é gerado um novo número. 
Chaves e relacionamentos 
O uso de chave viabiliza os relacionamentos, pois a chave do funcionário José (suponha que sua matrícula seja o número 100), também constará no conjunto de departamentos. Sendo assim, todas as vezes em que aparecer o número de matrícula 100 é possível saber com certeza que se trata do mesmo José do início dos exemplos. E ele pode estar relacionado com vários outros conjuntos, por exemplo conjunto de projetos da empresa. 
Para que serve um Modelo? 
O modelo de dados relacionais deve validar questões como a necessidade ou não de guardar informações, por exemplo se é relevante para o sistema responder à pergunta: quanto foi pago em salários no último ano? Para isso é necessário registrar todos os valores pagos mensalmente a cada funcionário. Outro exemplo seria: quem precisa tirar férias? Neste caso é necessário marcar as datas em que cada um dos funcionários tira férias. 
Terminologia 
Relação: conjunto de elementos únicos, exemplo cada funcionário do conjunto de funcionários; 
Atributo: elementos da relação, exemplo de atributos de funcionários: nome, salário, ramal e cargo. Podem ser de relação ou de um relacionamento; 
Relacionamento: elementos de uma relação podem de alguma maneira serem ligados a elementos de outra relação. Pode ser mandatório, por exemplo, um gerente necessita ter pelo menos um relacionamento, pois precisa existir um departamento para ser gerenciado para que seja um gerente. O relacionamento também pode ter atributos, por exemplo data de realização do curso, frequência, avaliação e outros; 
Cardinalidade: caracteriza o relacionamento. São de três tipos: 1x1, 1xn e nxn; 
Chave: atributo que não pode se repetir, determina a unicidade de uma tupla. Pode ser primária e candidata. A primária seria o número de matrícula e a candidata seria o CPF, que também não se repete. Pode ainda ser simples ou composta, simples com 1 atributo, composta com várias; 
Grau da relação: número de atributos da relação; 
Cardinalidade: número de tuplas; 
Tupla: linhas da relação, fatos únicos; 

SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de bancos de dados. Makron Books, 1999.

Comentários

Postagens mais visitadas deste blog

Como utilizar Tag Prefix WinCC Professional

TUTORIAL: Criando WinCC Tags a partir de documentos de texto utilizando script em Python

Utilizando interfaces, inversão de controle e injeção de dependências em programação - Um exemplo em C#