CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO ENSINO MÉDIO INTEGRADO AO TÉCNICO EM INFORMÁTICA PARA INTERNET TLBD I Apostila - Parte I PROFª CÍNTIA PINHO CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Sumário 1. BANCO DE DADOS .................................................................................................................................4 1.1. Uma Definição ......................................................................................................................................4 1.1.1. Exemplos...............................................................................................................................................4 1.1.2. Base de Dados ......................................................................................................................................4 2. SURGIMENTO DO BANCO DE DADOS ...................................................................................................4 3. IMPORTÂNCIA DE UM BANCO DE DADOS ............................................................................................5 3.1. Dado .....................................................................................................................................................5 3.2. Informação ...........................................................................................................................................6 3.2.1. A Informação como Recurso da Empresa.............................................................................................6 4. OBJETIVOS .............................................................................................................................................6 5. INTRODUÇÃO ........................................................................................................................................7 6. Modelo Relacional de Banco de Dados.................................................................................................9 7. Arquiteturas ..........................................................................................................................................9 7.1. Plataforma Centralizada .......................................................................................................................9 7.2. Sistema de Computador Pessoal (PC)................................................................................................ 10 7.3. Arquitetura Cliente Servidor.............................................................................................................. 10 7.4. Arquitetura de Banco de Dados Distribuídos .................................................................................... 11 8. SGBD (Sistema Gerenciador de Banco de Dados) .............................................................................. 12 8.1. Processamento de dados com uso de SGBD ..................................................................................... 12 8.2. Principais Componentes de um SGBD ............................................................................................... 13 8.3. Características do SGBD .................................................................................................................... 13 8.4. Motivação para SGBDs ...................................................................................................................... 14 8.5. Exemplos de SGBD’S .......................................................................................................................... 14 9. ORGANIZAÇÕES BÁSICAS DE ARQUIVOS............................................................................................ 14 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 10. MODELAGEM DE DADOS ................................................................................................................... 15 10.1. Importância da Modelagem .............................................................................................................. 16 10.2. Princípios da Modelagem .................................................................................................................. 16 10.3. Modelo Entidade Relacionamento .................................................................................................... 16 10.3.1. Entidade ............................................................................................................................................. 16 10.3.2. Atributo ............................................................................................................................................. 17 10.3.3. Instância............................................................................................................................................. 18 10.3.4. Identificador (Chave Primária) .......................................................................................................... 19 10.3.5. Chave Secundária ou Chave Estrangeira ........................................................................................... 20 10.4. Dicionário de Dados........................................................................................................................... 20 10.4.1. Atividade – Enxergando Entidades .................................................................................................... 22 10.5. Relacionamentos ............................................................................................................................... 23 10.6. Identificação de Entidade e Relacionamento .................................................................................... 23 10.7. Grau de Relacionamento ................................................................................................................... 25 10.8. Cardinalidade ..................................................................................................................................... 26 10.8.1. Exemplo: Como Determinar as Cardinalidades de um Relacionamento .......................................... 26 10.8.2. Relacionamento de Um-para-Um...................................................................................................... 27 10.8.3. Relacionamento de Um-para-Muitos ................................................................................................ 28 10.8.4. Relacionamento de Muitos-para-Muitos .......................................................................................... 29 11. NORMALIZAÇÃO DE DADOS ............................................................................................................... 29 11.1. Primeira Forma Normal (1NF ) .......................................................................................................... 30 11.2. Segunda Forma Normal (2NF ) .......................................................................................................... 31 11.3. Terceira Forma Normal (3NF ) ........................................................................................................... 32 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 1. BANCO DE DADOS 1.1. Uma Definição É um conjunto de dados, relativos a um determinado ambiente, por exemplo, um empresa de fornecimento de energia elétrica, armazenados em um ou vários computadores e que guardam entre si algum relacionamento. 1.1.1. Exemplos Banco de Dados de Recursos Humanos de uma empresa; Banco de Dados de Aplicações Financeiras; Banco de Dados de uma empresa de energia elétrica. 1.1.2. Base de Dados É o conjunto de todos os dados de um determinado ambiente, estejam eles armazenados em computador ou não. Exemplo: Banco de Dados de Recursos Humanos + as correspondências expedidas e recebidas, pela empresa, e que estão guardadas nos armários de cada departamento. 2. SURGIMENTO DO BANCO DE DADOS Os fatores que levaram ao desenvolvimento dos bancos de dados foram: praticidade, rapidez, eficiência e confiabilidade. Podemos citar como exemplo de armazenamento de dados, que assemelha-se aos sistemas computacionais, os arquivos de aço, encontrado nas empresas, que armazenam fichas, pastas e outros documentos, organizados em gavetas. A necessidade de criar um meio computacional que permitisse armazenar grande quantidade de dados, de acesso rápido e facilitado, também teve sua evolução, dos inconvenientes que os sistemas de arquivos em disco possuíam: Não possuía controle de acesso concorrente (vários usuários); 4 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Não permitia executar mais de um processo ao mesmo tempo num mesmo arquivo de dados; A definição da estrutura do arquivo encontrava-se inserida no próprio aplicativo – os programas controlavam as tarefas de leitura e gravação – manutenção dos sistemas tornavam-se complexas; Inconsistências, redundâncias, dificuldades de acesso e isolamento dos dados; Problemas de segurança, relativo aos dados; Acesso ao arquivo era efetuado de forma direta pelo aplicativo – sistema; 3. IMPORTÂNCIA DE UM BANCO DE DADOS Estão presentes nos mais diversos setores; Muito utilizado atualmente, praticamente em todas as transações que realizamos em nosso dia-a-dia. As Transações envolvem dados ou informações, essas informações ou dados podem ser de nós mesmos, de outras pessoas ou organizações. Exemplo: Quando ligamos em um serviço de atendimento ao cliente, e o atendente pede um momento para verificar as informações, certamente estas informações estão armazenadas em algum banco de dados. Os Sistemas de Informações manipulam informações que estão armazenadas em banco de dados. Ou seja, os banco de dados alimentam os Sistemas de Informações. CONHECIMENTO (quando eu tenho o nº de informações satisfatórias, também de acordo com objetivos pré-estabelecidos, essas informações geram um nível de conhecimento pretendido). INFORMAÇÃO ( Quanto os dados são organizados, partindo de um objetivo, eles fornecem a informação desejada). DADOS ( por si só, não tem um valor significativo) significativorepresentativo Portanto tudo que iremos estudar nesta disciplina, é voltada para formar uma base para que o sistema de informação gere a possibilidade das pessoas obterem um maior conhecimento. 3.1. Dado Representação de um evento do mundo físico, de um fato ou de uma idéia 5 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Representação de uma propriedade ou característica de um objeto real Não tem significado por si só Ex.: quantidade de Kwh consumidos em uma residência. 3.2. Informação Organização e agregação dos dados, permitindo uma interpretação Informação interpretação dos dados Ex.: Consumo de energia comparado com a capacidade geradora da usina. Identificados Dados Organizados Agrupados Geram Informação Armazenados Recuperados 3.2.1. A Informação como Recurso da Empresa 4. OBJETIVOS Entender o que é um BANCO DE DADOS e as características de um sistema gerenciados de BANCO DE DADOS. Avaliar tecnicamente as propriedades dos BANCOS DE DADOS, qual a tecnologia que vou utilizar no meu desenvolvimento? 6 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 5. INTRODUÇÃO CONCEITO: um banco de dados é uma coleção de dados armazenados eletronicamente. Ex: Arquivos. Estes arquivos podem ser: Arquivos de Texto; Imagens; Músicas; Arquivos de Registros Estes arquivos é o que iremos estudar. Exatamente porque banco de dados são arquivos de registros relacionados a um determinado elemento ou entidade. Os dados em BANCO DE DADOS são gerenciados como uma única entidade: Estes dados estão agrupados e gerenciados como se fosse uma única unidade, na qual o sistema não trabalha com eles de forma independente, porque eles estão interligados de acordo com uma estrutura, portanto o sistema o visualiza como um único elemento contendo diversas informações. Uma vez acessando este banco de dados, na forma de usuário, podemos trabalhar com eles de forma independente de acordo com a estrutura de acesso única, definida para o BANCO DE DADOS. USUÁRIO Inserção Remoção Alteração Consulta DADOS Níveis de Interação entre o Usuário e o Banco de Dados 7 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO USUÁRIO APLICAÇÃO SGBD DADOS O usuário faz uma solicitação de dados para a aplicação, ou seja, ele não entra em contato direto com o arquivo de dados, ele faz isso através do seu aplicativo ou Sistema de Informação, este por outro lado faz uma chamada ao SGBD, que é o sistema Gerenciador de Banco de dados. A aplicação repassa estes valores que foram digitadas pelo usuário, através de uma rotina que o que o SGBD entenda assim, estes dados são repassados ao arquivo lógico de dados. O importante é que o usuário, não deve e não pode acessar diretamente os dados, porque quem mantém a integridade e gerencia o banco de dados é o SGBD, ele é quem garante que o banco de dados esteja em seu funcionamento normal. Por isso os usuários acessam as informações através de uma interface desenvolvida para ele, com permissões pré-determinadas, mantendo desta forma o BANCO DE DADOS seguro. Diferentes níveis de abstração USUÁRIO Armazena, recupera, altera, exclui e consulta os dados. Manipula, mantém e gerencia os dados. APLICAÇÃO SGBD Arquivo de registros DADOS Diferentes níveis fisicamente armazenados de de abstração forma eletrônica no HD. USUÁRIO Camada Externa APLICAÇÃO Camada Lógica SGBD Camada Física DADOS 8 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 6. MODELO RELACIONAL DE BANCO DE DADOS Trata a relação entre as entidades como se fossem conjuntos, estabelecendo que tipo de ligação existe entre as entidades. Bancos de dados relacionais apresentam um nível de flexibilidade muito grande no tratamento da informação. O sistema de computação que envolve banco de dados de evoluíram muito, de maneira a permitir que os dados tenham maior disponibilidade e facilidade de acesso, segurança, rapidez. Por isso existem arquiteturas diferenciadas, de acordo com a necessidade da organização. 7. ARQUITETURAS Plataforma Centralizada Sistema de Computador Pessoal (PC) Arquitetura Cliente Servidor Arquitetura de Banco de Dados Distribuídos 7.1. Plataforma Centralizada Existe um único banco de dados, manipulado, por exemplo, por um MAIN FRAME, é um tipo de computador mais antigo, que já caiu em desuso, mas é um exemplo de um computador com altíssimo poder de processamento, armazenamento e memória, ou seja, um computador com grande capacidade. Como funciona esta arquitetura: 9 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Os terminais que fazem o acesso dos usuários ao BD, se comunicam com o MAIN FRAME, e não precisam ter grande capacidade, pois fazem uso da capacidade do MAIN FRAME, desta forma, são chamados de terminais burros. 7.2. Sistema de Computador Pessoal (PC) Neste caso a aplicação possui o seu próprio BD em um único computador, ou seja, não busca os dados em uma rede ou em algum servidor. APLICAÇÃO BD 7.3. Arquitetura Cliente Servidor No Banco de Dados com a arquitetura Cliente Servidor, os termais possuem a aplicação do usuário, que remete os comandos e operações do usuário ao servidor central, e fazem operações de entrada e saída de dados, o cliente faz a solicitação e o servidor responde. Neste caso, tanto o cliente como o servidor possuem poder de processamento. 10 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 7.4. Arquitetura de Banco de Dados Distribuídos Neste caso, podem ter vários Bancos de Dados, que podem estar em computadores ou servidores diferentes e também uma série de clientes que podem acessar dados de qualquer servidor. Para isso é necessário o uso do SGBD, que será explicado posteriormente. S2 BD S1 BD S3 BD 11 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 8. SGBD (SISTEMA GERENCIADOR DE BANCO DE DADOS) Conjunto de software para gerenciar (definir, criar, modificar, usar) um BD e garantir a integridade e segurança dos dados. O SGBD é a interface entre os programas de aplicação e o BD. Em inglês é denominado DataBase Management System (DBMS). É um conjunto de dados associados a um conjunto de programas para acesso a estes dados. Cada programa dentro SGBD tem uma função, exemplos: acesso aos dados, armazenamento, exclusão, consulta etc. 8.1. Processamento de dados com uso de SGBD Os dados usados por uma comunidade de usuários são integrados no Banco de Dados. Cada informação é armazenada uma única vez, sendo que as eventuais redundâncias são controladas pelo sistema em computador, ficando transparentes para os usuários. 12 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 8.2. Principais Componentes de um SGBD Dicionário de dados (Data Dictionary): Descreve os dados e suas relações em forma conceitual e independente de seu envolvimento nas diversas aplicações. Fornece referências cruzadas entre os dados e as aplicações. Linguagem de definição de dados (DDL - Data Definition Language): Descreve os dados que estão armazenados no BD. As descrições dos dados são guardadas em um “meta banco de dados”. Linguagem de acesso (DML - Data Manipulation Language): Usada para escrever as instruções que trabalham sobre a base de dados, permitindo o acesso e atualização dos dados pelos programas de aplicação. Geralmente integrada com a DDL. Linguagem de consulta (QUERY): Permite que o usuário final, com poucos conhecimentos técnicos, possa obter de forma simples, informações do BD. Utilitários administrativos: Programas auxiliares para carregar, reorganizar, adicionar, modificar a descrição do BD, obter cópias de reserva e recuperar a integridade física em caso de acidentes. 8.3. Características do SGBD Autocontenção – armazenamento de dados e metadados(arquivos de descrição sobre os dados armazenados). Independência dos dados – os dados e metadados precisam ser mantidos independentes da aplicação que acessa o BD. Abstração – O usuário não precisa saber dos detalhes de como os dados são armazenados pelo SGBD. Por isso o SGBD abstrai estas informações. Visões – Limitações aos usuários, de acordo com sua função, para muitos usuários eles possuem acesso ao banco de dados apenas para consulta, ou seja, não podem fazer alteração de dados. Controle das transações – Garante a integridade do BD. Controle da concorrência – Faz o controle caso dois cliente tentem acessar o mesmo dado mesmo tempo. 13 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 8.4. Motivação para SGBDs A utilização dos SGBDs traz os seguintes problemas: É um produto caro; É um sistema a mais a ser aprendido e gerenciado; Ocupa espaço de armazenagem no computador. Porém traz vantagens muito maiores: Consistência de dados e independência de dados O SGBD é a ferramenta por excelência para promover a integração dos diversos componentes de um sistema de software; Concentram o maior potencial para promover aceso compartilhado de informação, sem bloquear desnecessariamente o acesso compartilhado; Retiram dos programas aplicativos muita da complexidade de gerenciamento de estruturas de acesso aos dados; Facilitam a proteção contra a perda de dados, através de recursos de backup; Promovem a adoção de padrões para toda a empresa, facilitando seu emprego. 8.5. Exemplos de SGBD’S Oracle; MySQL; Postgre SQL; SQL Server; Microsoft Access (porém não possui todas as características de um SGBD, como o controle de concorrência, a arquitetura cliente servidor não é completa, por isso é utilizados para aplicações de pequeno porte). 9. ORGANIZAÇÕES BÁSICAS DE ARQUIVOS Estruturas de Dados: define a forma como os dados estão organizados, como se relacionam e como serão manipulados pelos programas. Ex: vetores e matrizes, registros, filas, pilhas, árvores, grafos, etc. Arquivo: coleção de registros lógicos, cada um deles representando um objeto ou entidade. Na prática os arquivos geralmente estão armazenados na memória secundária (fitas e discos) e são usados para 14 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO armazenar os resultados intermediários de processamento ou armazenar os dados de forma permanente. Registro lógico (registro) : seqüência de itens, cada item sendo chamado de campo ou atributo, correspondendo a uma característica do objeto representado. Os registros podem ser de tamanho fixo ou de tamanho variável. Campo: item de dados do registro, com um nome e um tipo associados Bloco: unidade de armazenamento do arquivo em disco, também denominado registro físico. Um registro físico normalmente é composto por vários registros lógicos. Cada bloco armazena um número inteiro de registros. Chave: é uma seqüência de um ou mais campos em um arquivo Chave primária: é uma chave que apresenta um valor diferente para cada registro do arquivo. É usada para identificar, de forma única, cada registro. Chave secundaria: é uma chave que pode possuir o mesmo valor em registro distintos. É normalmente usada para identificar um conjunto de registros. Chave de acesso: é uma chave usada para identificar o(s) registro(s) desejado(s) em uma operação de acesso ao arquivo. 10. MODELAGEM DE DADOS Segundo Valença (2008), modelagem de sistemas, tanto a nível funcional quanto de dados, é um requisito fundamental para a obtenção de produtos de software de maior qualidade e confiabilidade. Entretanto, percebe-se que cada vez menos profissionais têm dado a atenção devida ao processo de construção de modelos de suas aplicações. Isso provavelmente se deve às pressões por sistemas em prazos cada vez mais curtos e com menores custos de produção mas, por outro lado, acaba por prejudicar – e muito – o entendimento correto do problema e, consequentemente, a construção do sistema que atenda às reais expectativas do usuário. Esta situação muitas vezes leva a sistemas de baixa qualidade, com elevada necessidade de modificação e de difícil manutenção. 15 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 10.1. Importância da Modelagem Um modelo é uma simplificação da realidade. Contruímos modelos para compreender melhor o sistema que estamos desenvolvendo. o Os modelos ajudam a visualizar o sistema como ele é ou como desejamos que seja. o Os modelos permitem especificar a estrutura ou o comportamento de um sistema. o Os modelos proporcionam um guia para a construção do sistema. o Os modelo documentam as decisões tomadas. Construímos modelos de sistemas complexos porque não é possível compreendê-los em sua totalidade. 10.2. Princípios da Modelagem A escolha dos modelos a serem criados tem profunda influência sobre a maneira como um determinado problema é atacado e como uma solução é definida. Cada modelo poderá ser expresso em diferentes níveis de precisão. Os melhores modelos estão relacionados à realidade. Nenhum modelo único é suficiente. Qualquer sistema não-trivial será melhor investigado por meio de um conjunto de modelos quase independentes. 10.3. Modelo Entidade Relacionamento O modelo Entidade-Relacionamento foi definido por Peter Chen em 1976. Segundo Chen, a visão de uma dada realidade, baseia-se no relacionamento entre entidades, os quais retratam os fatos que governam esta mesma realidade, e que cada um (ENTIDADE) pode possuir atributos (qualificações desta realidade) 10.3.1. Entidade Define-se entidade como aquele objeto que existe no mundo real com uma identificação distinta e com um significado próprio. É um elemento do mundo real inserida no mundo eletrônico. Exemplos: pessoas, carros, escolas etc. 16 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Para definir as ENTIDADES que irão participar do meu modelo de Banco de Dados, é necessário conhecer o Domínio (contexto de onde estou construindo toda a modelagem de um mundo real para o eletrônico). A representação gráfica de uma entidade no MER (Modelo Entidade-Reladionamento) se realiza através de um retângulo, com o nome desta entidade em seu interior, como mostra a figura. ENTIDADES CLIENTE PRODUTO FUNCIONÁRIO NOTA FISCAL EXEMPLO: DOMÍNIO ESCOLA ENTIDADES ALUNOS PROFESSORES TURMAS DISCIPLINAS NOTAS Cada ENTIDADE se relaciona com as outras dentro do domínio escola. A ENTIDADE pode ser definida por meio de suas características que podem chamar de ATRIBUTOS. Exemplo: Entidade PESSOA 10.3.2. Atributos: Nome CPF Idade Sexo Altura Peso, etc. Atributo É um dado associado a cada ocorrência de uma ENTIDADE ou de um RELACIONAMENTO. Os atributos permitem descrever uma ENTIDADE, no caso do exemplo acima sabemos que: o que descreve uma pessoa é o seu nome, CPF, idade, sexo etc. Toda entidade possui propriedade que são descritas por Atributos. No MER supõe que todas as instâncias de uma dada classe de entidade possuem os mesmos atributos. 17 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Considere a entidade FUNCIONÁRIO uma empresa. O que descreve Funcionário? Funcionário é descrito por: Número de mátricula Nome Data da admissão No DER os atributos PODEM ser representados por um circulo em torno de seu nome, como mostra a figura: TIPOS DE ATRIBUTO MONOVALORADO – Exemplo - Data de Nascimento – só pode receber um único valor, ou seja, uma pessoa só pode ter um único dia para o seu nascimento. MULTIVALORADO – Pode receber muitos valores. Exemplo: Cor preferida, pode receber valores diferenciados, como verde, vermelho, preto, etc. COMPOSTO – Exemplo – Endereço. Existem vários elementos que compões o mesmo atributo Endereço, como rua, nº, bairro, CEP, cidade, estado. DERIVADO – Seu valor é determinado com base em outro atributo. Exemplo: O atributo Idade pode ser definido pelo atributo data de nascimento. 10.3.3. Instância É uma ocorrência em particular de uma ENTIDADE. Exemplo: A Entidade Pessoa, pode ter como instância a pessoa João Carlos. 18 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 10.3.4. Identificador (Chave Primária) Conjunto de um ou mais atributos, cujos valores identificam de maneira unívoca uma ocorrência da ENTIDADE. Serve para localizar uma Instância em particular. Exemplo: para localizar a INSTÂNCIA do exemplo anterior João Carlos, posso utilizar como identificador o CPF, que é único desta pessoa, não existe duas pessoas com o mesmo CPF no Brasil. Este atributo IDENTIFICADOR é comumente chamado de Chave Primária. Características de uma Chave Primária : a - NÂO PODE haver duas ocorrências de uma mesma entidade com o mesmo conteúdo na Chave Primária b - A chave primária não pode ser composta por atributo opcional , ou seja , atributo que aceite nulo. c - Os atributos identificadores devem ser o conjunto mínimo que pode identificar cada instância de um entidade. d - Não devem ser usadas chaves externas. (Atributos sobre os quais você não tem controle. Ex: CPF) e - Cada atributo identificador da chave deve possui um tamanho reduzido f - Não deve conter informação volátil. COMO ESCOLHER O ATRIBUTO CHAVE? Para o exemplo citado acima, não é difícil escolher o atributo chave de uma pessoa, pode ser o CPF ou até mesmo o RG, porém algumas ENTIDADES, são pobres em atributos de Chaves. Exemplo: Por exemplo, em um Banco de Dados de uma Locadora, tem a ENTIDADE DVD. Neste caso, sabemos que podem existir vários filmes com mesmo título, gênero ou duração, por isso não posso escolher nenhum destes atributos como Chave Primária, por isso devo incluir o Atributo Código do DVD, desta forma todo o DVD que entra na locadora terá um código diferente. _DVD_ Título Duração Gênero Autor _DVD_ Cod DVD Título Duração Gênero Autor 19 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 10.3.5. Chave Secundária ou Chave Estrangeira Chave estrangeira (foreign key) é o campo que estabelece o relacionamento entre duas tabelas. Assim, uma coluna corresponde à mesma coluna que é a chave primária de outra tabela. Dessa forma, devese especificar na tabela que contém a chave estrangeira quais são essas colunas e à qual tabela está relacionada. O banco de dados irá verificar se todos os campos que fazem referências à tabela estão especificados. Determinar esse tipo de relacionamento fica garantida a integridade das informações. Os valores presentes nas colunas definidas como chave estrangeira devem ter um correspondente em outra tabela, caso contrário o bando de dados deve retornar uma mensagem de erro, assim as restrições de chave estrangeira identificam os relacionamentos entre tabelas e assegura que a integridade referencial seja mantida. Exemplo chaves estrangeiras do banco de dados LOCADORA: DVD Cod_DVD Título Duração Gênero Autor EMPRESTIMO Cod_Empr Chave Estrangeira Cod_Cli da tabela CLIENTE Data_Empr Valor_Total Chave Estrangeira da tabela DVD ITENS_EMPR Cod_Empr Cod_DVD Valor_unit l CLIENTE Cod_Cli Nome Telefone1 Telefone2 E-mail Chave Estrangeira da tabela EMPRÉSTIMO 10.4. Dicionário de Dados No processo de análise de sistemas um dos pontos fortes é o MER – Modelo de Entidade e Relacionamento, onde são definidas as entidades que irão compor o sistema e como elas irão relacionar-se. Junto com o modelo de Entidade e relacionamento, é necessário que se mantenha um documento com a explicação de todos os objetos nele criados. Este documento, que pode ser chamado de Dicionário de Dados, permite que os analistas obtenham informações sobre todos os objetos do modelo de forma textual, contendo explicações por vezes difíceis de incluir no diagrama. É válido lembrar que o objetivo do documento é ser claro e consistente. 20 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Exemplos: 21 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 10.4.1. 1) Atividade – Enxergando Entidades Identifique as Entidades, Atributos e Chaves Primária de uma clinica médica. Dados: Uma clinica médica precisa controlar as consultas médicas realizadas pelos médicos a ela vinculados, assim como acompanhar quem são os pacientes atendidos para manter o acompanhamento clinico dos mesmos. Em entrevista realizada para construção do sistema, nos foi informado que: Para cada médico a clínica mantém uma ficha com o número de CRM do médico, nome, endereço, telefone, especialidade etc; Para cada paciente existe um cadastro com os seus dados pessoais; Toda consulta é registrada em um fichário próprio com informações sobre Data, médico, paciente, diagnóstico etc. 22 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 10.5. Relacionamentos São associações particulares dentro de um conjunto. Definimos RELACIONAMENTO como o fato, o acontecimento que liga dois objetos, duas “coisas” existentes no mundo real. Nenhuma informação armazenada no Banco de Dados existe isoladamente. Todos os elementos pertencentes ao mundo real, de alguma forma está associado a outros elementos. Normalmente essas associações representam ações físicas ou alguma forma de dependência entre os elementos envolvidos. Relacionamento: é a associação entre Entidades. No DER, os relacionamentos são representados conforme mostra a figura: 10.6. Identificação de Entidade e Relacionamento Agora que já temos as definições de Entidades e de Relacionamento, vamos aprender como encontrá-los em um problema: CLIENTE FAZ EMPRESTIMOS SUBSTANTIVOS são as Entidades e os VERBOS são os Relacionamentos. Sendo assim tem-se: Desta frase, o que é Entidade e o que é relacionamento? Pode-se dizer que: Entidades: Cliente e Empréstimo. Relacionamento: Faz 23 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Considerando que estamos nos orientando para aplicações que serão desenvolvidas e administradas por um SGBD, poderíamos estender o conceito, principalmente para ambientes relacionais, como sendo relacionamento o fato que efetua a junção de duas ou mais tabelas de dados. Outra exemplificação de um relacionamento: Se temos dois objetos (no caso abaixo João e Maria), soltos no espaço, torna-se evidente, até este instante, a inexistência de qualquer ligação entre os dois objetos. Agora, na próxima figura, apenas com a inclusão de um verbo entre eles, passamos a contar com um contexto de mais expressividade, ou seja, temos um maior conhecimento do ambiente. As entidades do dia-a-dia não estão soltas, desligadas umas das outras, e sim relacionadas de forma a mostrar a realidade com um conteúdo lógico. Diariamente relatamos coisas do mundo real, e quando o fazemos, estamos na verdade expressando entidades e relacionamentos, senão vejamos: As pessoas Moram em Apartamentos; Os Apartamentos Formam Condomínios; Os condomínios Localizam-se em Ruas, ou Avenidas; As Avenidas e Ruas Estão em uma Cidade. 24 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO MER - MODELAGEM DOS OBJETOS ACIMA: Pessoas Formam Aptos Moram Condomínios Localizam-se Estão Cidade Ruas DIAGRAMA DE INSTÂNCIAS Quando existe o Relacionamento, deve ser especificado, qual aluno está relacionado à qual curso. No caso abaixo os Alunos 1 e 2 estão matriculados no Curso 1(pode ser de Matemática) e o Aluno 4 está matriculado no Curso 2(pode ser de História). Diagrama de Instâncias ALU1 ALU2 ALU3 ALU4 ALU5 ALU6 ENTIDADE ALUNO Relacionamento Matriculado CUR1 CUR2 CUR3 CUR4 CUR5 CUR6 ENTIDADE CURSOS 10.7. Grau de Relacionamento O grau de relacionamento indica quantos conjuntos de entidades estão envolvidos neste relacionamento. Exemplos: Binário: Relacionamento entre 2 entidades. Aluno Matriculado Curso 25 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Ternário: Relacionamento entre 3 entidades. Professor Aluno Matriculado Disciplina 10.8. Cardinalidade É o número (mínimo, máximo) de ocorrências de uma entidade relacionada a outra, ou seja, a quantidade de vezes que uma entidade pode está relacionada a outra. 10.8.1. Exemplo: Como Determinar as Cardinalidades de um Relacionamento Ternário Para determinar as Cardinalidades, por exemplo das Entidades ALUNO-PROFESSOR-DISCIPLINA, faça o seguinte: 1. Escolha uma Entidade, por exemplo ALUNO, e pergunte: Para cada Aluno, quantos pares ProfessorDisciplina eu tenho. 2. Coloque a resposta na Entidade ALUNO. Neste caso N. Isto é, um Professor lecionando uma Disciplina pode ter vários Alunos. 3. Escolhendo a Entidade PROFESSOR. Pergunta-se: Para cada Professor, quantos pares Aluno-Disciplina eu tenho. 4. Coloque a resposta na Entidade PROFESSOR. Neste caso 1. Isto é, um Aluno não pode ter em uma certa Disciplina mais do que um Professor. 5. Escolhendo a Entidade DISCIPLINA. Pergunta-se: Para cada Disciplina, quantos pares Aluno-Professor eu tenho. 6. Coloque a resposta na Entidade Disciplina. Neste caso N. Isto é, um Professor pode dar a um certo Aluno mais do que uma Disciplina. 26 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Outros Exemplos Domínio Escola: Turma 1 N Alunos Domínio Clube: Sócio 1 1 Dependente Domínio Escola: Disciplina M 10.8.2. N Aluno Relacionamento de Um-para-Um Neste grau de relacionamento, cada elemento de uma entidade relaciona-se com um e somente um elemento de outra entidade. No caso da figura abaixo, temos que uma ocorrência da entidade Homem relaciona-se com uma, e somente uma, ocorrência da entidade Mulher, pois o casamento no Brasil ainda é monogâmico. MULHER HOMEM CASADO •X •Y •Z •W A• B• C• D• Devemos ler o relacionamento nos dois sentidos em que se efetua. Logo leremos no caso da entidade Homem e da entidade Mulher, que um homem está casado somente com uma mulher e uma mulher está casada somente com um homem. SENTIDO DE LEITURA – IDENTICO RESULTADO = 1:1 HOMEM HOMEM 1 1 CASADO CASADO 1 1 MULHER MULHER 27 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 10.8.3. Relacionamento de Um-para-Muitos Este grau de relacionamento é o mais comum no mundo real, sendo o que denominamos de relacionamento básico entre entidades, entretanto possui características específicas, quanto ao sentido de leitura dos fatos e sua interpretação. Um elemento da entidade 1 relaciona-se com muitos elementos da entidade 2, mas cada elemento da entidade 2 somente pode estar relacionado a um elemento da entidade 1. Para ilustrar inicialmente este relacionamento, vamos nos deslocar até alguns países árabes, onde um homem é casado com muitas mulheres, mas a recíproca não é verdadeira, pois uma mulher é casada com um só homem. MULHER HOMEM CASADO •a •b •c •d •e •f A• B• C• D• SENTIDO DA LEITURA – RESULTADO = 1:N HOMEM HOMEM 1 1 CASADO CASADO N 1 MULHER MULHER Devemos ter como regra geral então, que um relacionamento é do tipo Um-Para-Muitos, quando um sentido de leitura dos fatos nos apresenta este grau de Um-Para-Muitos e o sentido oposto apresenta obrigatoriamente o grau Um-para-Um. 28 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO 10.8.4. Relacionamento de Muitos-para-Muitos Identifica-se esta cardinalidade pelo fato de que em ambos os sentidos de leitura encontramos um grau Um-para-Muitos. Cursa/Matricula Estudante Disciplina A• B• C• D• •X •Y •Z •W Um Estudante cursa várias disciplinas, apenas uma ou nenhuma. Uma disciplina é cursada por muitos estudantes, apenas um ou nenhum. Por isso além de ser um relacionamento N:M, ele também é considerado condicional. No caso de relacionamentos N:M, normalmente são geradas outras entidades, que possuem atributos que não pertencem a nenhuma das outras entidades. No exemplo acima pode ser gerado a Entidade Matricula, na qual pode conter atributos como Data de Matricula ou turma onde o aluno cursa a disciplina, além do cod. do estudante e do cod. Da matricula. 11. NORMALIZAÇÃO DE DADOS Normalização é um processo utilizado para acertar possíveis problemas estruturais das entidades e relacionamentos com campos criados – também chamados de anomalias – em um modelo de entidade e relacionamento. Consiste na análise dos atributos das entidades e relacionamentos com campos, sob o ponto de vista das regras chamadas formas normais, que descrevem, com base na teoria de conjuntos, na álgebra e no cálculo relacional, o que devemos ou não fazer nas estruturas das entidades e relacionamentos de nosso modelo, baseados em conceitos matemáticos. Essa análise pode demonstrar a necessidade de alterarmos a estrutura de nossas entidades e relacionamentos com campos, dividindo ou agrupando seus atributos para aprimorar o processo de recuperação das informações (performance) e seu armazenamento, de modo a evitar perda, redundância e distorção da informação. 29 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Sempre que formos obrigados pela aplicação das formas normais em nosso modelo a dividir entidades, temos que garantir que a divisão poderá ser revertida, isto é, que, mesmo particionada em duas ou mais entidades, uma entidade poderá voltar à sua formação original, por meio de operações de conjuntos. 11.1. Primeira Forma Normal (1NF ) Uma entidade está em Primeira Forma Normal, se e somente todos os seus atributos são atômicos, isto é, se contém um valor único (atômico) e não contém atributos multivalorados. Exemplo: Dada a entidade funcionário, definida com os atributos abaixo: Funcionario(codigo,nome,data_admissao,data_demissao,habilidades) Vemos que a entidade funcionario possui o campo multivalorado habilidades, o que não é permitido pela Primeira Forma Normal. Devemos então dividir a tabela funcionário de forma que o campo habilidades se torne uma nova entidade. Então teremos: Funcionario(codigo,nome,data_admissao,data_demissao) Possui(cod_funcionario,cod_habilidade) Habilidade(codigo,descricao) Exemplo: Fornecedor(codigo,nome,endereco,telefones) Vemos que a entidade fornecedor tem como atributo composto endereço e como atributo multivalorado telefones. Em relação ao atributo composto endereco, sabemos que o mesmo é composto, pois nele pressupõe-se incluir as informações de rua, complemento, bairro, cidade, estado e cep . Ou substituímos o atributo endereco por seus atributos componentes (rua, complemento, bairro, cidade, estado e cep ) ou criamos uma outra entidade com o nome do atributo composto (endereco), tendo como atributos dessa nova entidade rua, complemento, bairro cidade, estado e cep . 30 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Já o campo telefones, por estar no plural, indica que nele poderá ser armazenado mais de um número. Pela regra, esse atributo precisa ser separado em outra entidade, que pode ser chamada de telefone e que conterá os diversos números de telefone do fornecedor. Assim, temos: Fornecedor(codigo,nome,rua,complemento,bairro,cidade,estado,cep) Tendo como chave primária o atributo codigo. Telefone(cod_fornecedor,nro telefone) Tendo como chave primária os atributos cod_fornecedor e nro_telefone, já que isso garante que não será cadastrado o mesmo telefone para o forncedor e como chave estrangeira o atributo cod_fornecedor. Fornecedor(codigo,nome) Tendo como chave primária o atributo código. Endereco(cod_fornecedor,rua,complemento,bairro,cidade,estado,cep). Tendo como chave primária o atributo cod_fornecedor e como chave estrangeira o atributo cod_fornecedor. 11.2. Segunda Forma Normal (2NF ) Uma entidade encontra-se em Segunda Forma Normal se e somente estiver em Primeira Forma Normal e não tiver atributos com dependências parciais. No caso de uma chave primária composta, isto é, que possui mais de um atributo em sua composição, é denominada dependência parcial a dependência de um atributo não chave a apenas uma parte da chave primária. Tomemos como exemplo a tabela compra, descrita abaixo: Compra(nro_nf,cod_fornecedor,cod_produto,data,nome produto, quantidade,valor_unitario,valor_total_nota) Tendo como chave primária os atributos: nro_nf, cod_fornecedor, cod_produto 31 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Se analisarmos a dependência funcional teremos: nro_nf,cod_fornecedor data nro_nf,cod_produto quantidade nro_nf,cod_produto valor_unitario nro_nf,cod_fornecedor valor_total_nota cod_produto nome_produto Vemos agora que nem todos os atributos dependem da chave primária. O que não é permitido pela Segunda Forma Normal. Para que essa entidade fique em 2NF, teremos de desmembrá-la. Ela ficará assim: Compra(nro_nf,cod_fornecedor,data,valor_total_nota) Tendo como chave primária os atributos nro_nf cod_fornecedor e como chave estrangeira o atributo cod_fornecedor. Item_compra(nro_nf,cod_produto,quantidade,vl_unitario) Tendo como chave primária os atributos nro_nf e cod_produto e como chaves estrangeiras os atributos nro_nf e cod_produto. Produto(codigo,nome) Tendo como chave primária o atributo codigo. 11.3. Terceira Forma Normal (3NF ) Uma entidade está em Terceira Forma Normal se e somente estiver em Primeira e em Segunda Forma Normal e todos os atributos não chave dependerem funcionalmente da chave primária. Exemplo: Pedido(nro_pedido,data,cod_cliente,nome_cliente,ema i l_ cliente,valor_total_pedido) 32 CURSO: Ensino Médido Integrado ao Técnico em Informática para Internet COMPONENTE CURRICULAR: Tecnologia e Linguagens de Banco de Dados I _______ PROFESSORA: CÍNTIA PINHO Vamos verificar a dependência funcional dos atributos: nro_pedido data nro_pedido cod_cliente nro_pedido valor_total_pedido cod_cliente nome_cliente cod_cliente email_cliente Verificamos que os atributos nome_cliente e email_cliente não são dependentes da chave primária e sim do atributo cod_cliente. Será necessário então desmembrar a entidade pedido. Pedido(nro_pedido,data,cod_cliente,valor_total_pedido) Que terá como chave primária o atributo nro_pedido. Cliente(cod_cliente,nome_cliente,email_cliente) Que terá como chave primária o atributo cod_cliente. 33