O que é Banco de Dados
Autor: Alexandre Dehon de Almeida Lima | Publicado: 2008-11-21T09:29:00-02:00

Banco de Dados é uma coleção de dados relacionados a um tópico ou propósito em particular (específico). Os registro de empregados em um arquivo, uma coleção de selos em um álbum, uma agenda com os nomes dos gerentes de vendas - cada uma dessas séries de dados é um banco de dados.  Para desenvolvermos qualquer tipo de projeto em banco de dados informatizado, faz-se necessário abordarmos:Arquivo: é um arquivo é um conjunto de registros e informações armazenadasexemplo:  o arquivo chamado controle de estoque, controle de conta corrente, controle bancário, ou simplesmente um controle de clientes ou de fornecedores. Registro: é um conjunto campos relacionados e armazenados em um registro.exemplo:  a ficha de um determinado cliente contendo a informações necessárias para um ambiente expecífico.Campo: é o conjunto de itens que um registro pode conter. exemplo: cada item de uma ficha ou registro, corresponde a um item, campo ou atributo.em um cadastro de clientes de uma empresa, podemos encontrar os seguintes campos:cpf, nome, endereço, cidade, bairro, estado, cep, ......Entidade e Conjuntos de Entidades Uma entidade é um objeto que existe e é distinguível dos outros objetos. Por exemplo, Silvia Maria com número do CPF 120.132.248-48 é uma entidade, visto que isto identifica unicamente uma pessoa particular no universo. Assim, a conta número 0018 401 850 de um Banco é uma entidade que identifica unicamente uma conta particular. Uma entidade pode ser concreta, como uma pessoa ou um livro, ou pode ser abstrata, como um feriado ou um conceito. Um conjunto de entidades ("entity set") é um conjunto com entidades do mesmo tipo. O conjunto de todas as pessoas com conta em um banco, por eemplo, pode ser definido como o conjunto de entidades cliente. Similarmente, o conjunto de entidades conta pode representar o conjunto de todas as contas de um banco particular.1. OBJETIVOS DOS SISTEMAS DE BANCO DE DADOS Considere parte de um banco que mantenha informações sobre todos os clientes e contas de poupança em sistemas de arquivos permanentes no banco. O sistema tem ainda uma quantidade de programas aplicativos que permitem ao usuário manipular os arquivos, incluindo:• Um programa para debitar ou creditar uma conta.• Um programa para adicionar uma nova consulta• Um programa para calcular o saldo de uma conta.• Um programa para gerar posicionamentos mensais.Estes programas aplicativos foram desenvolvidos por programadores em resposta às necessidades da organização bancária. Novos programas de aplicação são adicionados ao sistema à medida que as necessidades aparecem. Por exemplo, suponha que as novas regulamentações do governo permitam aos bancos de poupança oferecer contas correntes. Como resultado, novos arquivos permanentes são criados com informações sobre todas as contas correntes mantidas no banco, e novos programas podem ser necessários. Então, com certeza, mais arquivos e mais programas de aplicação são acrescidos ao sistema. O típico sistema de processamento de arquivos descrito anteriormente é suportado por um sistema operacional convencional. Registros permanentes são guardados  em diversos arquivos, e uma série de diferentes  programas aplicativos é escrita para extrair e adicionar registros no arquivo apropriados. Este esquema tem um grande número de desvantagens.• Redundância e inconsistência de dados. Uma vez que os arquivos e programas aplicativos são  criados por programadores diferentes durante um longo período de tempo, os arquivos provavelmente terão formatos diferentes e os programas serão escritos em diversas linguagens de programação. Além disso, o mesmo elemento de informação pode estar duplicado em diversos lugares (arquivos). Por exemplo, o endereço e o número do telefone de um cliente pode aparecer em um arquivo que contém registros da conta de poupança e um arquivo  que contém registros da conta corrente. Esta redundância leva a altos custos de armazenamento e acesso. Pode ainda levar a inconsistência de dados – o que significa que a várias cópias do mesmo dado podem ser  diferentes. Por exemplo, a mudança de endereço de um cliente pode ser efetuada num registro de conta corrente, mas não em qualquer outro lugar no sistema. Isto resulta em uma inconsistência de dados.• Dificuldade no acesso aos dados. Suponha que um dos diretores do banco necessite encontrar os nomes de todos os clientes que vivem numa rua da cidade com CEP 78733-000. O diretor pede ao departamento de processamento de dados que gere tal lista. Caso este tipo de solicitação não tenha sido antecipado quando o sistema original foi projetado, não há nenhum programa aplicativo disponível para fazê-lo. Existe, entretanto, um programa aplicativo para gerar uma lista de todos os clientes do banco. O diretor tem agora duas saídas: ou ele pega a lista de clientes e extrai a informação necessária manualmente, ou pede ao departamento de processamento de dados que um programador escreva o programa aplicativo necessário. Ambas as alternativas são obviamente insatisfatórias. Suponha que tal programa tenha sido de fato escrito e que, alguns dias mais tarde, o mesmo diretor necessite destacar da mesma lista apenas os clientes com um saldo de $10.000 ou mais. Como é de se esperar, um programa para gerar tal lista não existe. Novamente, o diretor tem duas opções, e nenhuma delas é satisfatória.O ponto aqui é que o ambiente convencional de processamento de arquivos não permite que dados necessários sejam recuperados de uma maneira conveniente e eficiente. Melhores sistemas de busca de dados precisam ser desenvolvidos para uso geral.• Isolamento de dados. Uma vez que os dados estão espalhados em diversos arquivos e podem Ter formatos diferentes, é difícil escrever novos programas aplicativos para recuperar os dados adequados.• Anomalias de acesso concorrente. Com a intenção de aperfeiçoar o desempenho geral do sistema e obter tempos de resposta mais rápidos, muitos sistemas permitem que múltiplos usuários atualizem os dados simultaneamente. Em tal ambiente, a interação de atualizações concorrentes pode resultar em dados inconsistentes. Considere uma conta bancária A, com $500. Se dois clientes sacarem dinheiro (digamos $50 e $100) da conta A ao mesmo tempo, o resultado das execuções concorrentes pode deixar a conta num estado incorreto (ou inconsistente). Em particular, a conta pode conter $450, em vez de $350. Com a intenção de prevenir esta possibilidade, algum tipo de supervisão deve ser mantido no sistema. Já que dados podem ser manipulados por diferentes programas aplicativos, que podem não Ter sido previamente sincronizados, sua supervisão pode ser muito difícil.• Problemas de segurança. Nem todo usuário do sistema de banco de dados deve ter acesso a todos os dados. Por exemplo, num sistema bancário, o departamento de pessoal necessita apenas de parte do banco de dados  que tenha informações sobre os diverso empregados do banco. Eles não necessitam Ter acesso a informação sobre as contas dos clientes do banco. Se os programas forem adicionados ao sistema de maneira arbitrária, é difícil assegurar tais restrinções de segurança.• Problemas de integridade. Os valores dos dados armazenados nos banco de dados precisam satisfazer certos tipos de restrinções de consistência. Por exemplo, o saldo de uma conta bancária não pode nunca cair abaixo de um valor predeterminado digamos $25). Estas restrinções são introduzidas no sistema adicionando instruções adequadas ao diversos programas aplicativos. Entretanto, quando novas restrinções são adicionadas, é difícil alterar os programas. O problema torna-se mais complicado quando as restrinçòes envolvem diversos itens de dados de arquivos.Essas dificuldades, entre outras, promoveram o desenvolvimento de sistemas  de gerenciamento de banco de dados. Nesse sentido, devemos ver os conceitos e algoritmos que foram desenvolvidos para sistema de banco de dados com vistas a resolver os problemas mencionados anteriormente.