O projeto e normalização de bancos de dados é um pilar fundamental na gestão da informação, essencial para garantir a eficiência, integridade e consistência dos dados. Este processo envolve estruturar a informação de maneira lógica e física, otimizando seu armazenamento e acesso. Compreender seus princípios é crucial para estudantes e profissionais da área.
Fundamentos do Projeto de Bancos de Dados para Estudantes
Um banco de dados (BD) é um conjunto de dados inter-relacionados, enquanto um Sistema Gerenciador de Banco de Dados (SGBD) é o software que permite acessá-los e administrá-los. A importância do projeto e normalização de bancos de dados reside em evitar problemas como redundância, inconsistências e anomalias de atualização.
Os SGBDs utilizam dois tipos de linguagens: a Linguagem de Definição de Dados (LDD) para especificar o esquema (estrutura, relacionamentos, restrições) e a Linguagem de Manipulação de Dados (LMD) para recuperar, adicionar, modificar ou excluir informações. Os LMDs podem ser procedimentais (indicam o quê e como obter dados) ou não procedimentais (apenas quais dados são necessários).
Os objetivos-chave de um SGBD incluem:
- Controlar a concorrência: Evitar inconsistências quando múltiplos usuários acessam ou modificam o mesmo dado simultaneamente.
- Controle centralizado: Gerenciar dados e programas que os acessam.
- Facilitar o acesso a dados: Através de linguagens de consulta.
- Prover segurança: Impor restrições de acesso a usuários autorizados.
- Manter a integridade dos dados: Garantir que os dados respeitem as condições definidas e permitir a restauração em caso de falhas.
Níveis de Visão e Modelos de Dados
Para simplificar a interação com estruturas de dados complexas, os BDs são representados em três níveis de abstração:
- Nível de Visão: O nível mais alto, descreve uma parte específica do BD que um usuário deseja ver.
- Nível Lógico: Descreve o BD completo, indicando quais dados serão armazenados e seus relacionamentos, levando a estruturas mais complexas no nível físico.
- Nível Físico: O nível mais baixo, detalha como os dados são realmente armazenados, incluindo estruturas de baixo nível.
Um modelo de dados é um conjunto de ferramentas conceituais para descrever dados, sua semântica, relacionamentos e restrições. Dividem-se em:
- Modelos lógicos baseados em objetos: Usados nos níveis de visão e lógico, como o modelo Entidade-Relacionamento (ER) com entidades e atributos, e o modelo orientado a objetos.
- Modelos lógicos baseados em registros: Usados nos níveis lógico e físico, empregam estruturas de registro. Incluem o modelo hierárquico (estrutura de árvore), de rede (estrutura de grafo) e o modelo relacional (o mais utilizado, baseado em tabelas ou tuplas com colunas ou atributos).
Os usuários de bancos de dados são classificados em:
- Administrador de BD: Controle centralizado, define esquemas, concede direitos de acesso e estabelece restrições.
- Programadores de aplicações: Desenvolvem sistemas de software que interagem com o BD.
- Usuários sofisticados: Realizam consultas diretas ao BD com linguagens de consulta.
- Usuários especializados: Desenvolvem aplicações não tradicionais (Sistemas Especialistas, SIG).
- Usuários comuns: Utilizam sistemas desenvolvidos por outros, com acesso indireto.
Otimização do Armazenamento: Registros de Tamanho Fixo vs. Variável
Uma parte crítica do projeto e normalização de bancos de dados é o gerenciamento do espaço em disco. Os arquivos podem conter registros de tamanho fixo ou variável.
Registros de Tamanho Fixo:
- Cada registro ocupa um tamanho predefinido (ex., 314 bytes para um funcionário com campos Nome, Endereço, Documento, Idade, Observações).
- Vantagens: Facilita a entrada/saída de informações, e as operações de inclusão, exclusão e modificação são simples.
- Desvantagens: Pode haver um desperdício significativo de espaço se os campos não usarem toda a sua capacidade alocada (ex., de 314 bytes, apenas 124 úteis, o restante preenchido).
- Maior tempo de processamento ao transferir bytes inúteis.
Registros de Tamanho Variável:
- Utilizam apenas o espaço necessário para armazenar a informação, sem um tamanho predefinido a priori.
- Vantagens: Otimização do espaço em disco e redução do tempo de processamento ao transferir apenas dados úteis.
- Desvantagens: Requerem uma organização de arquivos diferente e algoritmos mais complexos para sua administração, já que a operação de leitura/escrita deve resolver a transferência caractere a caractere ou elemento a elemento.
Para gerenciar registros de tamanho variável, é necessário usar marcadores de fim de campo (ex. '#') e marcadores de fim de registro (ex. '@') para delimitar os elementos. O programador deve resolver de forma minuciosa as operações de adicionar e remover elementos.
Alternativas para Registros de Tamanho Variável
Existem variantes na implementação de registros de tamanho variável:
- Delimitadores de campo: Como visto, utilizam-se caracteres especiais para marcar o final de cada campo.
- Indicadores de tamanho: Antes de armazenar um campo ou registro, indica-se seu tamanho em bytes. Os bytes seguintes correspondem aos dados.
Exclusão e Recuperação de Dados em Bancos de Dados
O processo de exclusão permite remover informações de um arquivo. Historicamente, buscava-se recuperar espaço; hoje, com a informação como bem precioso, frequentemente ela é preservada em repositórios históricos.
Existem dois modos principais de exclusão:
- Exclusão Física: Apaga a informação e recupera o espaço físico. Isso mantém o arquivo em seu tamanho mínimo, mas pode impactar a performance devido aos rearranjos.
- Gerando um novo arquivo: Cria-se um arquivo sem os elementos a serem excluídos, copiando apenas os válidos. Isso implica ler o arquivo completo e escrever um novo.
- Utilizando o mesmo arquivo: Rearranjam-se os elementos dentro do arquivo existente. Um registro a ser excluído pode ser substituído pelo último registro válido, e a quantidade total de elementos é decrementada.
- Exclusão Lógica: Marca a informação como excluída sem recuperar o espaço físico. Isso é feito atribuindo um valor especial a um campo (ex., um campo
borradoouestado).
- Vantagens: Algoritmicamente mais simples e rápido, já que não requer rearranjos físicos.
- Desvantagens: Não libera espaço físico imediatamente, o que pode requerer um processo de compactação posterior.
Recuperação e Reatribuição de Espaço
Para recuperar espaço de exclusões lógicas ou físicas e reutilizá-lo, especialmente com registros de tamanho variável, devem-se considerar novas complexidades. Não basta dispor de um local, mas o local deve ter um tamanho suficiente para o novo elemento.
Utiliza-se uma lista invertida com um registro cabeçalho para dispor dos endereços livres dentro do arquivo, indicando a quantidade de bytes disponíveis em cada caso. O processo de inserção deve localizar o local mais adequado, seguindo estratégias:
- Primeiro ajuste: Selecionar o primeiro espaço disponível onde o registro caiba.
- Melhor ajuste: Selecionar o menor espaço onde o registro caiba.
A fragmentação ocorre quando registros de tamanho variável são inseridos e excluídos, deixando