Introdução a Banco de Dados e Access Edson Ifarraguirre Moreno Porto Alegre, maio de 2011 Baseado no material da professora Isabel Harb Manssour Roteiro 1. Conceitos Básicos de BD 2. Microsoft Access 3. Modelo Entidade-Relacionamento 4. Planejamento de Banco de Dados Conceitos Básicos de Banco de Dados Arquivos Permitem o armazenamento permanente de dados Dados persistentes Dispositivos de armazenamento secundários Armazenam arquivos Discos magnéticos, discos ópticos, fitas magnéticas Conceitos Básicos de Banco de Dados Campo (Field) Registro (Record) Conjunto de caracteres com o mesmo significado Exemplo: nome 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 Conceitos Básicos de Banco de Dados Ficha Nome: ____ Endereço: _____ Telefone: ______ CIC: ______ RG: _______ Registro Campos Campo Nome Registro Endereço Telefone CIC RG Ana Silva Andradas 34 332.56.35 345.565/9 271646252 João Neto Siqueira 34 353.46.54 454.567/8 456546568 Maria Santos Ipiranga 67 223.66.51 028.480/8 873260269 : : : : : Arquivo Conceitos Básicos de Banco de Dados 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 Conceitos Básicos de Banco de Dados Arquivo seqüencial Exemplo: Nome: João End: ____ Fone: ____ Válido: V Nome: Maria End: ____ Fone: ____ Válido: V Nome: José End: ____ Fone: ____ Válido: V Nome: Ana End: ____ Fone: ____ Válido: V Nome: Paulo E End: ____ O Fone: ____ F Válido: V Todos os registros possuem o mesmo tamanho e são armazenados seqüencialmente na memória Conceitos Básicos de Banco de Dados Arquivo seqüencial Pesquisa seqüencial Nome: João End: ____ Fone: ____ Válido: V Nome: Maria End: ____ Fone: ____ Válido: V Nome: José End: ____ Fone: ____ Válido: V Acesso direto Contar os bytes... Nome: Ana End: ____ Fone: ____ Válido: V Nome: Paulo End: ____ Fone: ____ Válido: V Nome: Rita End: ____ Fone: ____ Válido: V E O F Conceitos Básicos de Banco de Dados Arquivo de índice Consiste em um arquivo que guarda o campo chave e a posição do registro no disco Exemplo: E100 E101 Nome: João End: ____ Fone: ____ Válido: V Nome: Maria End: ____ Fone: ____ Válido: F E102 Nome: José End: ____ Fone: ____ Válido: V E103 Nome: Ana End: ____ Fone: ____ Válido: V E104 Nome: Paulo End: ____ Fone: ____ Válido: V E105 Nome: Rita End: ____ Fone: ____ Válido: V E O F Arquivo de Dados E Chave: Ana Chave: João Chave: José Chave: Maria Chave: Paulo Chave: Rita O Posição: E103 Posição: E100 Posição: E102 Posição: E101 Posição: E104 Posição: E105 F Arquivo de Índice Conceitos Básicos de Banco de Dados Arquivos de índice Permitem o acesso rápido às dados Vários podem ser criados Índice por nome Índice por idade Índice por telefone ... Conceitos Básicos de Banco de Dados 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 Conceitos Básicos de Banco de Dados 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 http://pt.wikipedia.org/wiki/Banco_de_dados Conceitos Básicos de Banco de Dados 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: Microsoft Access, Oracle, Sybase, etc. Roteiro 1. Conceitos Básicos de BD 2. Microsoft Access 3. Modelo Entidade-Relacionamento 4. Planejamento de Banco de Dados Microsoft Access 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 Microsoft Access 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 Microsoft Access 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 Microsoft Access Arquivos possuem extensão MDB Possui assistentes que facilitam a criação dos bancos de dados Microsoft Access Microsoft Access Microsoft Access Roteiro 1. Conceitos Básicos de BD 2. Microsoft Access 3. Modelo Entidade-Relacionamento 4. Planejamento de Banco de Dados Modelo Entidade-Relacionamento Banco de Dados Relacional Segue o Modelo Relacional Define maneiras de armazenar, manipular e recuperar dados estruturados unicamente na forma de tabelas Modelo Entidade-Relacionamento SGBD Relacional Exemplo de dados organizados na forma de tabelas: Tipo de Produto CodTipoProd DescrTipoProd 1 Computador 2 Impressora Produto CodProd DescrProd PrecoProd CodTipoProd 1 PC desktop modelo x 2500 1 2 PC notebook ABC 3500 1 3 Impressora jato de tinta 600 2 4 Impressora laser 800 2 Modelo Entidade-Relacionamento Arquitetura de um banco de dados relacional Entidades Atributos (coluna) Relacionamentos Restrições sobre relacionamentos Modelo Entidade-Relacionamento 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 Modelo Entidade-Relacionamento 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 Modelo Entidade-Relacionamento Relacionamentos Fato ou acontecimento que liga dois objetos do mundo real (ou duas entidades do modelo) Representação: nome Modelo Entidade-Relacionamento 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 Professor Curso possui ministra Disciplinas Modelo Entidade-Relacionamento Cardinalidade: é o número de objetos de cada tipo que participa no relacionamento Pode ser. 1:1 (um para um); 1:N (um para muitos); N:1 (muitos para um); M:N (muitos para muitos) Cliente Professor 1 M Compra ministra N N Item Disciplina Modelo Entidade-Relacionamento Exemplo 1: Aluguel N pertence Cliente 1 • um Aluguel pertence a no máximo um Cliente • um Cliente pode ter mais de um aluguel Exemplo 2: Fornecedor N fornece M Produto • um Fornecedor fornece vários Produtos • um Produto pode ser fornecido vários Fornecedores Modelo Entidade-Relacionamento 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 Modelo Entidade-Relacionamento 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 Modelo Entidade-Relacionamento Tipos de chave Chave estrangeira (FK - Foreign Key) 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: Chave primária Chave estrangeira Chave primária NumCliente Nome Endereço NumPedido NumCliente Quantidade Valor 1 2 5 R$ 25,00 1 Fulano Rua x 2 1 3 R$ 15,00 2 Beltrao Avenida y 3 2 2 R$ 10,00 Roteiro 1. Conceitos Básicos de BD 2. Microsoft Access 3. Modelo Entidade-Relacionamento 4. Planejamento de Banco de Dados Planejamento de Banco de Dados 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 diaa-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á. Planejamento de Banco de Dados 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. Planejamento de Banco de Dados 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 Planejamento de Banco de Dados 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). Planejamento de Banco de Dados 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 Planejamento de Banco de Dados 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. Planejamento de Banco de Dados 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 Planejamento de Banco de Dados Evitar informações repetidas Exemplo com uma tabela: Nome Endereço Bombeiros ABC Bombeiros ABC Bombeiros ABC Drogaria Jacó Av. Dr. Alberto Seavre, 620 Av. Dr. Alberto Seavre, 620 Av. Dr. Alberto Seavre, 620 Rua dos Amantes, 465/980 Rua dos Amantes, 465/980 Rua Leste, 108 Drogaria Jacó Pizza do Mile Telefone Data do Total do Pedido Pedido (011)3021-8542 10/02/2001 R$ 155,90 (011)3021-8542 12/02/2001 R$ 230,90 (011)3021-8542 20/02/2001 R$ 35,98 9978-7766 10/12/2000 R$ 34,90 9978-7766 10/02/2000 R$ 145,98 234-9922 20/02/2001 R$ 789,00 Planejamento de Banco de Dados Exemplo após normalizar: Tabela de Clientes Tabela de Pedidos Código do Cliente 1 2 3 Nome Endereço Telefone Bombeiros ABC Drogaria Jacó Pizza do Mile Av. Dr. Alberto Seavre, 620 Rua dos Amantes, 465/980 Rua Leste, 108 (011)3021-8542 9978-7766 234-9922 Código do Cliente 1 1 1 2 2 3 Data do Pedido Total do Pedido 10/02/2001 12/02/2001 20/02/2001 10/12/2000 10/02/2000 20/02/2001 R$ 155,90 R$ 230,90 R$ 35,98 R$ 34,90 R$ 145,98 R$ 789,00 Planejamento de Banco de Dados 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: Nome do Funcionário Endereço Telefone Filipe Soares Betina Romão R. 16, 221 R. da Ponte, 40 Estr. Oeste, 40 R. Guerra, 720 234-9888 01/01/2000 345-9099 03/10/1999 Nelson Gomes Marta Donato Data de Aula Treinamento Realizada 233-9888 10/11/2000 234-2322 10/10/2000 Horas de Crédito Liderança 3 Atendimento 2 ao cliente Atendimento 2 ao cliente Discurso 9 Público Passou Sim Sim Sim Não Planejamento de Banco de Dados 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. Planejamento de Banco de Dados 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 1 2 3 4 Nome do Funcionário Filipe Soares Betina Romão Nelson Gomes Marta Donato Endereço R. 16, 221 R. da Ponte, 40 Estr. Oeste, 40 R. Guerra, 720 Telefone 234-9888 345-9099 233-9888 234-2322 Planejamento de Banco de Dados Evitar dados redundantes Tabela Aula Código da Aula C1 C2 C3 Aula Créditos Liderança 3 Atendimento ao cliente 2 Discurso Público 9 Tabela Treinamento Código do Funcionário 1 2 3 4 Data Aula Passou? 01/01/2000 03/10/1999 10/11/2000 10/10/2000 C1 C2 C2 C3 Sim Sim Sim Não