Roteiro Introdução a Banco de Dados e Access Isabel Harb Manssour. Conceitos Básicos B de Banco de Dados. 3. 4. Porto Alegre, maio de 007 Baseado no material das professoras Miriam Sayão, Adriana Beiler e Elisa Boff Arquivos Permitem o armazenamento permanente de dados Dados persistentes Dispositivos de armazenamento secundários Armazenam arquivos Discos magnéticos, discos ópticos, fitas magnéticas Campo (Field) Conjunto de caracteres com o mesmo significado Exemplo nome Registro (Record) Conjunto de campos relacionados Exemplo nome, endereço, idade, telefone de uma pessoa Representado por uma instância de uma classe Arquivo (File) Conjunto de registros relacionados Exemplo informações sobre um grupo de pessoas Registro Campo Nome Ana Silva João Neto Ficha Nome Endereço Telefone CIC RG Siqueira 34 Maria Santos Ipiranga 67 Endereço Andradas 34 33.56.35 353.46.54 3.66.5 Telefone Registro Campos 345.565/9 454.567/8 08.480/8 CIC RG 76465 456546568 8736069 Arquivo Arquivo seqüencial Todos os registros estão organizados na forma de uma lista, um depois do outro. Os registros podem estar dispostos ordenadamente, obedecendo a seqüência determinada pela chave primária. É possível incluir, excluir, alterar e consultar os registros.
Arquivo seqüencial Exemplo Nome João Nome Maria Nome José Nome Ana Nome Paulo E O F Arquivo seqüencial Nome João Pesquisa seqüencial Nome Maria Nome José Nome Ana Nome Paulo Nome Rita E O F Todos os registros possuem o mesmo tamanho e são armazenados seqüencialmente na memória Arquivo de índice Nome João Consiste em um arquivo que guarda o campo chave e a posição do registro no disco Exemplo E00 E0 E0 E03 E04 E05 Nome Maria Válido F Nome José Nome Ana Arquivo de Dados Nome Paulo Nome Rita E O F Arquivos de índice Permitem o acesso rápido às dados Vários podem ser criados Índice por nome Índice por idade Índice por telefone... E Chave Ana Chave João Chave José Chave Maria Chave Paulo Chave Rita O Posição E03 Posição E00 Posição E0 Posição E0 Posição E04 Posição E05 F Arquivo de Índice Programas que trabalham com arquivos devem permitir Incluir, excluir, consultar e alterar registros Incluir novos campos nos registros Excluir campos dos registros Gerar listagens com diferentes ordenações Banco de Dados (ou base de dados - BD) Conjunto de arquivos relacionados Dados com uma estrutura regular que organizam a informação Normalmente agrupa informações utilizadas para um mesmo fim. Exemplo folha de pagamento, controle de estoque, controle de contas
SGBD - Sistema Gerenciador de Banco de Dados Conjunto de programas cujo objetivo principal é gerenciar o acesso e a correta manutenção dos dados armazenados no banco de dados Exemplos, Oracle, Sybase, etc. Roteiro.. 3. 4. Microsoft Office Access (MSAccess) Sistema relacional de administração de banco de dados. Incluído no pacote Microsoft Office Professional. Permite o rápido desenvolvimento de aplicações que envolvem Modelagem e estrutura de dados Interface a ser utilizada pelos usuários Trabalha com os seguintes objetos Tabela armazenamentos dos dados. Consulta filtro sobre os dados armazenados nas tabelas. Formulários como um formulário em papel que se preenche a mão. Relatório Informação que foi organizada e formatada Meio de recuperação e apresentação dos dados Trabalha com os seguintes objetos Macro Executa automaticamente uma tarefa ou uma série de tarefas Tarefa=ação Módulo Procedimentos e funções que são escritos em uma linguagem chamada de ACCESS BASIC, e que podem ser chamadas dentro de uma consulta, de um formulário ou de um relatório Arquivos possuem extensão MDB. Possui assistentes que facilitam a criação dos bancos de dados.
Roteiro.. 3. 4. Banco de Dados Relacional Segue o Modelo Relacional Define maneiras de armazenar, manipular e recuperar dados estruturados unicamente na forma de tabelas SGBD Relacional Exemplo de dados organizados na forma de tabelas Produto CodProd Tipo de Produto CodTipoProd PC notebook ABC 4 Impressora laser DescrProd PC desktop modelo x 3 Impressora jato de tinta DescrTipoProd Computador Impressora PrecoProd 500 3500 600 800 CodTipoProd
Arquitetura de um banco de dados relacional Entidades Atributos (coluna) Relacionamentos Restrições sobre relacionamentos Entidades Representam pessoas ou objetos que existem no mundo real, e sobre os quais queremos guardar informações Exemplos funcionário, obra, máquina, aluno Representação nome da entidade Atributos Representam características ou informações das entidades ou dos relacionamentos Exemplos para entidades Funcionário nome, matrícula, data de admissão, número da carteira profissional Obra responsável, data de início, custo previsto Máquina material, tipo, responsável, custo Aluno nome, matrícula, curso, situação Relacionamentos Fato ou acontecimento que liga dois objetos do mundo real (ou duas entidades do modelo) Representação nome Diagrama de Entidade-Relacionamento (DER) Utilizado para Interagir com o usuário Definir depósitos permanentes de dados Focalizar relacionamentos entre entidades, tabelas ou arquivos Cliente Compra Livro Curso possui Cardinalidade é o número de objetos de cada tipo que participa no relacionamento Pode ser. (um para um); N (um para muitos); N (muitos para um); MN (muitos para muitos) N Cliente Compra Item Professor ministra Disciplinas M N Professor ministra Disciplina
Exemplo Aluguel N pertence Cliente um Aluguel pertence a no máximo um Cliente um Cliente pode ter mais de um aluguel Exemplo N Fornecedor fornece M Produto Chave Usada para identificar linhas e estabelecer relações entre linhas de tabelas Conjunto de um ou mais atributos que determinam a unicidade de cada registro Permite o relacionamento entre tabelas um Fornecedor fornece vários Produtos um Produto pode ser fornecido vários Fornecedores Tipos de chave Chave primária (PK - Primary Key) Apresenta um valor diferente para cada registro do arquivo Permite identificar um único registro no arquivo Identifica o registro desejado em uma operação de acesso a um arquivo, facilitando a sua recuperação Um campo pode ser escolhido como chave primária Exemplo código de um funcionário Tipos de chave Chave estrangeira (FK - Foreign Key) Chave primária NumCliente Coluna ou combinação de colunas cujos valores aparecem necessariamente na chave primária de outra tabela Define um relacionamento entre as tabelas e pode ocorrer repetidas vezes Exemplo Nome Fulano Beltrao Endereço Rua x Avenida y Chave primária NumPedido 3 Chave estrangeira NumCliente Quantidade 5 3 Valor R$ 5,00 R$ 5,00 R$ 0,00 Roteiro.. 3. 4. Com um BD você não pode fazer muitas experiências na base da tentativa e erro. Antes que você crie seu BD, deverá fazer as seguintes perguntas Quais dados eu desejo armazenar, e qual é a melhor maneira de organizá-los? Isso determina as tabelas que você precisará. Quais as ações de entrada de dados eu realizo no dia-a-dia de minha empresa? Isso determina os formulários de que você precisará. Quais informações eu quero saber sobre o estado da empresa? Essa resposta indica que relatórios e consultas você desejará.
Determinando as tabelas Tecnicamente, você só precisa de uma tabela, o mínimo para que um banco de dados funcione. Mas o maior erro que a maioria das pessoas comete é colocar muitas informações em uma única tabela. O Access é um programa de gerenciamento de banco de dados relacional ele trata de muitas tabelas e cria relacionamentos entre elas. Por exemplo, em um banco de dados que registra pedidos de clientes, você pode ter as seguintes tabelas Clientes Métodos de Entrega Vendedores Pedidos Produtos Detalhes do Pedido Planejar as tabelas antes de criar seu banco de dados é importante. É difícil mudar a estrutura de uma tabela depois que ela estiver preenchida com dados (mas não impossível). Normalização dos dados torna as tabelas o mais eficientes e compactas possíveis, para eliminar a possibilidade de confusão e erro. Algumas regras, chamadas regras de normalização, governam o modo como um BD deve armazenar suas tabelas Evitar informações repetidas. Evitar dados redundantes. Evitar informações repetidas Suponha que você queira manter informações de contato sobre seus clientes juntamente com um registro de cada transação que eles efetuarem. Se você mantivesse tudo em uma tabela, teria que repetir o nome completo do cliente, o endereço e o número de telefone toda vez que incluísse uma nova transação. Também teria que mudar o endereço em cada registro de transação para esse cliente. Evitar informações repetidas Uma maneira melhor é atribuir a cada cliente um número de código. Inclua esse número de código em uma tabela contendo nomes e endereços. Depois use o mesmo número de código como um vínculo em uma tabela separada que contenha as transações
Evitar informações repetidas Exemplo com uma tabela! "#$ % "#& & ' (*%(#'.-/-0 ----,3- () +*,- ' (*%(#'.-/-0 --- -,3- () +*,- ' (*%(#'.-/-0 ----,3 () +*,- %45 6(, 330 ----,3-3- %45 6(, 330 -----,3 3- &778# 69,- 033 ---- 3,-- Exemplo após normalizar Tabela de Clientes Tabela de Pedidos Código do Nome Endereço Telefone Cliente Bombeiros ABC Av. Dr. Alberto Seavre, 60 (0)30-854 Drogaria Jacó Rua dos Amantes, 465/980 9978-7766 3 Pizza do Mile Rua Leste, 08 34-99 Código do Cliente Data do Pedido Total do Pedido 0/0/00 R$ 55,90 /0/00 R$ 30,90 0/0/00 R$ 35,98 0//000 R$ 34,90 0/0/000 R$ 45,98 3 0/0/00 R$ 789,00 Evitar dados redundantes Suponha que você queira acompanhar quais funcionários freqüentam certas aulas de treinamento. Existem muitos funcionários e aulas. Uma forma seria manter tudo em uma única tabela Pessoal, da seguinte forma 6;! "#$ % (6# " #7 < )= &6 #+, 03 ----- 9! + > &, 03-33 --333 ( + - # #? @, 03 ---- ( + - # 8%?6, 0 ----- %6 3 > - &A'# Evitar dados redundantes E se um funcionário tiver mais de uma aula? Você teria de incluir uma linha duplicada na tabela para relacioná-lo e depois teria o problema descrito anteriormente vários registros com entradas de campo praticamente idênticas. E se o único funcionário que assistiu a uma determinada aula sair da empresa? Quando você excluir o registro desse funcionário, apagará também as informações sobre as horas de crédito da aula. Evitar dados redundantes Uma maneira melhor seria criar tabelas separadas para Funcionário, Aulas e Treinamento Realizado, da seguinte forma Tabela Funcionários Código Nome do Funcionário Endereço Telefone Filipe Soares R. 6, 34-9888 Betina Romão R. da Ponte, 40 345-9099 3 Nelson Gomes Estr. Oeste, 40 33-9888 4 Marta Donato R. Guerra, 70 34-3 Evitar dados redundantes Tabela Aula Código da Aula Aula Créditos C Liderança 3 C Atendimento ao cliente C3 Discurso Público 9 Tabela Treinamento Código do Data Aula Passou? Funcionário 0/0/000 C Sim 03/0/999 C Sim 3 0//000 C Sim 4 0/0/000 C3 Não