Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
1 Centro de Computação e Tecnologia da Informação Modelagem de Banco de Dados Daniel L. Notari Helena G. Ribeiro Agosto - 2012 2 Conteúdo Programático (1/2) ● Introdução aos Sistemas de Banco de Dados – Banco de Dados – Gerência de Dados – SGBD – Arquitetura de Banco de Dados ● Modelagem Entidade-Relacionamento ● Modelo Lógico ● Normalização de Banco de Dados 3 Conteúdo Programático (2/2) ● Álgebra Relacional – Consulta baseada na teoria de conjuntos ● Projeto Físico de Banco de Dados – SGBD PostgreSQL – Manipulação de Esquemas – Manipulação de dados ● Linguagem SQL – Consultas – Visões 4 Livro Texto ● HEUSER, Carlos Alberto ● Projeto de Banco de Dados ● Porto Alegre 5 Banco de Dados - Introdução • INTRODUÇÃO • Surgimento e Evolução dos Bancos de Dados Utilização inicial dos computadores: • dados numérico • quantidade limitada • processamento serial • poucos recursos de programação • ênfase em algoritmos • dados cativos dos programas (segundo plano) 6 Banco de Dados - Exemplo Planilha Eletrônica GC D250 D500 D1000 P3 Nome S250 S500 S1000 0.404301 1.550346 2.178267 0.962607 1.527230E-06 -0.0158915 1.441921 1.532032 0.732808 0.593780 1.862869 2.534370 1.236893 3.845661E-06 -0.0246687 1.371953 1.387472 0.719663 0.592820 1.813819 2.426378 1.208882 3.520418E-06 -0.0231381 1.301741 1.349404 0.710608 0.497647 1.834696 2.427979 0.920974 1.168649E-06 -0.011112 1.430074 1.318752 0.797506 0.434774 2.190121 3.044996 1.196388 1.169521E-06 -0.0224146 1.499050 1.504284 0.700958 0.651216 1.374920 1.530161 0.658361 6.219282E-06 -0.029948 1.253902 1.277639 0.790516 0.353771 1.088610 1.350399 0.580717 1.950687E-06 -0.0163845 1.248574 1.276289 0.654815 Sn Acine.fasta Agro-tumefaciens.fasta Agro-tume-linear.fasta Ana-marginale.fasta Aqui-aeolicus.fasta Azoarcus.fasta Bacillus-anthracis.fasta 1danielM1 2mauriciaF1 3luisaF1 4rafaelM1 5leandroM2 6lucianoM4 7danielM3 8lucianaF4 9danielaF3 Arquivo com Registros 7 Banco de Dados - Exemplo Banco de Dados Biológico, parte do genoma humano >gi|50083297|ref|NC_005966.1| Acinetobacter sp. ADP1, complete genome GATATTTTATCCACAGCATGTGTGAAATCTTATCCACAAGTGGTGTGAATTTAAATTTATTGTGCGAGCG CTTCCTTTTTAAGCAAAATCAAGTGAATCTTTCATGACAGATGTGGATAACTTGGTTAGAATGGCGACCC CTTTCATCTGAGGGGGATGTTGTGGACTATTTTTGAATTTAAAACGGACAGGGGATTCACATGCTTTGGA CAGACTGCTTAACTCGCTTGCGACAAGAGCTATCTGATAACGTCTTTGCGATGTGGATTCGTCCTTTAGT AGCTGAAGAGACGACAGATAGTCTACGCCTGTATGCGCCGAACCCTTACTGGACGCGTTATATTCAGGAA CATCATCTTGAGTTGATCTCTATTCTGGTTGAACAACTTTCTGAAGGGCGGATTCGCCAGGTCGAAATTT TGGTTGACTCGCGTCCTGGTGCAATTTTATCCCCAGCAGAACAGCCAGCGACAACCACTGCTGCTCTGTC AAGTACACCAGTTGTACCTCAGCGCGTTAAAAAAGAAGTTGTCGAACCAGCAGCTACGCAAAGTAATAAA ATTTTAAATTCAAAAAAACGTTTACTTAACCCACTGTTTACCTTCTCATTGTTTGTCGAGGGCCGTTCTA ACCAGATGGCTGCTGAGACTTGCCGAAAAGTTTTAACTCAACTTGGTGCCTCCCAGCACAATCCTTTGTT TTTATATGGCCCGACAGGTTTAGGTAAAACTCACTTGATGCAGGCTGTGGGTAACGCATTACTTCAAGCC AAACCAAATGCACGTGTGATGTATATGACGGCAGAAAGTTTTGTACAGGATTTTGTGAGCTCGTTACAAA AAGGCAAGGTTGAAGAGTTTAAGAAAAACTGTCGTTCACTTGATCTACTTTTGGTCGATGACATTCACTT GCTGGCGGGTAAAGAAGCCAGTCTGGTCGAATTTTTCTATACCTTTAACGCCCTATTGGATGAATCTAAA CAGATTATTTTAACTTCAGACCGTTATCCAAAAGAATTAACCGAGCTGGATCCGCGTCTGGTGTCACGTT 8 Banco de Dados - Exemplo Banco de Dados em formato XML <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE artigo (View Source for full doctype...)> <artigo> <cabecalho> <titulo>Emprestimo FMI</titulo> <autor>Anonimo</autor> </cabecalho> <corpo> <introducao>O FMI ...</introducao> <paragrafo>Ontem, diversos ...</paragrafo> <paragrafo>O ministro da economia ...</paragrafo> <paragrafo>Alem disso, ...</paragrafo> <conclusao>Enfim, o Brasil ...</conclusao> </corpo> </artigo> 9 Banco de Dados - Resumo ● Banco de Dados – Planilha Eletrônica – Registro de arquivos – Banco de Dados Biológico – XML ● Todos estes formatos de arquivos permitem armazenar diferentes tipos de informação. ● Todos são considerados bancos de dados? ● O QUE ELES TEM EM COMUM? 10 Banco de Dados - Introdução ● As informações precisam ser gerenciadas. ● São armazenados em arquivos. ● Realizam operações semelhantes. ● Gerência de Dados: – Criação e exclusão do arquivo – Inserção, alteração e exclusão dos dados no arquivo – Consulta sobre os dados 11 Banco de Dados - Introdução •dados em maior volume • maior variedade • meios de maior capacidade •consultas mais complexas Evolução no uso e gerência de dados •Organizações físicas • índices, hashing, inversões • Operações próprias dos dados • consulta, atualização Sistema de Arquivos • Dados ainda cativos dos programas • Ênfase na economia de tempo e memória 12 Banco de Dados - Introdução • Conjunto de Dados • relacionados • compartilhados • Usuários on-line, batch computador computador P1 P2 Pn BANCO DE DADOS autonomia dos dados com relação aos programas 13 Banco de Dados - Introdução RESTRIÇÕES ADVINDAS DO USO Um banco de dadosbanco de dados é uma coleção de dados relacionados (Navathe, 2005) Um banco de dados é uma coleção de dados logicamente coerentes e com algum significado inerente. Um banco de dados é projetado, construído e populado com dados para um objetivo específico Um banco de dados representa algum aspecto do mundo real, algumas vezes chamado minimundo Pode ser mantido manualmente ou por máquina Um Sistema de Gerência de Banco de Dados (SGBD) é uma coleção de programas que permite aos usuários criar e manter um banco de dados • Definição: especificação dos tipos de dados • Construção: armazenamento dos dados, controlado pelo SGBD • Manipulação: consultas, atualização, geração de relatórios 14 Banco de Dados - Introdução SGBD • Conjunto de dados associado a conjunto de programas para acesso aos dados •Objetivo do SGBD: proporcionar um ambiente conveniente e eficiente para recuperação e armazenamento das informações do SGBD 15 Banco de Dados - Introdução SISTEMA DE BANCO DE DADOSSISTEMA DE BANCO DE DADOS Usuários / Programadores Programas de Aplicações e Consultas Software para processar consultas e programas Software para acesso aos dados armazenados SGBD Definição BD BD Sistema de Banco de Dados 16 Banco de Dados - Introdução Enfoque de banco de dados Natureza Auto Contida: • dados + meta-dados (catálogo) Isolamento entre Programas e Dados: • independência de dados e programa Abstração de Dados (Modelo de Dados): • representação conceitual dos dados (nível físico, lógico e de visão) • não inclui detalhes de armazenamento Suporte a Múltiplas Visões (view) dos dados: • Visão • subconjunto do banco de dados • pode conter dados virtuais, derivados dos dados do banco de dados, mas não armazenados. 17 Banco de Dados - Introdução Visão 1 Visão 2 Visão n ...... Nível de visão Nível lógico Nível físicoComo os dados estão armazenados Nível lógico Quais dados estão armazenados e os inter- relacionamentos entre eles 18 Banco de Dados - Introdução Usuários de um Banco de Dados Administrador do Banco de Dados: • responsável pelos dados, SGBD e programas relacionados • autorização de acesso, coordenação e monitoração do uso Projetista do Banco de Dados (Database Designer): • identificação de requisitos dos usuários • visão para cada usuário • integração das visões • escolha de estruturas apropriadas para armazenamento dos dados Usuário Final: • usuários ocasionais • usuários parametrizados • usuários sofisticados Analistas de Sistemas e Programadores de Aplicações 19 Banco de Dados - Introdução NOVAS PREOCUPAÇÕESNOVAS PREOCUPAÇÕES Segurança dos Dados Separação LÓGICO x FÍSICO • Esquema Interno • Esquema Conceitual • Esquema Externo Linguagens de definição e manipulação de dados Linguagens de Consulta mais poderosas, para “usuário final” Serviço Autônomo do BD” 20 Banco de Dados - Introdução NOVAS PREOCUPAÇÕES (cont.) Independência Lógica dos Dados: • Capacidade de mudar o esquema conceitual sem necessidade de modificar programas de aplicação e esquemas externos • Apenas definição de visões e mapeamentos devem ser alterados • Exemplo: Acrescentar um campo a um registro, acrescentar uma definição de tipo de registro Independência Física de Dados: • Capacidade de mudar o esquema interno sem necessidade de alterar o esquema conceitual (ou externos) • Exemplo: reorganização física de arquivos, criação de estruturas de acesso adicionais 21 Banco de Dados - Introdução • Redundância Controlada • Compartilhamento de Dados • Restrições de Acesso • Múltiplas Interfaces • Restrições de Integridade • Reestruturação em caso de falha NOVAS PREOCUPAÇÕES FUNÇÕES DE UM SGBDFUNÇÕES DE UM SGBD 22 Arquiteturas de banco de dados Arquiteturas de Sistemas de BD ● A arquitetura de sistemas de banco de dados é fortemente influenciada pelo sistema operacional sobre o qual o BD é executado e pelos aspectos da arquitetura de computadores (paralelismo, rede e distribuição): – Sistemas centralizados – Sistemas cliente-servidor – Sistemas paralelos – Sistemas distribuídos Sistemas Centralizados ●Executados sobre um único sistema computacional ●Podem ser divididos conforme o modo como os computadores são usados: ● Mono-usuário – computadores pessoais (uma única CPU, um ou mais discos rígidos, com um sistema operacional que pode dar suporte a apenas um usuário) ● Multiusuário – (número maior de discos rígidos e área de memória podendo ter diversas CPUs e um sistema operacional multiusuário). Atende a usuários conectados por meio de terminais. Sistemas Cliente-Servidor ●Sistemas centralizados servindo como servidores: ● Terminais substituídos por computadores pessoais (clientes) ●As funcionalidades de um SGBD podem ser superficialmente divididas em duas categorias : front-end e back-end: Interface SQL com o usuário Interface para o usuário Gerador de relatórios Interface gráfica back-end front-end Suporte a SQL Interface SQL + API Sistemas Cliente-Servidor ●Podem ser caracterizados como: ● Servidores de transações: Mais usados. Clientes enviam pedidos (SQL ou programas de aplicação) e o servidor executa a ação. ● Servidores de dados: cliente solicita a leitura e/ou atualização de dados. Proporcionam meios para indexação de dados. Usados em redes locais de alta velocidade entre cliente e servidor. Cliente e servidor com poder de processamento compatível. Back-end reforçado no cliente. ● Nota: servidores de transação são mais utilizados. Sistemas Paralelos ● Uso de diversas CPU´s e discos (compartilham memória e/ou disco) ● Sistemas que necessitam processar milhares de transações por segundo ● BD muito grande da ordem de terabytes ● Operações realizadas simultaneamente ● Granularidade: ● Grossa = poucos e poderosos processadores ● Fina = usa milhares de pequenos processadores ● Reduzem o tempo de resposta das transações (requerem SGBDs paralelos) ● Estratégia de paralelismo (1 consulta por processador, uma consulta particionada em vários processadores) P P P P M a) Memória Compartilhada P P P P M M M M b) Disco Compartilhado P P P P M M M M P P P P M P P P P MP P P P M c) Ausência de Compartilhamento d) Hierárquico Sistemas distribuídos ●BD armazenado em diversos computadores ●Comunicação por rede ou linha telefônica ●Computadores de sistemas distribuídos são conhecidos como nós ou sites ●Distribuição física e geográfica dos dados, administração separada e intercomunicação dos sites ●Sites podem acessar uns aos outros ●Esquema global comum (algumas partes em sites) ●Mesmo SGBD Sistemas distribuídos ●Distinção de transações (conjunto de operações que tem que ser executadas atômicamente) locais e globais: ● Locais = acessa um único site (no qual ela se inicia) ● Globais = acessa diferentes sites (ou outro diferente daquele que se inicia). ●OBS: Sistemas de BD distribuídos heterogêneos (compostos por diferentes SGBDs nos sites) Dificuldade de gerenciamento de transações globais Nota: sistemas de banco de dados distribuídos e cliente-servidor estão apoiados em redes de comunicação: Rede local – área geográfica restrita, processadores distribuídos; Rede de longa distância – grande área geográfica, processadores distribuídos. Rede Comunicação via rede Site A Site B Site C Sistema Distribuído Exercícios 1) O que é um banco de dados? Justifique. Cite exemplos. 2) Qual a diferença de um Banco de Dados para um Sistema de Arquivos? 3) Qual a diferença de um banco de dados para um sistema gerenciador de banco de dados? 4) A Casa de Vinhos XYZ está querendo armazenar os seus dados, para isto, defina os principais requisitos e defina o conjunto de dados principal envolvido. Agora, defina qual será a forma de armazenamento: sistema de arquivos, banco de dados ou um sistema gerenciador de banco de dados. Explique a sua escolha e o porque de não escolher as outras opções. Exercícios 5) Cite um exemplo de software que pode ser utilizado para cada um: sistemas centralizados, sistemas cliente- servidor, sistemas paralelos, sistemas distribuídos. 6) Enumere as principais diferenças entre o processamento de dados com arquivos convencionais e o processamento de dados com um SGBD. 34 Modelagem de banco de dados Banco de Dados = Dados + Modelo de Dados ● Um banco de dados pode ser definido como um conjunto de dados que segue um determinado modelo de dados. Alguns conceitos relacionados são: ● Modelo de Dados – responsável pela descrição dos dados ● Esquema do banco de dados – é um gráfico ou texto que especifica o modelo de dados (ou seja, descreve faz a descrição dos dados) ● Dicionário de dados - conjunto de arquivos que armazena o modelo de dados 36 Projeto de um Banco de Dados ● Realizado em duas fases: – Modelagem conceitual: necessidades de uma organização em termos de armazenamento de dados (independente da implementação). – Projeto lógico: transformação do modelo conceitual em modelo lógico. ● A seguir o modelo lógico é implementado no SGBD específico através de um projeto físico. 37 Modelo de (banco de) dados Descrição formal da estrutura de um banco de dados (tipos de informações que serão armazenadas) - descrito através de uma linguagem de modelagem de dados - descrito em diferentes níveis de abstração, para diferentes usuários (leigo, técnico, etc): - modelo conceitual - modelo lógico - modelo físico projeto de banco de dados 38 Modelo conceitual == modelo de dados abstrato, que descreve a estrutura de um banco de dados de forma independente de um SGBD particular Ex: modelo ER, modelo UML Modelo lógico == modelo de dados que representa a estrutura de dados de um banco de dados conforme vista pelo usuário do SGBD Modelo físico == contém detalhes sobre a representação interna das informações: Ex: modelo relacional, modelo a objetos, modelo hierárquico Ex: estruturas de índices, estruturas de arquivos, níveis de isolamento (otimização de performance) Modelos de banco de dados 39 Modelo conceitual ● Independente de implementação e SGBD ● Descrição mais abstrata do banco de dados (BD) ● É o ponto de partida para o projeto de um BD ● Técnica mais difundida é a abordagem entidade- relacionamento (Diagrama ER) 40 Modelo lógico ● Independente do SGBD ● Descrição do BD no nível dos usuários do BD (programadores, usuários que tem acesso direto aos dados do banco) ● Não apresenta detalhes do armazenamento interno das informações (estruturas de arquivo índices de acesso) 41 Modelo físico ● Descrição detalhada de como a base de dados está armazenada internamente ● Linguagens e notações para o modelo físico variam de produto a produto (SGBD) ● Produtos escondem o modelo físico 42 Modelo ER (Entidade-Relacionamento) 43 O modelo ER ● A abordagem ER foi criada por Peter Chen, em 1976; ● Modelo baseado na percepção do mundo real, representado através de um conjunto de objetos básicos chamados entidades e nos relacionamentos entre esses objetos; ● Conceitos centrais da abordagem ER: – Entidade, relacionamento, atributo – generalização/especialização, entidade associativa 44 Diagramas ER ● Um modelo ER é representado graficamente através de um Diagrama ER (DER) – Notação utilizada é a introduzida por Peter Chen ● Componentes: – Retângulos: representam entidades – Losangos: representam relacionamentos – Elipses ou pequenos círculos: representam atributos – Linhas: ligam atributos a entidades, entidades a relacionamentos e atributos a relacionamentos 45 Exemplo diagrama ER Departamento PessoaLotação Departamento PessoaLotação Nome Código Nome Endereço Cargo Salário Nome Código Nome Endereço Salário Cargo 46 Entidade ● “Conjunto de objetos da realidade modelada sobre os quais desejá-se manter informações no banco de dados” (Heuser, 2009) Atributo ● “Dado que é associado a cada ocorrência de uma entidade ou de um relacionamento” (Heuser, 2009) 47 Exercício 1) Cite exemplos de entidades para um sistema de informação industrial, bem como, possíveis atributos. 2) Cite exemplos de entidades para um sistema de contas correntes, bem como, possíveis atributos. 48 Relacionamento ● “Conjunto de associações entre as entidades” (Heuser, 2009) Departamento Empregado Vendas Luciano Gigante Vendas Pedro Pequeno Compras Felisberto Gigante Compras Alicene Pequeno Fincanceiro Alberto Riquissimo Fincanceiro Pedro Large 49 Relacionamento ● Ocorrência de uma entidade – Simulação através da atribuição de valores 50 Exercícios 3) Explique a diferença de uma entidade e uma ocorrência de uma entidade. Exemplifique. 4) Deseja-se construir um banco de dados para um sistema de vendas. Em cada venda são vendidos vários produtos e um determinado produto pode aparecer em diferentes vendas. Cada venda é efetuada por um vendedor para um determinado cliente. Um produto está armazenado um uma prateleira. Identifique as possíveis entidades com seus atributos, bem como, os relacionamentos. Faça um desenho do ER e de um diagrama de ocorrências. 51 Exercícios 5) Administradora de imóveis: ● A administradora trabalha tanto com administração de condomínios, quanto com a administração de aluguéis. Uma entrevista com o gerente da administradora resultou nas seguintes informações: – A administradora administra condomínios formados por unidades condominiais. – Cada unidade condominial é de propriedade de uma ou mais pessoas. Uma pessoa pode possuir diversas unidades. 52 Exercícios – Cada unidade pode estar alugada para no máximo uma pessoa. Uma pessoa pode alugar diversas unidades. ● Identifique as possíveis entidades com seus atributos, bem como, os relacionamentos. ● Faça um desenho do ER. 53 Exemplo diagrama ER Financeira VendaFinanciamento Taxa de juros Código Nro nota fiscal Vendedor Nro de parcelas Comissão Atributos em relacionamentos 54 Exemplo diagrama ER Pessoa Casamento esposa Nome Auto-relacionamentos: definir papéis marido Empregado Supervisão supervisionado Nome supervisor Departamento Nro da certidão Papel: função que uma instância da entidade cumpre dentro de uma instância do relacionamento (HEUSER, 2009) 55 Exercícios 6) O que é o papel de uma entidade em um relacionamento? Quando é necessário especificar o papel das entidades no relacionamento? 7) Considere a situação de casamento entre um homem e uma mulher. A entidade Pessoa representa homens e mulheres. Esta entidade possui um auto-relacionamento com cardinalidade 1 em ambos os lados e o nome do relacionamento é casamento, o nomes dos papéis envolvidos é de marido e esposa. 56 Exercícios ● Faça um diagrama de ocorrências. ● Segundo este DER o banco de dados poderia conter um casamento em que uma pessoa está casada consigo mesma? ● Este DER permite que a mesma pessoa apareça em dois casamentos diferentes, uma vez como marido e outra vez como esposa? ● Caso uma das situações acima possa ocorrer, como deveria ser modificado o DER para impedi-las? 57 Exercícios 8. Faça um diagrama de ocorrências para o DER onde a entidade Empregado possui um auto-relacionamento com cardinalidade 1 para o papel supervisor e cardinalidade n para o papel supervisionado. ● Um empregado pode ser supervisor de si mesmo? 58 Exemplo diagrama ER DistribuidorCidade Distribuição Relacionamento ternário Produto 59 Exercícios 9) Transforme o relacionamento ternário do DER abaixo em relacionamentos binários. Exemplifique a sua resposta atribuindo valores para as ocorrências das entidades. 60 Exercícios 10) Dê um exemplo de um relacionamento ternário. Mostre como a mesma realidade pode ser modelada comente com um relacionamento binário. Justifique a escolha das cardinalidades mínima e máxima. 61 Cardinalidades Cardinalidade (mínima, máxima) de entidade em relacionamento == número (mínimo, máximo) de ocorrências de uma entidade que podem estar associadas a uma ocorrência de outra entidade através de um relacionamento Tipos de cardinalidade: ● 1:1 ● 1:n ● n:n Com (mínimo, máximo): ● (0,1) ● (1,1) ● (0,n) ● (1,n) 62 Cardinalidades Empregado MesaAlocação1 1 Aluno CursoInscriçãon 1 Médico PacienteConsultan n Empregado Supervisão supervisionadosupervisor 1 n 63 Cardinalidades DistribuidorCidade Distribuição Relacionamento ternário Produto n n 1 A cardinalidade “1” refere-se a um par Cidade-Produto 64 Cardinalidades 65 Cardinalidades (mínima, máxima) Empregado MesaAlocação(0,1) (1,1) Aluno CursoInscrição(1,n) (0,n) Engenheiro ProjetoAtuação(0,n) (0,n) Código Nome Função Código Título 66 Exercícios 11) Considere o DER abaixo. Para que a restrição de cardinalidade mínima seja obedecida, que ocorrências de entidade devem existir no banco de dados quando for incluída uma ocorrência de EMPREGADO? E quando for incluída uma ocorrência de MESA? Se ajudar, faça o diagrama de ocorrências. 67 Exercícios 12) Explique as cardinalidade dos relacionamentos entre as entidades do DER abaixo. Modifique as cardinalidade mínimas de forma a especificar que: a) um curso não pode estar vazio, isto é deve possuir ao menos uma disciplina em seu currículo; e, b) Um aluno, mesmo que não inscrito em nenhum curso, deve permanecer por algum tempo no banco de dados. 68 Exercícios 13) Dê um exemplo de um relacionamento ternário. Mostre como a mesma realidade pode ser modelada comente com um relacionamento binário. Justifique a escolha das cardinalidades mínima e máxima. 69 Exercícios 14) Identifique as entidades, os relacionamentos e as respectivas cardinalidades para o seguinte problema: Em uma empresa de desenvolvimento de sistemas informatizados, pessoas são alocadas a tarefas. No momento da alocação da pessoa a tarefa, também lhe é alocado um equipamento para resolver a tarefa. 15) Faça a modelagem conceitual para um sistema acadêmico de uma universidade envolvendo a grade curricular e os professores de um curso. Identifique as possíveis entidades com os seus relacionamentos e cardinalidades. 70 Exercícios 16) Modifique as cardinalidades mínimas de forma a especificar o seguinte do exercício 15: ● Um curso não pode estar vazio, isto é, deve possuir ao menos uma disciplina em seu currículo ● Um aluno, mesmo que não inscrito em nenhum curso, deve permanecer por algum tempo no banco de dados 71 Identificação de entidades Empregado Nome Endereço Código Nro do corredor Nro da prateleira Prateleira Capacidade Empregado Nome Endereço Código Empregado Nome Endereço Código ? Empregado Nome CIC ? Departamento Nome Código Conjunto de um ou mais atributos e relacionamentos cujos valores servem para distinguir uma ocorrência de uma entidade das demais ocorrências da mesma entidade (HEUSER, 2009) 72 Identificação de relacionamentos Engenheiro ProjetoAlocaçãon n data/hora Neste caso, um relacionamento é identificado pelas entidades dele participantes, bem como pelos atributos identificadores eventualmente definidos (HEUSER, 2009). crea codigo 73 Entidade Fraca Empregado DependenteAlocação(1,1) (0,n) código nome Nro sequencia nome Empregado DependenteAlocação(1,1) (0,n) Chave primária da entidade fraca é composta pela chave estrangeira da entidade principal concatenada a um identificador de si própria 74 Exercícios 17) Considere o DER abaixo com o relacionamento EMPREGADO-DEPENDENTE. Considere que um dependente de um empregado possa também ser empregado. Como o modelo deveria ser modificado para evitar o armazenamento redundante das informações das pessoas que são tanto dependentes quanto empregados? 75 Extensões e variações do modelo ER 76 Generalização/Especialização ● Atribuir propriedades particulares a um subconjunto de ocorrências (especializadas) de uma entidade genérica. ● Herança de propriedades, – ou seja, herdar propriedades significa que cada ocorrência da entidade especializada, possui além de suas próprias propriedades (atributos e relacionamentos), também as propriedades da ocorrência da entidade genérica. (HEUSER, 2009) 77 Generalização/Especialização (total) Filial ClienteAlocação(1,1) (0,n) código nome Pessoa Física CIC Sexo Pessoa Jurídica CNPJ Tipo de organização 78 Generalização/Especialização parcial Funcionário Tipo de funcionário Motorista Secretária p - p indica que nem todo Funcionário é Motorista ou Secretária 79 Generalização/Especialização ● Total indica que – Para cada ocorrência da entidade genérica existe sempre uma ocorrência de uma das entidades especializadas. ● Parcial indica que – Nem toda ocorrência da entidade genérica possui uma ocorrência correspondente de uma entidade especializada. (HEUSER, 2009) 80 Exercícios 18) O DER apresenta um modelo de dados para uma farmácia. a) Descreva em português tudo o que está representado neste diagrama. b)Defina, quando possível, para cada entidade os seus atributos e indique os atributos identificadores. 81 Agregação Funcionário ProjetoTrabalhan n Utiliza Máquina Funcionário n - para expressar relacionamentos de relacionamentos: relacionamentos são tratados como entidades de nível superior 82 Agregação Funcionário ProjetoTrabalhan n Utiliza Máquina Funcionário n n 83 Agregação (DER Heuser) Funcionário ProjetoTrabalhan n Utiliza Máquina Funcionário n n - também chamada de entidade associativa 84 Exercícios 19) O DER (próximo slide) apresenta um modelo de dados para um sistema de recursos humanos em uma organização. a) Descreva em português tudo o que está representado neste diagrama. b) Defina, quando possível, para cada entidade os seus atributos e indique os atributos identificadores. c) Que ações devem ser tomadas ao excluir-se do banco de dados uma secretária? d) De acordo com este DER uma secretária ou um engenheiro não podem ser gerentes. Porque? Como o DER deveria ser modificado para permitir que tanto uma secretária, quanto um engenheiro pudessem também ser gerentes? 85 Exercícios 86 Exercícios 20) Considerar o exercício de vendas. Identificar os atributos, considerando que: Para cada cliente é necessário conhecer seu código, seu nome, seu endereço (rua, número, complemento, CEP, cidade, estado) e seu telefone. Para cada vendedor, é necessário conhecer seu código, seu nome, seu telefone e sua senha no sistema de vendas. Para cada venda é necessário conhecer a data e o número da nota fiscal. Para cada produto, é necessário conhecer o seu número, seu código de barras e sua descrição. Cada prateleira tem um número e uma localização. 87 Exercícios 21) Altere o modelo ER do sistema de vendas para incorporar as seguintes informações: Tanto clientes, quanto vendedores podem ter vários telefones. Um produto pode ter vários preços, cada um com uma data de início e de fim de validade. Para cada produto vendido em uma venda, é necessário conhecer o número de unidades vendidas e o preço de venda. 22) Faça a modelagem conceitual para uma farmácia de manipulação, especialmente, para a composição de produtos e para a venda. 88 Exercícios 23) Faça a modelagem conceitual para um sistema de recursos humanos envolvendo somente a parte de detalhamento das informações dos funcionários de uma empresa. Não é necessário levar em consideração o processo de recrutamento e seleção, nem a folha de pagamento. 89 Regras de verificação para o modelo ER 90 ● Modelo ER é um modelo formal, preciso e não-ambíguo. ➔ Diferentes leitores sempre devem ter o mesmo entendimento para o mesmo DER. ➔ Sempre que o DER for utilizado por pessoas que não conhecem a modelagem entidade-relacionamento, é recomendado treinar a equipe para a leitura correta do diagrama. ● Modelo ER tem poder de expressão limitado, ou seja, conseguimos modelar somente algumas propriedades de um banco de dados. ● Equivalência entre Modelos: ➔ dois modelos são equivalentes quando expressam o mesmo, ou seja, quando modelam a mesma realidade. ➔ Para fins de projeto de Banco de Dados, dois DER são equivalentes, quando ambos geram o mesmo esquema no banco de dados. ➔ Deve-se conhecer as regras de tradução para os modelos lógicos para isto. ➔ Uma alteração que pode ser feita no DER é transformar todos os relacionamentos n:n em relacionamentos 1:n. 91 ● Atributo versus Entidade relacionada: ➔ uma questão importante que aparece na modelagem de um sistema é entre modelar um objeto como sendo um atributo de uma entidade ou como sendo uma entidade autônoma relacionada a esta entidade. Por exemplo, a cor de um automóvel é um atributo ou uma entidade relacionada? ➔ Critérios a serem adotados: a) Se o conjunto de valores de um atributo é fixo durante toda a existência do sistema, modela-se como atributo visto que o domínio de valores de um atributo é imutável. b) Se o conjunto de valores de um atributo for modificado por qualquer transação, este não deve ser modelado como um atributo. Passa-se a modelar como uma entidade. Com isto, é possível modificar os valores sem alteração do esquema do banco de dados. c) Se o objeto em discussão estiver vinculado a outros objetos (atributos, relacionamentos, entidades genéricas): modela-se como uma entidade, já que um atributo não pode ter outros atributos, nem estar relacionado a outras entidades, nem ser generalizado ou especializado. 92 ● Atributo vesus generalização/especialização: ➔ um conflito de modelagem muito comum é modelar um determinado objeto como atributo (exemplo, a categoria funcional de cada empregado em uma empresa) ou como uma especialização (exemplo, categoria funcional corresponde a uma especialização da entidade empregado). ➔ Sugestão: uma especialização somente deve ser usada quando sabe-se que as classes especializadas de entidades possuem propriedades particulares, ou seja, as entidades especializadas possuem atributos que a entidade genérica não possui. Se as entidades especializadas não possuírem atributos, sugere-se não modela-las. 93 Verificação do Modelo ER a) Modelo deve ser correto: ➔ Os conceitos de modelagem do ER devem ser empregados corretamente para modelar a realidade em questão. ➔ Erros sintáticos ocorrem quando o modelo não respeita as regras de construção de um modelo ER, por exemplo, associar atributos a atributos, associar relacionamentos a atributos, etc. ➔ Erros semânticos ocorrem quando o modelo, apesar de obedecer as regras de construção de modelos ER (sintaticamente correto) reflete a realidade de forma inconsistente, por exemplo, estabelecer associações incorretas, usar uma entidade do modelo como atributo de outra entidade, usar o número incorreto de entidades em um relacionamento, etc. b) Modelo deve ser completo: ➔ O modelo deve fixar todas as propriedades desejáveis, e isto, obviamente somente pode ser verificado por alguém que conhece profundamente o sistema a ser implementado (analistas de negócio, analista de sistema, usuário especializado). ➔ Uma boa maneira de verificar se o modelo é completo é verificar se todos os dados obtidos no banco de dados estão presentes e se todas as transações de modificação do banco de dados podem ser executadas sobre o modelo. 94 Verificação do Modelo ER c) Modelo deve ser livre de redundâncias: ➔ Relacionamentos redundantes são resultados da combinação de outros relacionamentos entre as mesmas entidades. ➔ É possível detectar quando é possível eliminar este relacionamento do DER sem que haja perda de informação no banco de dados. ➔ Atributos redundantes são atributos derivados a partir da execução de procedimentos de busca de dados e/ou cálculos sobre o banco de dados, por exemplo, atributos totalizadores (número total de empregados). d) Entidade Isolada: ➔ É uma entidade que não apresenta nenhum relacionamento com outras entidades. Em princípio, entidades isoladas não estão incorretas. Mas deve ser verificada se deve continuar existindo. e) Entidade sem atributos: ➔ Situação que também não está incorreta, mas deve ser investigada. 95 Verificação do Modelo ER f) Modelo deve refletir o aspecto temporal: ➔ O primeiro modelo tende a refletir um estado momentâneo do banco de dados. ➔ Entretanto, é necessário lembrar que assim como as informações são incluídas no banco de dados, elas também podem ser eliminadas do banco de dados. ➔ Um banco de dados não pode crescer indefinidamente. Informações desnecessárias ou ultrapassadas podem ser eliminadas. ➔ Portanto, é necessário considerar o aspecto temporal na modelagem dos dados. Em especial: I) tentar identificar na modelagem atributos cujos valores modificam ao longo do tempo, como por exemplo, o salário de um empregado. Algumas vezes, por questões de necessidades futuras de informações (data warehouse, BI, OLAP), ou até mesmo por questões legais, o banco de dados deve manter o histórico das informações. II) relacionamentos que se modificam ao longo do tempo, pode-se ter a necessidade de manter este registro no banco de dados. III) Modelagem do aspecto temporal: incluir data e/ou hora na entidade ou no relacionamento. IV) Projetar consultas a dados referentes ao passado para dados que estão no banco de dados e são pouco acessados. 96 Modelo Relacional - modelo conceitual - modelo lógico - modelo físico projeto de banco de dados Modelo conceitual: ER Modelo lógico: relacional Modelo lógico == modelo de dados que representa a estrutura de dados de um banco de dados conforme vista pelo usuário do SGBD Ex: modelo relacional, modelo a objetos, modelo hierárquico Projeto de Banco de Dados Principais elementos ● Tabela ● linhas (tuplas), colunas (atributos) ● Chaves ● Primária, estrangeira ● Domínios ● Faixa de valores que um atributo pode conter ● Valores Nulos ● Restrições de integridade: ● Integridade de domínio ● Integridade de vazio ● Integridade de chave (chave primária única) ● Integridade referencial (chave estrangeira) Principais elementos Contexto Terminologia Modelo Relacional (Formal) Relação Tupla Atributo Modelo Relacional (Informal) Tabela Linha Coluna Teoria dos Conjuntos Conjunto Lista Nodo Sistema de Arquivos Arquivo Registro Campo Orientação a Objetos Classe Objeto Atributo Esquema do banco de dados A especificação de um banco de dados relacional (esquema do banco de dados) deve conter no mínimo: ● Tabelas que compõem o banco de dados; ● Colunas que as tabelas possuem; ● Restrições de integridade Exemplo de esquema Notação resumida: Aluno (CodAluno, Nome, #CodCurso) Curso (CodCurso, Nome) CodAluno Nome CodCurso 2034 Joaquim 124 3028 Ana 124 1212 Paula 147 CodCurso Nome 124 Ciência da Computação 138 Sistemas de Informação Aluno Curso 102 Transformação ER para Relacional Princípios para definição das regras ● Evitar junções – ter os dados necessários a uma consulta em uma única linha; ● Diminuir o número de chaves – quanto mais chaves, mais índices; ● Evitar campos opcionais Passos para a transformação I. Tradução inicial de entidades e respectivos atributos; II. Tradução de relacionamentos (auto, binário, ternário, entidade fraca, agregação) e respectivos atributos; III. Tradução de generalizações/especializações e respectivos atributos; Tradução de entidades e seus atributos ● Cada entidade é traduzida para uma tabela ● Cada atributo define uma coluna desta tabela ● Nomes de colunas devem ser curtos ● Atributos identificadores compõem a chave primária da tabela ● Entidades fracas devem ter, como parte de sua chave primária, a chave primária da entidade forte Exercícios Endereço Empregado Nome CódigoEmpregado Nome Código Tradução de relacionamentos e atributos 1. Para relacionamentos binários: ● Determinada pelas cardinalidades mínima e máxima dos relacionamentos: ● Relacionamentos 1:1 – adição de colunas ou fusão de tabelas das entidades; Exercícios Tradução de relacionamentos e atributos ● Relacionamentos 1:n – adição de coluna na tabela originada da entidade associada à cardinalidade n; Exercícios Exercícios atributo redundante: totalizador, ou seja, o conteúdo do atributo resulta de uma operação que envolve diversas entidades do banco de dados. Serve para se ter melhor performance do sistema e deve ser atualizado frequentemente. Tradução de relacionamentos e atributos ● Relacionamentos n:n – definição de tabela própria contendo as chaves primárias das entidades relacionadas. Exercícios Tradução de relacionamentos e atributos 3. Para relacionamentos com entidade fraca: ● Entidades fracas devem ter, como parte de sua chave primária, a chave primária da entidade forte. 2. Para relacionamentos ternários: ● Criar uma nova tabela com a adição das colunas identificadoras das três tabelas que fazem parte do relacionamento. ● A chave primária será composta pelas colunas identificadoras com cardinalidade n. Exercícios Exercícios Tradução de relacionamentos e atributos 5. Para relacionamentos com agregação: ● Criar uma nova tabela com a adição das colunas identificadoras das tabelas participantes do relacionamento. ● A chave primária será composta por estas colunas. 4. Para auto-relacionamentos: ● Criar uma nova tabela com a adição da coluna identificador duas vezes, uma para cada papel exercido no relacionamento. ● A chave primária será composta pelas colunas com cardinalidade n. Exercícios Pessoa Casamento esposa Nome marido Empregado Supervisão supervisionado Nome supervisor Departamento Nro da certidão Exercícios Funcionário ProjetoTrabalhan n Utiliza Máquina Funcionário n n Tradução de generalizações/especializações ● Duas abordagens: ● Uso de uma tabela para cada entidade ● Uso de uma única tabela por entidade da hierarquia Tradução de generalizações/especializações ● Uso de uma tabela para cada entidade, composta de: 1. chave primária correspondente ao identificador da entidade mais genérica (para entidade genérica e especializada); 2. uma coluna tipo (caso não exista), para identificar que tipo de entidade especializada está sendo representada por cada linha da tabela; Tradução de generalizações/especializações 3.uma coluna para cada atributo da entidade genérica; 4.colunas referentes aos relacionamentos dos quais participa a entidade genérica (para relacionamentos implementados pela alternativa de adicionar colunas à tabela da entidade genérica); Tradução de generalizações/especializações 5. uma coluna para cada atributo da entidade especializada (como opcionais, pois só terão valores quando a linha for referente à entidade especializada em questão; 6. colunas referentes aos relacionamentos dos quais participa cada entidade especializada e que sejam implementados através da alternativa de adicionar colunas à tabela de entidade (colunas definidas como opcionais, pis terão valores somente na linha referente à entidade especializada em questão) Tradução de generalizações/especializações ● Uso de uma única tabela por entidade da hierarquia: 1.Tabela referente à entidade generalizada e tabelas referentes a cada uma de suas especializações possuem a mesma chave primária; 2.Informações referentes a cada especialização estão nas tabelas correspondentes às entidades especializadas; 3.Nas tabelas referentes às entidades especializadas, a chave primária (da tabela generalizada) é também chave estrangeira em relação à tabela da entidade generalizada Exercícios Fazer a tradução dos DER criados como exercício de modelagem conceitual para agenciamento de empregos, gerenciar as vendas e para a videolocadora. Normalização Normalização ● Processo que permite obter um modelo relacional, eliminando redundâncias de dados ● Baseia-se no conceito de forma normal: – Regra que deve ser obedecida por uma tabela para que esta seja considerada “bem projetada” ● As formas normais a serem consideradas dependem da necessidade do projeto, e da visão do projetista: 1FN, 2FN, 3FN, 4FN, 5FN Exemplo Relatório Tabela não normalizada CodProj Tipo Descr Emp CodEmp Nome Cat Sal DataIni TempAlo LSC001 NovoDesenv Sistema de Estoque 2146 Joao A1 4 1/11/91 24 3145 Silvio A2 4 2/10/91 24 6126 Jose B1 9 3/10/92 18 1214 Carlos A2 4 4/10/92 18 8191 Mario A1 4 1/11/92 12 PAG02 Manutencao Sistema de RH 8191 Mario A1 4 1/05/93 12 4112 Joao A2 4 4/01/91 24 6126 Jose B1 9 1/11/92 12 Proj (CodProj, Tipo, Descr, (CodEmp, Nome, Cat, Sal, DataIni, TempAlo)) Tabela aninhada: 1º forma normal (1FN) ● Tabela não contém tabelas aninhadas ● Para transformar uma tabela não normalizada em um esquema na 1FN: – Construir uma única tabela com redundância de dados: – – Construir uma tabela para cada tabela aninhada: ProjEmp (CodProj, Tipo, Descr, CodEmp, Nome, Cat, Sal, DataIni, TempAlo) Proj (CodProj, Tipo, Descr) ProEmp (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAlo) 2º forma normal (2FN) ● Tabela está na 1FN e não contém dependências parciais: – Dependência parcial = uma coluna da tabela depende apenas de parte de uma chave primária composta ● Uma tabela que possui apenas uma coluna como chave primária não contém dependências parciais ProjEmp (CodProj, CodEmp, Nome, Cat, Sal, DataIni, TempAlo) 2º forma normal (2FN) ● Para colocar a tabela ProjEmp na 2FN: Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, DataIni, TempAlo) Emp (CodEmp, Nome, Cat, Sal) 3º forma normal (3FN) ● A tabela está na 2FN, e não contém dependências transitivas (ou indiretas): – Dependência transitiva: uma coluna, além de depender da chave primária da tabela, depende de outra coluna ou conjunto de colunas da tabela ● Para colocar a tabela Emp na 3FN: Proj (CodProj, Tipo, Descr) ProjEmp (CodProj, CodEmp, DataIni, TempAlo) Emp (CodEmp, Nome, Cat, Sal) Emp (CodEmp, Nome, Cat) Cat (Cat, Sal) 2FN 3FN Exercício ● Apresente o modelo lógico para os exercícios seguintes mostrando a passagem pelas três formas normais. Os exercícios são: – Relatório de um congresso com artigos – Estrutura de um registro em pascal – Tabela no formato de uma planilha eletrônica Exercício Relação de artigos submetidos ao congresso Congresso: DB25 - Avanços em Sistemas de Banco de Dados GT's promotores: GT3.1 Sistemas de Banco de Dados GT3.3 Modelo Conceitual de Banco de Dados Congresso: OO03 - Modelo orientado a objetos Código do artigo Título do artigo Assunto Principal Código do Autor Nome do Autor 1 Aspectos temporais em modelos OO Modelo Temporal 2 Wen- Suan Li Relação de artigos submetidos ao congresso Continua diego Sticky Note 1. comgreço(cod, descrição, gt, (cod, descrição),artigo(cod, titulo,assunto, Autores(cod, nome))null2. 1FN congresso(cod, desc)nullnullcongressoGT(#codCong, codGT, desc)nullnullcongrssoArtigos(#codCong, codArt, titulo,assunto)nullnullCongressoArtigoAutor(null#codCong, #codArt, codAutor, nome);null3. 2Fn Gt(_cod, desc)nullnullArtigo(_cod, titulo, assunto)nullnullAutor()_cod, nomenull4. 3FN Código do artigo Título do artigo Assunto Principal Código do Autor Nome do Autor 1 Integração Semântica em BD heterogêneos Banco de dados heterogêneos 2 Wen-Suan Li 2 Segurança Dinâmica em bancos de dados federados Banco de dados heterogêneos 4 21 Chris Clifon N.B. Idris 3 Métodos eficientes de agrupamento Banco de dados espaciais 7 32 12 W.A. Gray R.F. Chuchhouse Raymond R. Ng 4 Sintonia de Desempenho automatizada Banco de dados espaciais 14 36 Jiawei Han Kurt. P. Brown 5 Bulk loadind into OODB Banco de dados orientado a objetos 1 Janet L. Wiener Congresso: DB25 - Avanços em Sistemas de Banco de Dados GT's promotores: GT3.1 Sistemas de Banco de Dados GT3.3 Modelo Conceitual de Banco de Dados Exercício type reg_aluno= record cod_al: integer; nome_al: char_60; ingressos_cursos_al: array [1..10] of record cod_curso: integer; semestre_ingresso: integer end; disciplinas_cursadas_al: array [0..200] of record cod_disc: integer; semestres_cursados: array [1..20] of record semestre_disc: integer; nota_disc: integer end end end; arq_aluno= file of reg_aluno; diego Sticky Note Aluno(codAl, nome,ingresoCurso(CodCurso, SemestreIngres)DisciplinaCursada(CodDis, SemestreCursso(sememestreDisci, notaDisc)))null2. 1fn Aluno(cod-al, nome)nullnullalunoCurso(#cod-al, _cod-curso,semestre)nullnullDisciplinaCursada(#cod0al,cod-disc)nullnullsemestre-cursado(#cod-al, #cod-disc, semestre, nota)null4. 2FN, nao precisou, Exercício Paciente Médico Data Hora Valor Especialida de Médico Daniel Adriano 12/12/07 12:00 R$ 120,00 Neurologista Daniel Adriano 12/11/07 11:00 R$ 240,00 Neurologista Luis Adriano 12/12/07 13:00 R$ 360,00 Neurologista Luis Valquiria 10/10/07 14:00 R$ 23,00 Clinico Geral Daniel Valquiria 11/11/07 17:00 R$ 340,00 Clinico Geral Ana Angélica 10/10/10 14:00 R$ 324,00 Ginecologista diego Sticky Note 1.Consulta(codigo, data, hora, valor, Medico(codigo, nome, especialidade), Paciente(nome, codigo))nullnull2. 1fn Consulta(codigo, data, hora, valor)nullnullConsultaMedico(#codconsulta, codigo, nome, especialidade)nullnullConsultaPaciente(#codconsulta, nome, codigo)nullnull3. 2fn Paciente(cod, nome)nullnullMedico(cod, nome, especialidade)nullnull4. 3fn Especialidade(cod, descricao) Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47 Slide 48 Slide 49 Slide 50 Slide 51 Slide 52 Slide 53 Slide 54 Slide 55 Slide 56 Slide 57 Slide 58 Slide 59 Slide 60 Slide 61 Slide 62 Slide 63 Slide 64 Slide 65 Slide 66 Slide 67 Slide 68 Slide 69 Slide 70 Slide 71 Slide 72 Slide 73 Slide 74 Slide 75 Slide 76 Slide 77 Slide 78 Slide 79 Slide 80 Slide 81 Slide 82 Slide 83 Slide 84 Slide 85 Slide 86 Slide 87 Slide 88 Slide 89 Slide 90 Slide 91 Slide 92 Slide 93 Slide 94 Slide 95 Slide 96 Slide 97 Slide 98 Slide 99 Slide 100 Slide 101 Slide 102 Slide 103 Slide 104 Slide 105 Slide 106 Slide 107 Slide 108 Slide 109 Slide 110 Slide 111 Slide 112 Slide 113 Slide 114 Slide 115 Slide 116 Slide 117 Slide 118 Slide 119 Slide 120 Slide 121 Slide 122 Slide 123 Slide 124 Slide 125 Slide 126 Slide 127 Slide 128 Slide 129 Slide 130 Slide 131 Slide 132 Slide 133 Slide 134 Slide 135 Slide 136 Slide 137 Slide 138 Slide 139 Slide 140 Slide 141 Slide 142 Slide 143 Slide 144 Slide 145 Slide 146 Slide 147 Slide 148 Slide 149 Slide 150 Slide 151 Slide 152 Slide 153 Slide 154