Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 05 Informática p/ Prefeitura de Niterói - Fiscal de Tributos Professores: Celson Junior, Victor Dalton 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 1 de 136 AULA 05: Bancos de dados SUMÁRIO PÁGINA 1.Bancos de Dados: Conceitos Básicos 2 1.1 Definições 2 1.2 SGBD 6 1.3 Características de um banco de dados 8 1.4 Trabalhadores envolvidos 11 1.5 Vantagens da abordagem SGBD 15 1.6 Desvantagens da abordagem SGBD 15 1.7 Arquitetura três esquemas de um SGBD 16 1.8 Categorias de modelos de dados 17 1.9 Tipos de modelos de dados 20 1.10 Modelo Entidade-Relacionamento 24 1.11 Cardinalidade 26 1.12 Modelo Relacional 37 1.13 Gerenciamento de Transações 48 1.14 Catálogo de Dados 49 1.15 Views 51 1.16 Normalização de dados 54 Exercícios Comentados 59 Considerações Finais 109 Exercícios 110 Gabarito 136 Olá pessoal! Vamos ministrar Banco de Dados. Particularmente acho a matéria muito interessante. É o tipo de assunto que, uma vez aprendido, dificilmente os conhecimentos básicos saem da cabeça. Já sei que você se assustou com o tamanho da apostila! Mas BD é um assunto extenso mesmo, é bom digeri-lo aos poucos. Vamos ao que interessa? Observação importante: este curso é protegido por direitos autorais (copyright), nos termos da Lei 9.610/98, que altera, atualiza e consolida a legislação sobre direitos autorais e dá outras providências. Grupos de rateio e pirataria são clandestinos, violam a lei e prejudicam os professores que elaboram os cursos. Valorize o trabalho de nossa equipe adquirindo os cursos honestamente através do site Estratégia Concursos ;-) 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 2 de 136 BANCOS DE DADOS 1. BANCOS DE DADOS: CONCEITOS BÁSICOS 1.1 Definições Antes do estudo de SGBDs propriamente dito, cabe destacar a diferença entre dado, informação e conhecimento. Um dado é uma seqüência de símbolos quantificados ou quantificáveis. Quantificável significa que algo pode ser quantificado e depois reproduzido sem que se perceba a diferença para com o original. Portanto, um texto é um dado. De fato, as letras são símbolos quantificados, assim como os números. Também são dados fotos, figuras, sons gravados e animação, pois todos podem ser quantificados ao serem introduzidos em um computador, a ponto de se ter eventualmente dificuldade de distinguir a sua reprodução com o original. É muito importante notar-se que, mesmo se incompreensível para o leitor, qualquer texto constitui um dado ou uma sequência de dados. Descrevem um acontecimento, um fato, sem fornecer julgamento nem interpretação. Uma informação é uma abstração informal (isto é, não pode ser formalizada através de uma teoria lógica ou matemática), que está na mente de alguém, representando algo significativo para essa pessoa. Por exemplo, a frase "Paulo tem 23 anos" é um exemplo de informação ± desde que seja lida ou ouvida por alguém, desde que "Paulo" signifique para essa pessoa um nome (ou alguém conhecido) e "23 anos" tenha a compreensão devida, englobando o conceito de idade. Se a representação da informação for feita por meio de dados, como na frase sobre Paulo, pode ser armazenada em um computador. Mas, cuidado, o que é armazenado na máquina não é a informação, mas a sua representação em forma de dados. Assim, não é possível processar informação diretamente em um computador. Para isso é necessário reduzi-la a dados. No exemplo, "23 anos" teria que ser quantificado, usando-se por exemplo uma escala numérica, e associando a idade a 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 3 de 136 algum tipo de atributo. Para um receptor humano, essa informação teria sido reduzida a um dado, que ele poderia interpretar como informação. Uma distinção fundamental entre dado e informação é que o primeiro é puramente sintático e a segunda contém necessariamente semântica. É interessante notar que é impossível introduzir e processar semântica em um computador, porque a máquina mesma é puramente sintática (assim como a totalidade da matemática). Portanto, a informação requer um componente humano no processo. Conhecimento, por sua vez, envolve habilidade adquirida por uma pessoa por experiência ou educação. O conhecimento por prática ou teoria. Conhecimento de um assunto, com a habilidade de usá-lo para um propósito. 3RU�H[HPSOR��DR�DQDOLVDU�³3DXOR�HP����DQRV´��R�FRQKHFLPHQWR� de um idoso pode interpretar que Paulo é jovem, e tem pouca experiência de vida. Por outro lado, um adolescente pode entender que Paulo é adulto, vivido, e tem muitas dicas para passar. Portanto, o conhecimento depende (e muito) de quem o possui. 2�FRQKHFLPHQWR��SRU�ILP��SRGH�OHYDU�j�WRPDGD�GH�GHFLV}HV��³3UHFLVR� RULHQWDU�3DXOR´��RX�³3UHFLVR�DSUHQGHU�FRP�3DXOR´��RX�³$LQGD�p�FHGR�SDUD� SURPRYHU� 3DXOR´� �GHFLV}HV� GH� QHJyFLR�, etc. Quando o conhecimento é aproveitado, alcançamos a inteligência, que se encontra no topo dessa hierarquia. Veremos mais sobre produção de conhecimento e inteligência em Business Intelligence (Inteligência de Negócio). Entendidos esses aspectos, podemos responder o que é Banco de Dados. AcredLWR� TXH� YRFr� Mi� WHQKD� XPD� ³GHVFRQILDQoD´� GR� TXH� VHMD� XP� banco de dados. Entretanto, a definição correta de banco de dados gira em torno de duas ideias chave: relacionamento e finalidade. Um banco de dados é um conjunto de dados relacionados com uma finalidade específica. Esta finalidade pode a produção de informação, para determinado público alvo (uma empresa, ou um órgão público, por exemplo), bem como suportar um negócio (como o estoque de produtos de um fornecedor, ou um cadastro de funcionários, ou tudo isso junto). 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 4 de 136 Um banco de dados tem alguma fonte da qual o dado é derivado, algum grau de interação com eventos no mundo real e um público interessado no seu conteúdo. Para que um banco de dados seja preciso e confiável o tempo todo, as mudanças no minimundo (mundo real) precisam ser refletidas nele o mais breve possível. Um banco de dados pode ter qualquer tamanho e complexidade. As informações precisam ser organizadas e gerenciadas de modo que os usuários possam consultar, recuperar e atualizar os dados quando necessário. Um banco de dados pode ser gerado e mantido manualmente ou computadorizado. Um banco de dados computadorizado pode ser criado e mantido por um grupo de programas de aplicação específicos para essa tarefa ou por um sistema gerenciador de banco de dados. Eu costumo brincar, e acho que isso ajuda a memorizar, que não se GHYH� FRQIXQGLU� %DQFR� GH� 'DGRV� FRP� ³%DQGR� GH� 'DGRV´�� 'DGRV� desorganizados não servem para nada; um conjunto dados que se relacionam, com alguma finalidade, esses sim compõem um Banco de Dados. %DQFRV� GH� GDGRV�� QRUPDOPHQWH�� VmR� D� ³EDVH´� GH� XP� VLVWHPD�� RX� software. Um sistema de venda de produtos online, por exemplo, provavelmente possui em seu banco de dados uma vasta quantidadede registros de clientes e produtos. Esses dados provavelmente relacionam- se através dos pedidos, que devem conter dados dos clientes e dos produtos. Os pedidos também serão dados. Começou a visualizar? 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 5 de 136 �ŽŶƐĞŐƵĞ�ŝŵĂŐŝŶĂƌ�ƋƵĞ ?�ƉŽƌ� ?ƚƌĄƐ ?�ĚĞƐƐĞ�ƐŝƐƚĞŵĂ ?�ĞdžŝƐƚĞ�Ƶŵ��ĂŶĐŽ�ĚĞ��ĂĚŽƐ ? Nossa próxima definição importante é a de Esquema de Banco de Dados. Um esquema do banco de dados é uma coleção de objetos de um banco de dados que estão disponíveis para um determinado usuário ou grupo. Os objetos de um esquema são estruturas lógicas que se referem diretamente aos dados do banco de dados. Eles incluem estruturas, tais como tabelas, visões, seqüências, procedimentos armazenados, sinônimos, índices, agrupamentos e links de banco de dados. Falaremos mais sobre esses elementos ao longo da apostila, fique tranquilo. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 6 de 136 Ou seja, ao se elaborar um sistema, seu projeto de banco de dados é idealizado em um esquema (como a figura acima). )DOHL��SRXFR�DQWHV��TXH�RV�VRIWZDUHV�QRUPDOPHQWH�HVWmR� ³HP�FLPD´� de um Banco de Dados. O esquema é essa ferramenta utilizada para a representação do banco como um todo, podendo servir tanto para facilitar o entendimento do Banco de Dados como para implementar o próprio Banco de Dados. Com base no esquema acima, por exemplo, um Administrador de Dados já consegue criar o Banco. Visualize a imagem acima, veja as tabelas e os relacionamentos, e não se incomode se estiver entendendo pouco ou quase nada. Iremos ver e rever essa imagem, explicando os detalhes dela aos poucos. Tudo bem? 1.2 SGBD Imagine agora um sistema de uma grande vendedora de produtos online, ou mesmo o sistema de vendas de uma grande companhia aérea. Essas empresas vendem produtos e serviços por segundo, para usuários distribuídos geograficamente pelo mundo inteiro. Deste simples exemplo, percebe-se que Bancos de Dados precisam de gerenciamento próprio, e eficiente, para coordenar um volume gigantesco de operações simultâneas. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 7 de 136 Para tal, existem os Sistemas Gerenciadores de Bancos de Dados. O SGBD é o conjunto de programas de computador (softwares) responsáveis pelo gerenciamento de uma (ou mais) base de dados. Seu principal objetivo é retirar da aplicação cliente (o sistema da empresa propriamente dito) a responsabilidade de gerenciar o acesso, a manipulação e a organização dos dados. O SGBD disponibiliza uma interface para que seus clientes possam incluir, alterar ou consultar dados previamente armazenados. Em bancos de dados relacionais a interface é constituída pelas APIs (Application Programming Interface) ou drivers do SGBD, que executam comandos na linguagem SQL (Structured Query Language). Certamente você já ouviu falar de alguns SGBDs, como o Oracle, o IBM DB2, o Microsoft SQL Server, MySQL, ou até mesmo o PostgreSQL, que é gratuito. Sistemas Gerenciadores de Bancos de Dados: softwares comerciais. Os SGBDs facilitam o processo de definição, construção, manipulação e compartilhamento de bancos de dados entre diversos usuários e aplicações. ł�'HILQLU�XP�EDQFR�GH�GDGRV�HQYROYH�HVSHFLILFDU�RV�WLSRV��HVWUuturas e restrições dos dados a serem armazenados. ł�&RQVWUXLU�XP�EDQFR�GH�GDGRV�p�R�SURFHVVR�GH�DUPD]HQDU�RV�GDGRV� em algum meio controlado pelo SGBD. ł� 0DQLSXODU� XP� EDQFR� GH� GDGRV� LQFOXL� IXQo}HV� QR� EDQFR� GH� GDGRV� como consultas para recuperar dados específicos, atualização que reflita mudanças no minimundo e geração de relatórios com base nos dados. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 8 de 136 ł� &RPSDUWLOKDU� EDQFR� GH� GDGRV� p� SHUPLWLU� TXH� GLYHUVRV� XVXiULRV� H� programas acessem-no simultaneamente. Outras funções importantes fornecidas pelo SGBD incluem proteção e manutenção do banco de dados por um longo período. A proteção pode ser contra defeitos (falhas) de hardware e software ou contra acesso não autorizado ou malicioso (segurança). A manutenção permite a evolução do sistema de banco de dados ao longo do ciclo de vida, à medida que os requisitos mudem com o tempo. Sistema de Banco de Dados: ilustração 1.3 Características de um banco de dados Na abordagem de banco de dados, um único repositório mantém dados que são definidos uma vez e depois acessados por vários usuários. Os nomes ou rótulos de dados são definidos uma vez, e usados repetidamente por consultas, transações e aplicações. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 9 de 136 Natureza de Autodescrição de um Sistema de Banco de Dados Na abordagem de banco de dados, seu sistema contém não apenas o banco de dados, mas também uma definição ou descrição completa de sua estrutura e restrições. Essa definição é armazenada no catálogo do SGBD (falaremos mais sobre ele adiante). A informação armazenada no catálogo é chamada metadados (também será melhor explicado posteriormente). O catálogo é usado pelo software de SGBD e também pelos usuários do banco de dados que precisam de informações sobre a estrutura do banco de dados (tipo e o formato dos dados). O software SGBD precisa trabalhar de forma satisfatória com qualquer quantidade de aplicações de banco de dados. Isolamento Entre Programas e Dados, e Abstração de Dados Na maioria dos casos, qualquer mudança na estrutura de dados do SGBD não exige mudanças nos programas que acessam o banco de dados. A estrutura dos arquivos de dados é armazenada no catálogo do SGBD separadamente dos programas de acesso. Essa propriedade é chamada de independência programa-dados. Em alguns tipos de sistemas de banco de dados os usuários podem definir operações (funções ou métodos) sobre como os dados como parte das definições de banco de dados. A interface de uma operação inclui o nome da operação e os tipos de dados de seus argumentos (parâmetros). A implementação (método) da operação é especificada separadamente e pode ser alterada sem afetar a interface. Isso é chamado de independência programa-operação. A independência programa-dados e a independência programa- operação só são possíveis em virtude de uma característica do SGBD, que é a abstração de dados. Um SGBD oferece aos usuários uma representação conceitual de dados, que não inclui muitos detalhes de como os dados são armazenados ou como as operações são implementadas. Um modelo de dados é um 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 10 de 136 tipo de abstração de dados usado para oferecer essa representação conceitual. Na abordagem de banco de dados, a estrutura detalhada e a organizaçãode cada arquivo são armazenadas no catálogo. Os usuários do banco de dados e os programas de aplicação se referem à representação conceitual dos arquivos, e o SGBD extrai os detalhes do armazenamento do arquivo do catálogo quando estes são necessários para os módulos de acesso a arquivo do SGBD. Suporte para Múltiplas Visões dos Dados Cada usuário do banco de dados pode exigir um ponto de vista ou visão (view) diferente do banco de dados. Uma visão pode ser um subconjunto do banco de dados ou conter dado virtual que é derivado dos arquivos de banco de dados, mas não estão armazenados explicitamente. Um SGBD multiusuário precisa oferecer facilidades para definir múltiplas visões. Compartilhamento de Dados e Processamento de Transação Multiusuário Um SGBD multiusuário precisa permitir que múltiplos usuários acessem o banco de dados ao mesmo tempo. O SGBD precisa incluir um software de controle de concorrência para garantir que vários usuários tentando atualizar o mesmo dados faça isso de uma maneira controlada, de modo que o resultado dessas atualizações seja correto. Esses tipos de aplicações são chamados OLTP (On-Line Transaction Processing, processamento de transações on-line). Por exemplo, se vários agentes de viagem tentam reservar um assento em um voo de uma companhia aérea. O SGBD precisa garantir que cada assento só possa ser acessado por um agente de cada vez para que seja atribuído a um único passageiro. Um papel do software SGBD multiusuário é garantir que as transações concorrentes operem de maneira correta e eficiente. Uma transação é um programa em execução ou processo que inclui um ou mais acessos ao banco de dados, como a leitura ou atualização de seus registros. Uma transação executa um acesso logicamente correto a 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 11 de 136 um banco de dados quando ele é executada de forma completa e sem interferência de outras operações. Também falaremos adiante sobre Gerenciamento de Transações. 1.4 Trabalhadores envolvidos Sistemas de Bancos de Dados são projetados, administrados e utilizados por diversos profissionais. Sem exageros, pode-se visualizar um ³FLFOR�GH�YLGD´�SDUD�XP�6LVWHPD�GH�%DQFR�GH�'DGRV��FRP�D�SDUWLFLSDomR� de diversos personagens. São eles, segundo Elmasri e Navathe (2006): Administradores de Banco de Dados Em um ambiente de banco de dados o banco de dados é o recurso principal, e o SGBD e os softwares são os recursos secundários. A administração desses recursos é de responsabilidade do administrador de banco de dados (DBA ± database administrator). O DBA é responsável por: ł�$XWRUL]DU�R�DFHVVR�DR�EDQFR�GH�GDGRV� ł�&RRUGHQDU�H�PRQLWRUDU�VHX�XVR� ł�$GTXLULU�UHFXUVRV�GH�VRIWZDUH�H�KDUGZDUH�FRQIRUPH�D�QHFHVVLGDGH� ł�5HVSRQViYHO�SRU� UHVROYHU�SUREOHPDV��FRPR� IDOKas na segurança e demora no tempo de resposta do sistema. Projetista de Banco de Dados Em muitos casos, os projetistas estão na equipe de DBAs e são responsáveis por: ł�,GHQWLILFDU�RV�GDGRV�D�VHUHP�DUPD]HQDGRV� ł� (VFROKHU� HVWUXWXUDV� DSURSULDGDV� SDUD� UHSresentar e armazenar os dados. ł�6H�FRPXQLFDU�FRP�WRGRV�RV�SRWHQFLDLV�XVXiULRV�D�ILP�GH�HQWHQGHU� suas necessidades e criar um projeto que as atenda. ł�'HVHQYROYHU�YLV}HV�GR�EDQFR�GH�GDGRV�TXH�FXPSUDP�RV�UHTXLVLWRV� de dados e processamento de cada potencial grupo de usuários. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 12 de 136 Usuários Finais (ou usuários do banco de dados) O banco de dados existe primariamente para atender os usuários finais. Existem várias categorias de usuários finais: ł�Casuais: são os gerentes de nível intermediário ou alto. Utilizam uma linguagem sofisticada de consulta ao banco de dados para especificar suas necessidades. ł�Iniciantes ou paramétricos: são os caixas de banco, agentes de companhias aéreas, hotéis e locadoras de automóveis, funcionários nas estações de recebimento de transportadores, entre outros. Sua função principal gira em torno de consultar e atualizar o banco de dados constantemente, usando transações programadas, que foram cuidadosamente programadas e testadas. ł�Sofisticados: são os engenheiros, cientistas, analistas de negócios e outros que estão profundamente familiarizados com as facilidades do SGBD a ponto de implementar as próprias aplicações que atendam suas necessidades. ł�Isolados: que mantêm bancos de dados pessoais usando pacotes de programas prontos, que oferecem interfaces de fácil utilização, baseadas em menu ou gráficos. Atenção! Date (2011) acrescenta a figura do Administrador de Dados(DA), que seria uma pessoa que toma decisões estratégicas e de normas com relação aos dados da empresa. Nessa abordagem, o DA teria atribuições como: x Levantar os requisitos funcionais para o banco de dados; x Modelar conceitualmente o banco de dados; x Especificar as regras de negócio das aplicações; x Definir padrões de nomes para conceitos e variáveis, e x Determinar normas de incorporação e manuseio dos dados. x Enquanto isso, o DBA acumularia as seguintes atribuições: x Mapear o modelo conceitual no modelo lógico; 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 13 de 136 x Realizar o projeto físico do banco de dados; x Criar usuários, definir visões e permissões, além de regras de integridade; x Controlar os processos de back-up e recuperação, e x Garantir o bom desempenho no acesso e manuseio do banco pelos usuários. x Importante, quando tratar-se de personagens envolvidos, prestar DWHQomR� QHVVH� GHWDOKH�� WHQWDU� ³DGLYLQKDU´� D� ELbliografia do enunciado, para não confundir o Administrador de Dados com o Administrador de Banco de Dados. Pior: até mesmo uma mesma banca pode cobrar conteúdo de autores diferentes. Eu já vi isso -. Analistas de Sistemas e Engenheiros de Software Os analistas de sistemas identificam as necessidades dos usuários finais, especialmente os iniciantes e paramétricos, e definem as especificações das transações padrão que atendam a elas. Os programadores de aplicações (engenheiros de software e desenvolvedores de sistemas de software) implementam essas especificações como programas, testam, depuram, documentam e mantêm essas transações programadas. 1) (FGV ± MPE/MS ± Analista de Sistemas ± 2013) Com relação ao WHPD� ³6LVWHPDV� JHUHQFLDGRUHV� GH� EDQFRV� GH� GDGRV´�� DQDOLVH� DV� afirmativas a seguir. I. Cabe ao administrador de banco de dados de uma organização definir e modificar esquemas por meio da execução de instruções de definição de dados, conceder diferentes tipos de autorização para acesso a dados e manter rotinas que têm por objetivo garantir a integridade do sistema. II. Cabe ao administrador de banco de dados de uma organização escolher, dentre as diversas ferramentas disponíveis no mercado, as mais 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 14 de 136 adequadas e desenvolver aplicações que utilizem o sistema gerenciador de bancos de dados e que ofereçam interfaces amigáveispara os usuários finais. III. Cabe ao administrador de banco de dados de uma organização acessar o banco de dados e monitorar as tarefas que estão sendo executadas pelos usuários e garantir que o desempenho do sistema não seja prejudicado por elas. Assinale: a) se somente a afirmativa I estiver correta. b) se somente a afirmativa II estiver correta. c) se somente a afirmativa III estiver correta. d) se somente as afirmativas II e III estiverem corretas. e) se somente as afirmativas I e III estiverem corretas. Analisando os itens: I. Cabe ao administrador de banco de dados de uma organização definir e modificar esquemas por meio da execução de instruções de definição de dados, conceder diferentes tipos de autorização para acesso a dados e manter rotinas que têm por objetivo garantir a integridade do sistema. ± Correto. Esta é uma tarefa rotineira, intrínseca ao DBA. II. Cabe ao administrador de banco de dados de uma organização escolher, dentre as diversas ferramentas disponíveis no mercado, as mais adequadas e desenvolver aplicações que utilizem o sistema gerenciador de bancos de dados e que ofereçam interfaces amigáveis para os usuários finais. ± Errado! Perceba que essa é uma atribuição de alto nível na organização. Ou será tarefa do Administrador de Dados (se existir), ou do Projetista. III. Cabe ao administrador de banco de dados de uma organização acessar o banco de dados e monitorar as tarefas que estão sendo executadas pelos usuários e garantir que o desempenho do sistema não seja prejudicado por elas. ± Correto. Mais uma tarefa rotineira do DBA. Resposta certa, alternativa e). 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 15 de 136 1.5 Vantagens da abordagem SGBD Via de regra, os SGBDs são ferramentas caríssimas, da ordem de milhares de dólares. Algumas de suas vantagens são: x Controle de redundância: quando os Bancos de Dados precisam ser replicados em mais de um lugar, o SGBD evita a inconsistência das diferentes bases de dados; x Restrição a acesso não autorizado: em Bancos de Dados com diferentes níveis de permissão de acesso, o SGBD realiza o controle dos diversos níveis de permissão; x Backup e restauração: o Sistema de Banco de Dados deve ser tolerante a falhas, ou seja, o SGBD deve ser capaz de voltar a um estado anterior à falha, a despeito de falhas de hardware ou software; x Forçar as restrições de integridade: os relacionamentos entre dos dados são implementados por meio de restrições de integridade. Será visto mais adiante. 1.6 Desvantagens da abordagem SGBD Instalar e manter Sistemas de Bancos de Dados carregam consigo alguns ônus intrínsecos. São eles: x Custos: além do preço elevado das ferramentas de SGBD, manter um Sistema de Banco de Dados implica em hardware, software e pessoal especializados; x Gerenciamento Complexo: o Sistema necessita interfacear com diferentes tecnologias, afetando os recursos e cultura da empresa; x Dependência do fornecedor: o investimento inicial alto WHQGH� D� ³SUHQGHU´� R� FOLHQWH�� 0RGLILFDU� XP� 6*%'� p� RQHURVR� H� complexo; 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 16 de 136 x Manutenção e atualização: como todo software, o SGBD deve ser mantido atualizado. Além disso, periodicamente VXUJHP� QRYDV� YHUV}HV�� FRP� PDLV� IXQFLRQDOLGDGHV�� ³H[LJLQGR´� substituições periódicas, com novos custos de hardware, software e treinamento de pessoal. 1.7 Arquitetura três esquemas de um SGBD A arquitetura três esquemas é uma abordagem, que ilustra a separação entre usuário e aplicação. Nesta arquitetura, os esquemas podem ser descritos em três níveis: Arquitetura três esquemas, Elmasri e Navathe (2006) Nível externo: abrange os esquemas externos, ou visões de usuário. Cada esquema descreverá apenas a visão pertinente de cada usuário a respeito do Banco de Dados, ocultando o restante. Por exemplo, para um aluno, de um sistema de aulas online, somente determinada parte do BD lhe é relevante, provavelmente relacionada aos cursos que realiza. Para um administrador financeiro desse sistemas, por sua vez, aspectos administrativos serão mais relevantes, relacionados aos pagamentos dos cursos e de pessoal. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 17 de 136 Nível conceitual: possui um esquema conceitual, que descreve o banco de dados como um todo. Oculta detalhes do armazenamento físico, enfatizando entidades, tipos de dados e restrições. Nível interno: apresenta um esquema interno, descrevendo a estrutura de armazenamento físicos do banco de dados. 1.7.1 Independência lógica e independência física dos dados Dois conceitos relacionados à arquitetura três esquemas que, não raro, aparecem em questões de concursos são a independência lógica e a independência física dos dados. Independência lógica é a capacidade de alterar o esquema conceitual sem precisar modificar os esquemas externos. Independência física é a capacidade de alterar o esquema interno sem precisar modificar o esquema conceitual. Esses esquemas e seus respectivos mapeamentos são guardados no catálogo do banco de dados. Ele será visto na próxima aula. 1.8 Categorias de modelos de dados Projetar um banco de dados, como você provavelmente deve imaginar, é uma atividade que requer planejamento e organização. Didaticamente, pode-se dividir esta tarefa em etapas. A primeira fase do projeto do banco é o levantamento e análise de requisitos, que na prática, é a especificação das necessidades do usuário do banco. Entrevista-se o usuário do banco para entendimento e documentação dos seus requisitos de dados. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 18 de 136 A segunda fase é o projeto conceitual, em que já se criam descrições detalhadas de tipos de entidades, relacionamentos, atributos e restrições. A modelagem conceitual empregada baseia-se no mais alto nível e deve ser usada para envolver o cliente. Os exemplos de modelagem de dados visto pelo modelo conceitual são mais fáceis de compreender, já que não há limitações ou aplicação de tecnologia específica. O modelo normalmente utilizado é o modelo entidade- relacionamento, com a construção do Diagrama de Entidade e Relacionamento. Este diagrama é a chave para a compreensão do modelo conceitual de dados. Cria-VH� R� TXH� FKDPDPRV� GH� ³PLQL-PXQGR´�� D� observação da realidade mapeada dentro do sistema que se deseja desenvolver. O modelo e-r é muito importante e será bastante explorado nos exercícios. Ilustração de modelagem conceitual usando o Diagrama E-R. Posteriormente ocorre as especificações das necessidades funcionais, depreendidas do próprio projeto conceitual. Caso exista algum impedimento funcional para a implementação do banco, talvez seja necessário voltar ao projeto conceitual e realizar algumas modificações. Em seguida aparece o projeto lógico, ou mapeamento do modelo de dados. A modelagem lógica (ou representacional, ou de implementação),por sua vez, já realiza o mapeamento do esquema 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 19 de 136 conceitual para o modelo de dados que será usado. O modelo de dados de implementação normalmente é o modelo de dados relacional, que também é importantíssimo, muito cobrado em provas e será bastante abordado nos exercícios. Tal projeto consolidará a escrita do script do banco, com a criação do seu esquema. Modelagem relacional: ilustração com tabelas e atributos Por fim, temos o projeto físico, durante a qual são definidas as estruturas de armazenamento interno, índices, caminhos de acesso e organizações de arquivo para os arquivos do banco de dados. Já passa a depender de regras de implementação e restrições tecnológicas. Figura: Do modelo conceitual ao físico(MAXEY,2002) 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 20 de 136 2) (FGV ± MPE/MS ± Banco de Dados ± 2013) Um modelo de dados é uma descrição formal das estruturas de dados presentes em um banco de dados. Os dois níveis de abstração dos modelos de dados considerados em um projeto de banco de dados são: a) modelo conceitual e modelo lógico. b) modelo lógico e modelo físico. c) modelo conceitual e modelo físico. d) modelo de classes e modelo de entidades. e) modelo de entidades e modelo de relacionamentos. Os dois principais níveis de abstração são modelo conceitual e modelo lógico. Resposta certa, alternativa a). 1.9 Tipos de modelos de dados Apoiando a estrutura de um banco de dados está o modelo de dados: uma coleção de ferramentas conceituais para descrever dados, relações de dados, semântica de dados e restrições de consistência. Um modelo de dados oferece uma maneira de descrever o projeto de um banco de dados no nível físico, lógico e de visão. Existem vários modelos de dados diferentes. Vejamos alguns: Modelo hierárquico: O modelo hierárquico foi o primeiro a ser reconhecido como um modelo de dados. Nele, os registros são conectados em uma estrutura de dados em árvore, similar a uma árvore invertida (ou às raízes de uma árvore). 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 21 de 136 Neste modelo, uma ligação é uma associação entre dois registros. O relacionamento entre um registro-pai e vários registros- filhos possui cardinalidade 1:N, ou 1:1, sendo N =1. Os dados organizados segundo este modelo podem ser acessados segundo uma sequência hierárquica com uma navegação do topo para as folhas e da esquerda para direita. Um registro pode até estar associado a vários registros diferentes, desde que seja replicado. Neste exemplo, perceba que os registros da tabela empregado possuem hierarquia direta em relação aos registros da tabela departamento. O modelo hierárquico possui muitas limitações. Ele pode ser útil para modelar esquemas fortemente hierárquicos (como classificações para espécies dos reinos animal e vegetal, corporações, hierarquias governamentais, etc.), mas apresenta limitações quando representa modelos não-hierárquicos. Isto provocou o surgimento do modelo em rede. Modelo em rede: o modelo em rede acabou eliminando a hierarquia, pois passou a permitir que, em tese, cada registro filho pudesse ser ligado a mais de um registro pai. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 22 de 136 Nesse caso, a estrutura em árvore se desfaz, e passa a se assemelhar a uma estrutura em grafo. Relacionamentos N:M também passam a ser permitidos (lembrando que o relacionamento é estabelecido entre registros). Perceba que, neste modelo, é possível colocar um empregado vinculado a mais de um departamento, o que não era possível no modelo hierárquico. Os modelos de dados em rede e hierárquicos precederam o modelo de dados relacional, que é o mais utilizado atualmente. São muito pouco utilizados nos dias de hoje, a não ser em bancos de dados antigos que ainda estejam em vigor. Modelo relacional: O modelo relacional usa uma coleção de tabelas para representar os dados e as relações entre eles. Foi o modelo que eu utilizei para explicar os conceitos básicos de banco de dados, e é o modelo mais utilizado (e cobrado em provas). Cada tabela possui diversas colunas, e cada coluna possui um nome único. Tabelas também são chamadas de relações.(Deixei isso pra depois de propósito: não confunda relação com os relacionamentos entre as tabelas). Cada tabela contém tuplas. Cada tupla possui um número fixo de campos, ou atributos. As colunas das tabelas correspondem aos atributos do tipo de 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 23 de 136 registro. Este modelo é o mais utilizado na fase de projeto lógico do BD. Modelo Entidade/Relacionamento: O modelo de Entidade- Relacionamento (E-R) é baseado na percepção de um mundo real que consiste em uma coleção de objetos básicos, chamados entidades, e os relacionamentos entre esses objetos (existem autores que falam em relação para descrever relacionamentos. Preste atenção em uma eventual questão de prova, para saber o que a banca quer). Uma entidade é uma ³FRLVD´�RX� ³REMHWR´�QR�PXQGR� UHDO�TXH�p�GLVWLQJXtYHO�GRV�RXWURV�REMHWRV� (como pessoa, ou carro). É um modelo mais alto nível, empregado na fase do projeto conceitual, que é anterior à fase do projeto lógico, no qual se utiliza o modelo relacional. Também cai em provas. Modelo de dados orientado a objetos: É uma extensão do modelo ER com noções de encapsulamento de identidade do objeto (isso será visto em programação). Modelo de dados objeto-relacional: Combina características do modelo relacional com o modelo orientado a objetos. P.S: Não se surpreenda em ter visto os modelos relacional e entidade relacionamento também neste tópico. Os tipos de modelos de dados apresentados não deixam de ter um caráter histórico, refletindo a evolução dos modelos ao longo do tempo. Por isso, os modelos relacional e E-R acabaram se consolidando nas categorias vistas anteriormente. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 24 de 136 1.10 O Modelo Entidade-Relacionamento Aqui estamos diante de um diagrama ER, do modelo entidade- relacionamento. Aquele mais conceitual, alto nível. Façamos uma breve legenda: Retângulos: são as entidades. Losangos: representam os relacionamentos. Elipses: representam os atributos (ausente neste diagrama). Linhas: vinculam conjuntos de entidades a conjuntos de relacionamentos. Linhas duplas: indicam participação total de uma entidade em um conjunto de relacionamentos. Esta notação, de retângulos e losangos, também é chamada de notação Chen, em homenagem ao seu autor, Peter Chen. Esta abordagem, como você podeperceber, consegue mostrar para um usuário, até mesmo o leigo em banco de dados, algumas características desse banco hipotético, ilustrado no modelo. Dele, é possível compreender que: Empregados gerenciam departamentos; Empregados trabalham em projetos;e Departamentos controlam projetos (perceba as sentenças no estilo entidade-relacionamento-entidade, em lógica de primeira ordem). 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 25 de 136 Perceba que, com as informações apresentadas, detalhes de implementação do banco de dados ainda não são conhecidos. Quais são as tabelas desse banco? Você ainda não sabe. Um primeiro destaque nesse modelo, comumente cobrado em provas, é a indicação de participação parcial ou participação total no relacionamento, representados, respectivamente, por linhas simples em duplas. Uma participação parcial indica que aquele relacionamento não é obrigatório para aquela entidade. Preste atenção apenas nesse trecho da figura, abaixo: A linha simples entre Empregado e Gerencia indica que não há obrigatoriedade de que um empregado gerencie um departamento. Por outro lado, a linha dupla em Departamento indica que todo Departamento deve ter um Empregado que o gerencie. Compreendeu? Fugindo um pouco do modelo E-R, mas, com o objetivo de fazê-lo entender melhor essa obrigação (ou não), imagine uma fotografia de duas tabelas de banco de dados com as seguintes informações: EMPREGADO CodEmpregado NomeEmpregado Gerente? 001 Marcos S 002 Paula N 003 Roberta S 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 26 de 136 004 Marcelo N DEPARTAMENTO CodDepartamento NomeDepartamento CodGerente MKT Marketing 001 ADM Administração 003 Neste exemplo, materializei duas tabelas que mostram Marcos gerenciando o Departamento de Marketing, e Roberta gerenciando o Departamento de Administração. Do jeito que montei as tabelas, todo departamento terá um gerente, mas nem todo empregado será gerente. Razoável, não é mesmo? P.S.: as fotografias das tabelas não fazem parte do modelo E- R! Apenas estão aí para facilitar o seu entendimento! O segundo aspecto importante, também retratado nas imagens, é a questão da cardinalidade (1, N, M). Para tal, trataremos em tópico específico. 1.11 Cardinalidade Podemos ver a mesma imagem novamente? 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 27 de 136 A cardinalidade serve para expressar o número de entidades que uma entidade pode associar-se, por meio de um relacionamento. A figura acima retrata os três tipos possíveis de cardinalidade. Na cardinalidade (1:1), uma entidade E1 pode relacionar-se a, no máximo, uma outra entidade E2, por meio de um relacionamento, e vice- versa. É o caso entre Empregado e Departamento, ilustrado no tópico anterior. Na cardinalidade (1:N), uma entidade E1 pode relacionar-se com várias entidades E2, porém, uma entidade E2 pode relacionar-se apenas com uma entidade E1. É o que acontece entre Departamento e Projeto. Preste atenção na imagem e na leitura das frases a seguir: um Departamento pode controlar N Projetos, e um Projeto pode ser controlado por um Departamento. Captou? Gostaria de enxergar isso em tabelas? DEPARTAMENTO CodDepartamento NomeDepartamento CodGerente MKT Marketing 001 ADM Administração 003 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 28 de 136 PROJETO CodProjeto NomeProjeto CodDepResponsavel P01 Inovação MKT P02 Reestruturação ADM P03 Vender Mais MKT P04 Novo Produto MKT Captou? Do jeito que montei as tabelas, os Departamentos podem ter vários projetos, mas cada projeto tem apenas um Departamento responsável. P.S.: as fotografias das tabelas não fazem parte do modelo E- R! Apenas estão aí para facilitar o seu entendimento! Por último, falemos da cardinalidade (N:M) ou (N:N). Nela, uma entidade E1 pode relacionar-se com várias entidades E2, assim como uma entidade E2 pode relacionar-se apenas com várias entidades E1. É o que acontece entre Empregado e Projeto. Um Empregado pode trabalhar em M Projetos, e um Projeto pode ³VHU� WUDEDOKDGR´� SRU� N Empregados. Captou? Em tabelas, isso fica um pouco diferente: 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 29 de 136 PROJETO CodProjeto NomeProjeto CodDepResponsavel P01 Inovação MKT P02 Reestruturação ADM P03 Vender Mais MKT P04 Novo Produto MKY EMPREGADO CodEmpregado NomeEmpregado Gerente? 001 Marcos S 002 Paula N 003 Roberta S 004 Marcelo N TRABALHA CodEmpregado CodProjeto 001 P01 001 P02 002 P03 003 P01 Nesta estrutura, você percebe que a tabela Trabalha serve para materializar o relacionamento entre Empregado e Projeto, e que, desta forma, empregados podem trabalhar em vários projetos, e projetos podem ter vários empregados, sem restrições. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 30 de 136 Agora, reveja aquele esquema de banco de dados, do início da apostila: O relacionamento entre as tabela usuario e comentario indicam, do lado usuario (1,1), e do lado comentario (0,n). Isso retrata um relacionamento (1:N) entre essas entidades. Ou seja, Cada usuário cadastrado na tabela usuario pode fazer de zero a muitos comentários. Cada comentário, por sua vez, deverá ter sido feito por apenas um único usuário, entendeu? Mais um pouco: veja as tabelas usuario, usr_ai e area_interesse. A tabela usuario possui um relacionamento de cardinalidade (1:N) com a tabela usr_ai. Ou seja, isso implica que cada usuário pode ter zero ou mais áreas de interesse. Por exemplo, Paulo pode se interessar por esportes, ficção e romance. Por sua vez, area_de_interesse possui um relacionamento de cardinalidade (1:N) com a tabela usr_ai. Ou seja, isso implica que cada área de interesse pode estar relacionada a zero ou mais usuários. Captaram? Na realidade, existe um relacionamento de cardinalidade (N:N), também chamado de (N:M), entre usuario e area_interesse. Só que, para implementar o banco de dados de uma maneira organizada, foi necessário fazer uma tabela de ligação entre usuario e area_interesse. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 31 de 136 A cardinalidade pode ser expressada de diferentes formas, de acordo com o modelo ilustrado. Inclusive, como no esquema acima, ficaram explícitas as cardinalidades mínimas e máximas, uma vez que o esquema não possui linhas simples e duplas para tal. Uma cardinalidade (1:N), porexemplo, foi retratada pelos pares (1,1) e (0,n), indicando que uma entidade E1 pode ser relacionar com 0 a n entidades E2, ao passo que uma entidade E2 deve se relacionar com uma, e apenas uma entidade E1. Compreendido? 1.11.1 Notação Engenharia da Informação (pé de galinha) A notação Engenharia da Informação é uma forma alternativa de representar entidades e relacionamentos no modelo E-R. Criada por James Martin, é apelidada por notação pé-de-galinha, pelo símbolo característico que representa a cardinalidade n. Vejamos um pouco sobre esta notação: Entidades: retângulos Atributos: dentro do retângulo Relacionamentos: linhas, apenas. Cardinalidades: linha simples representa 1, pé-de-galinha representa N (na horizontal), circunferência representa relacionamento opcional (cardinalidade mínima zero). Veja o exemplo comparativo, abaixo, que ilustra bem a comparação entre a notação Chen e a notação pé-de-galinha: 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 32 de 136 Um relacionamento 1-1 é ilustrado, na notação pé-de-galinha, por duas listras verticais, ³||³� (1-1). Zero é representado por ³o´ e N pelo ³pé-de-galinha.´ 1.11.2 Modelo E-R Estendido (ou modelo EER) O modelo EER adota tudo o que vimos anteriormente acerca do modelo E-R, mas inclui os conceitos de subclasse, superclasse e herança, além dos consequentes conceitos de especialização e generalização. O modelo EER é mais adequado quando percebe-se que algumas entidades podem ser especializadas ou generalizadas. Por exemplo, suponha que o banco de dados de uma empresa irá cadastrar seus Funcionários. Todos eles possuem um nome e um código, porém, aqueles que forem Engenheiros terão um número de CREA, e aqueles que forem Médicos terão um CRM e uma especialidade. Portanto, uma conduta interessante seria transformar Funcionário em uma superclasse, mantendo nele os atributos comuns às subclasses Engenheiro e Médico. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 33 de 136 Especialização de Funcionário em Engenheiro e Médico, utilizando a notação EER. Engenheiro e Médico herdam os atributos comuns de Funcionário. Assim sendo, Engenheiro e médicos são especializações da entidade Funcionário, em uma abordagem top-down. Se Funcionário fosse uma FODVVH� FULDGD� ³DSyV´� D� FULDomR� GDV� HQWLGDGHV� 0pGLFR� H� (QJHQKHLUR�� HP� uma abordagem bottom-up, diríamos que houve uma generalização das classes citadas. Tranquilo? Vejamos outro exemplo abaixo: 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 34 de 136 Pagamento: no crediário ou no cartão? Pagamento é uma superclasse, e Crediario e Cartao são subclasses que especializam Pagamento. Neste caso há uma sutil variação na notação, substituindo o triângulo SRU�XPD�FLUFXQIHUrQFLD��H�FRP�GXDV�³VHWDV´�FLUFXODUHV�DSRQWDQGR�SDUD�DV� classes herdeiras. Tais classes são chamadas assim porque elas herdam os atributos das superclasses (os atributos das superclasses são atributos comuns, pertencentes também às subclasses). A generalização/especialização pode ocorrer segundo quatro variáveis, combinadas duas a duas. Ela pode ser exclusiva (também chamada disjunta) ou compartilhada, bem como total ou parcial. Os exemplos abaixo elucidarão essas características. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 35 de 136 Compartilhado (c): pessoas podem ser funcionários e associados simultaneamente. Exclusiva ou disjunta (x ou d): se uma mídia é livro, ela não pode ser DVD, e vice-versa. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 36 de 136 Total (t): todas as pessoas são funcionários ou associados. Parcial (p): nem todas as mídias são livros ou DVDs. Assim sendo, são possíveis combinações XT, XP, CT e CP. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 37 de 136 3) (FGV ± MPE/MS ± Banco de Dados ± 2013) Segundo o modelo de entidade e relacionamento, a cardinalidade mínima representa o número mínimo de ocorrências de uma entidade que estão relacionadas a uma ocorrência de outra entidade através de um relacionamento. Os valores das cardinalidades mínimas podem ser a) zero ou um. b) zero ou n. c) um ou n. d) um número inteiro n menor que zero ou n. e) um número inteiro n menor que zero ou zero. A cardinalidade mínima implica em obrigação ou não de pertencer a um relacionamento. Seus valores são zero (participação parcial) ou um (participação total). Resposta certa, alternativa a). 1.12 Modelo Relacional Vamos agora tratar do modelo relacional. Apenas relembrando, o modelo relacional está ligado ao Projeto Lógico, aquele em um nível intermediário entre o modelo conceitual e o modelo físico. Está lembrado? Vamos ver aquele esquema novamente: 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 38 de 136 Creio que você já o entenda mais do que quando o viu pela primeira vez. Mas vamos entendê-lo ainda mais, pois ele está carregado de informações do modelo relacional. Perceba que as tabelas (que também podem ser chamadas de relações) são os principais elementos do banco. comentario, contato, categoria, recado, area_interesse... Os atributos são componentes das entidades. Na entidade comentário, por exemplo, temos os atributos código, conteudo, data_criacao, cod_usuario_remetente e cod_arquivo. As informações colocadas ao lado dos atributos, conforme visualizado neste esquema, são os metadados. Código será um inteiro de até 11 dígitos, conteúdo será um varchar com até 1000 caracteres (varchar, basicamente, quer dizer que o número de caracteres é variável, indo até o limite estabelecido), data_criacao será uma informação do tipo data- hora, e assim sucessivamente. Por fim, temos os registros da tabela, ou tuplas. Registros e tuplas são sinônimos. A imagem acima, utilizada como exemplo, é um modelo que mostra o que deverá conter no banco. O banco de dados, efetivamente, são essas tabelas efetivamente preenchidas. Um exemplo da tabela comentario preenchida com dados poderia ser: 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 39 de 136 E continuemos vendo detalhes! 1.12.1 Tipos de Atributos Os atributos, como já vimos, são os elementos que compõem as entidades. Eles podem receber várias classificações.Atributos Compostos versus Simples (Atômicos). Os atributos compostos são aqueles que podem ser divididos em partes menores, que representam a maioria dos atributos básicos com significados independentes. Por exemplo, um atributo Endereço, em uma tabela hipotética, pode ser subdividido em EnderecoRua, Cidade, Estado e CEP, com os valores 'Av. Rangel Pestana, 300', 'São Paulo', 'SP' e '01017- 911'. Os atributos que não são divisíveis são chamados simples ou atributos atômicos. E os atributos compostos podem formar uma hierarquia; por exemplo, EnderecoRua pode ser subdividido, ainda, em três atributos simples: Rua, Número e Apartamento. O valor de um atributo composto é a concatenação dos valores componentes dos seus atributos simples. Os atributos simples são indivisíveis. Atributos Monovalorados versus Multivalorados. A maioria dos atributos tem um valor único para uma dada tupla; esses atributos são chamados monovalorados. Por exemplo, Idade é um atributo 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 40 de 136 monovalorado de uma pessoa. Em alguns casos, um atributo pode ter um conjunto de valores para a mesma entidade ² por exemplo, um atributo Cor para um carro ou um atributo Titulação para uma pessoa. Os carros com uma cor têm um valor único, enquanto aqueles com dois tons contêm dois valores para Cor. Da mesma forma, uma pessoa pode não ter um título acadêmico, outra pessoa pode ter um e, uma terceira pessoa, dois ou mais títulos, portanto, pessoas diferentes podem ter números de valores diferentes para o atributo Titulação. Esses atributos são chamados multivalorados. Um atributo multivalorado deve ter limite inferior e superior para restringir o número de valores permitidos a cada entidade individual. Por exemplo, o atributo Cor de um carro pode ter entre um e três valores, se presumirmos que um carro possa ter, no máximo, três cores. Atributos Armazenados versus Derivados. Em alguns casos, dois (ou mais) valores de atributos estão relacionados ² por exemplo, os atributos Idade e DataNascimento de uma pessoa. Para uma tabela pessoa em particular, o valor de Idade pode ser determinado pela data corrente (hoje) e o valor de DataNascimento da pessoa. Portanto, o atributo Idade é chamado atributo derivado, e é dito derivado do atributo DataNascimento, que, por sua vez, é chamado atributo armazenado. Alguns valores de atributos podem ser derivados de entidades relacionadas; por exemplo, um atributo NumerodeEmpregados, de uma entidade departamento, pode ser derivado da contagem do número de empregados relacionados (que trabalham) nesse departamento. Valores nulls (Nulos). Em alguns casos, determinada tabela pode não ter um valor aplicável a um atributo. Por exemplo, o atributo Apartamento de um endereço se aplica apenas a endereços que estão em edifícios de apartamentos, e não a outros tipos de residência, como as casas. Por analogia, um atributo Titulação só se aplica a pessoas com titulação acadêmica. Para essas situações é criado um valor especial chamado null (nulo). Um endereço de uma casa teria valor null para seu atributo Apartamento, e uma pessoa sem titulação acadêmica teria valor null para Titulação. O valor null pode ser usado também quando não conhecemos o valor de um atributo para uma entidade em particular; por exemplo, se não soubermos o telefone residencial de 'Joao Paulo'. O sentido do primeiro tipo de null corresponde a não aplicável, ao passo que o sentido do último se refere a desconhecido. A categoria 'desconhecido' de null pode ser, ainda, classificada em dois casos. O primeiro aparece quando se sabe que o valor do atributo existe mas está faltando ² por 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 41 de 136 exemplo, se o atributo Altura de uma pessoa é dado como null. O segundo caso surge quando não se sabe se o valor do atributo existe ² por exemplo, se o atributo FoneResidencial de uma pessoa é null. Atributos Complexos. Observa-se que os atributos compostos e multivalorados podem ser aninhados de uma maneira arbitrária. Podemos representar essa organização arbitrária agrupando os componentes de um atributo composto entre parênteses (), separando os componentes por meio de vírgulas e mostrando os atributos multivalorados entre chaves {}. Esses atributos são chamados atributos complexos. Por exemplo, se uma pessoa pode ter mais de uma residência e cada uma delas pode ter múltiplos telefones, um atributo EnderecoFone para uma pessoa pode ser especificado contendo mais de um atributo, como por exempo contendo os atributos Endereco e Telefone. Ex: {EnderecoFone({Fone(CodigoArea,NumeroFone)},Endereco(EnderecoRua (Numero, Rua, Apartamento),Cidade, Estado, CEP))}. Não confunda! Simples Monovalorado indivisível um único valor na tupla Composto Multivalorado pode ser dividido em várias partes mais de um valor dentro da mesma tupla Atributo composto pode ser monovalorado? SIM! Atributo simples pode ser multivalorado? SIM! Exemplo: Carro Cor Gol Preto, Azul, Amarelo Cor é um atributo simples, mas pode ter mais de um valor, dado um único registro. Quando o atributo é composto e multivalorado simultaneamente, ele é complexo. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 42 de 136 1.12.2 Restrições de Integridade Pois então, um banco de dados relacional, em sua concepção, necessita de suas tabelas, das colunas das tabelas(os seus atributos), e de suas restrições de integridade, fundamentais para a consistência do banco de dados. Tabelas e colunas você já conhece. Agora, falemos dessa característica importantíssima, que são as restrições de integridade. Por meio das restrições de integridade é que são assegurados o correto relacionamento entre as tabelas. As restrições de integridades podem ser de: x Domínio ± amarrando os possíveis valores de um atributo (inteiro, string, não nulo, positivo, tipo, etc.) x Vazio ± dizer se um campo pode ou não ser null. Não deixa de ser um subitem da integridade de domínio. x Chave ± impedindo que uma chave primária se repita, ou seja nula; x Referencial ± assegurando que uma chave estrangeira possua respectiva associação na tabela de origem; As restrições de domínio e vazio são relativamente intuitivas. As de chave e referencial são as chaves primárias e estrangeiras, as quais veremos a seguir. 1.12.3 Chave Primária x Chave Estrangeira Todo registro em um banco de dados precisa de um atributo, ou vários, que possibilitem caracterizar aquele registro no banco como único. Ex: codigo_cliente endereco telefone cidade estado 1 Rua do Imperador Dom Pedro II, SN 0800- 2851244 Recife PE 2 Rua do Imperador Dom Pedro II, SN 0800- 2851244 Recife PE 3 Rua José Augusto (81) 3183- Olinda PE 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 43 de 136 Moreira, 1037 5941 4 Rua José Augusto Moreira, 1037 (81) 3183- 5941 Olinda PE Perceba que, intencionalmente, escrevi tuplas parecidíssimas, diferenciadas apenas pelo atributo codigo_cliente.O por quê disso? Imagine que a tabela acima possui um relacionamento com outra tabela, como a tabela abaixo: codigo_cliente Nome 1 Jader 2 Afonso 3 André 4 Simone Agora você percebe um motivo. Dois clientes diferentes, que possuem um mesmo endereço. Logo, em um banco de dados relacional são necessárias duas coisas: diferenciar uma tupla da outra e relacionar as tabelas. Neste pequeno exemplo, a diferenciação entre as tuplas se faz por meio da chave primária. No caso, o atributo codigo_cliente. Voltando ao esquema que eu tanto tenho repetido, perceba que ali WHPRV� DOJXQV� DWULEXWRV� FRP� FKDYHV� HP� ³GRXUDGR´�� RXWURV� FRP� FKDYH� ³SDUFLDOPHQWH�GRXUDGD´�H�RXWURV�FRP�FKDYH�³SUDWHDGD´� 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 44 de 136 A chave primária é o atributo(coluna) ou atributos(colunas), que asseguram que cada tupla (linha) da tabela é única. codigo é a chave primária de comentario; codigo é a chave primária de categoria;cod_usuario e cod_usuario_contato são a chave primária de contato; e por aí vai. Mesmo que composta por vários atributos, a chave primária é única e o seu papel é o de restrição de chave, ou seja, garantir que tuplas não sejam repetidas. Nesse esquema, as chaves douradas são chaves primárias. Um outro conceito interessante referente às restrições de chave é o conceito de chave candidata, ou chave alternativa. Às vezes, mais de um atributo de uma tabela são únicos. Tenha como exemplo uma tabela em que existam os campos CPF, TituloEleitor e Identidade. Todos esses atributos serão únicos, e eles são chamados de chaves candidatas. Uma dessas chaves convenientemente será escolhida como chave primária e as demais permanecerão como chaves candidatas. A chave estrangeira, por sua vez, exerce o papel de restrição referencial�� $� FKDYH� HVWUDQJHLUD� ³DPDUUD´� RV relacionamentos entre as tabelas, e explica o porquê das tabelas possuírem linhas interligando-as, nos modelos. Isso ainda implica que todo valor preenchido na tabela com chave estrangeira possua uma respectiva associação na tabela onde a chave associada é primária. No esquema, as chaves prateadas são chaves estrangeiras. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 45 de 136 cod_usuario_remetente e cod_arquivo são chaves estrangeiras na tabela comentario, pois referenciam, respectivamente, a chave primária codigo na tabela usuário e a chave primária codigo na tabela arquivo; cod_usuario e cod_usuario_contato, que juntos compõem a chave primária de contato, também são chaves estrangeiras, pois referenciam, respectivamente, a chave primária codigo na tabela usuário e a chave primaria codigo na tabela usuário (sim, isso mesmo, a mesma chave na mesma tabela). E assim sucessivamente. Procure enxergar todos os demais relacionamentos nesta tabela. Perceba que, mesmo que um mesmo atributo possa ser (ou compor) chave primária e ser chave estrangeira, as funções da chave são bem distintas. A primária restringe unicidade ou nulidade, enquanto a estrangeira restringe relacionamento. No esquema, as chaves parcialmente douradas estão fazendo o papel de chave primária, mas funcionam ao mesmo tempo como chaves estrangeiras, na mesma tabela. Por fim, acho interessante que você saiba que, no modelo relacional, podemos descrever as tabelas, seus atributos e restrições da seguinte forma abaixo, com os atributos entre parênteses e as chaves sublinhadas: Comentario (codigo, conteudo, data_criacao, cod_usuario, cod_arquivo) Usuario (codigo, nome, email, login, senha) Contato(cod_usuario, cod_usuario_contato) 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 46 de 136 +i�DXWRUHV�TXH�VXEOLQKDP�³FKHLR´�DV�FKDYHV�SULPiULDV�H�³SRQWLOKDGR´� as chaves estrangeiras. Em questões de concursos, porém, nunca vi esta GLIHUHQFLDomR��HVWDQGR�DV�FKDYHV�VHPSUH�VXEOLQKDGDV�³FKHLDV´� 1.12.4 Outras chaves Chave substituta: A chave substituta, ou surrogate key, ou chave artificial, é um campo, normalmente auto incremental, que pode (não é obrigatório) ser utilizado para definir a chave primária de uma tabela, de uma maneira genérica. É útil, particularmente, para substituir chaves primárias compostas por muitos atributos, o que costuma impactar negativamente a performance do banco de dados. * Nome Telefone 1 Paulo (11) 99999-8888 2 Paulo (11) 99999-7777 3 Paulo (11) 3030-3131 4 Marta (11) 5678-9012 5 Marta (11) 99988-9876 6 Rita (11) 98765-4321 Chave substituta: coluna não identificada, marcada com * Algumas características da chave substituta: x O valor é único para a tabela, portanto nunca reutilizado (ou seja, em caso de exclusão, o número não será reutilizado); x O valor é gerado pelo sistema(automaticamente); x O valor não é manipulável pelo usuário ou aplicação; x O valor não contém nenhum significado semântico; x O valor não é visível para o usuário ou aplicação (no caso de modelagem relacional); x O valor não é composto de vários valores a partir de diferentes domínios. Superchave: Superchave é um conjunto de um ou mais atributos que, tomados coletivamente, nos permitem identificar de maneira unívoca uma entidade em um conjunto de entidades. Em outras palavras, não podem existir duas ou mais linhas da tabela com o(s) mesmo(s) valores de uma superchave. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 47 de 136 Perceba que a superchave é um conceito mais abrangente do que o conceito de chave primária. A chave primária é aquele atributo ou conjunto de atributos que garante que cada registro na tabela é único. A superchave, por sua vez, é qualquer conjunto de atributos que consegue a mesma coisa. Por exemplo, na tabela Comentário: Comentario (codigo, conteudo, data_criacao, cod_usuario, cod_arquivo) A chave primária é codigo. Isto posto, os atributos codigo e conteudo formam uma superchave, os atributos codigo, conteudo e data_criacao também formam uma superchave, e por aí vai. Qualquer conjunto de atributos escolhido que inclua a chave primária formará uma superchave. 4) (FGV ± MPE/MS ± Banco de Dados ± 2013) Com relação ao tema ³PRGHOR�UHODFLRQDO´��DQDOLVH�DV�DILUPDWLYDV�D�VHJXLU� I. Chave estrangeira é o mecanismo que permite a implementação de relacionamentos em um banco de dados relacional. II. Chave estrangeira é uma coluna única ou combinação de colunas cujos valores necessariamente aparecem como chave primária em outra tabela. III. Chave candidata é uma coluna cujos valores necessariamente aparecem como chave secundária em tabelas que participam de autoǦrelacionamentos. Assinale: a) se somente a afirmativa I estiver correta. b) se somente a afirmativa II estiver correta. c) se somente a afirmativa III estiver correta. d) se somente as afirmativas I e II estiverem corretas. e) se somente as afirmativas I e III estiverem corretas. Analisando os itens: I. Chave estrangeira é o mecanismo que permite a implementação de relacionamentos em um banco de dados relacional. ± Correto. Por meio dela é que astabelas se relacionam. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 48 de 136 II. Chave estrangeira é uma coluna única ou combinação de colunas cujos valores necessariamente aparecem como chave primária em outra tabela. ± Correto. Se essa condição não fosse atendida, não teríamos restrição de integridade. III. Chave candidata é uma coluna cujos valores necessariamente aparecem como chave secundária em tabelas que participam de autoǦrelacionamentos. ± Errado! Que sentença absurda. Chave candidada é um atributo que tem potencial para ser chave primária, em função das suas características. Resposta certa, alternativa d). 1.13 Gerenciamento de Transações Creio que podemos voltar a este aspecto, uma vez que você compreende um pouco mais sobre banco de dados. Lembra que, no começo da apostila, eu falei que o SGBD precisava gerenciar milhares de transações simultâneas, fazer controle de redundância, dentre outros? Acho que você compreende isso melhor agora. Basta imaginar uma simples transação modificando múltiplas tabelas, verificando restrições de integridade. Já não é algo simples para uma transação única. E quando as transações tentam modificar os mesmos campos de uma tabela ao mesmo tempo? É aí que entra o famoso controle de concorrência do SGBD, organizando as transações, impedindo que o Banco de Dados entre em um estado inconsistente. Idealmente, toda transação em um banco de dados deverá ser: Atômica: ou a transação é feita ou não é feita. Parece óbvio, mas transações complexas em um banco, envolvendo várias tabelas, podem sofrer interrupções inesperadas, ou não conseguirem terminar por entrar em conflito com outra que ocorra ao mesmo tempo. Nesse caso, o SGBD deverá ser capaz de reverter o que parcialmente foi modificado (realizar o rollback); 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 49 de 136 Consistente: os dados deverão permanecer íntegros e obedientes às regras do banco de dados (metadados); Isolada: o resultado de uma transação executada concorrentemente a outra deve ser o mesmo que o de sua execução de forma isolada. Operações exteriores a uma dada transação jamais verão esta transação em estados intermediários. Durável: os efeitos de uma transação em caso de sucesso (commit) devem persistir no banco de dados mesmo em presença de falhas. os dados modificados devem estar disponíveis em definitivo. Às vezes parece óbvio, mas os SGBDs de grandes corporações trabalham com grandes bases de dados, sofrendo constantes modificações, com dados distribuídos, inclusive, por várias partes do mundo. Assegurar o ACID é um verdadeiro desafio. 1.14 Catálogo do sistema (dicionário de dados) Uma vez visto o modelo relacional, creio que seja mais simples entender o papel do catálogo, ou dicionário de dados. Um SGBD, ao implementar o modelo relacional, precisa armazenar não somente os dados propriamente ditos, mas também os metadados. Eles podem ser: x nomes das relações (tabelas); x nomes dos atributos das relações; x domínios dos atributos; x restrições de integridade; x mapeamentos (entre níveis externos, conceitual e interno). Além dos metadados, também podem ser armazenados: x nomes de usuários autorizados; x senhas; x índices, etc. 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 50 de 136 Enfim, essa série de informações que possibilitam o correto gerenciamento da Base de Dados fica armazenada naquilo que chamamos de Catálogo, ou Dicionário de Dados. Catálogo de Dados: Ilustração 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 51 de 136 1.15 Views Conforme explicado na arquitetura três esquemas de um SGBD, o nível externo descreve a cada usuário apenas a visão pertinente ao mesmo. Afinal de contas, pode não ser bom que todos os usuários finais vejam o esquema conceitual completo, seja por questões de segurança, ou até mesmo para sua compreensão. Para tal, um recurso muito eficiente é a utilização de visões (views). View é uma tabela única derivada de outras tabelas. Por não existir fisicamente, pode ser considerada uma tabela virtual. A visão, diferentemente das tabelas básicas, não contém suas tuplas armazenadas no banco de dados. Voltemos ao exemplo de Projeto e Departamento: DEPARTAMENTO CodDepartamento NomeDepartamento CodGerente MKT Marketing 001 ADM Administração 003 PROJETO CodProjeto NomeProjeto CodDepResponsavel P01 Inovação MKT P02 Reestruturação ADM P03 Vender Mais MKT P04 Novo Produto MKT 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 52 de 136 Dadas estas tabelas, pode ser conveniente criar uma visão para o usuário, que mostre apenas o Projeto e o nome do Departamento Responsável. Abaixo: VISÃO PROJETO Projeto Departamento Responsável Inovação Marketing Reestruturação Administração Vender Mais Marketing Novo Produto Marketing Compreendeu a utilidade da visão? É vantajoso utilizá-la quando o usuário realiza consultas muito frequentes a determinadas tabelas. Ainda, campos que não sejam muito úteis ao usuário final, como CodigoProjeto e CodigoDepartamento, podem ficar ocultos. Entretanto, por sua natureza virtual, as visões apresentam algumas restrições. Vejamos a seguir. 1.15.1 Views materializadas Certos SGBDs garantem que, em caso de modificação nas relações utilizadas em uma view, a mesma permanecerá atualizada. Essas views podem ser chamadas de views materializadas. A responsabilidade pela atualização da view será sempre do SGBD, e não do usuário. 1.15.2 Atualização de uma view 09079306622 09079306622 - Natalia Informática para ISS-Niterói Prof Victor Dalton ʹ Aula 05 Prof. Victor Dalton www.estrategiaconcursos.com.br 53 de 136 As views, por sua natureza virtual, apresentam restrições quanto à atualização, inserção ou exclusão de informações. Para ser atualizável, via de regra, uma view deverá: x Influenciar apenas uma tabela do banco de dados; x Em caso de atributos ocultos na view, ou esse atributo deve ser gerado automaticamente (no caso de um código, por exemplo), ou possuir valor default, ou poder ser nulo (null). Voltemos ao nosso exemplo: VISÃO PROJETO Projeto Departamento Responsável Inovação Marketing Reestruturação Administração Vender Mais Marketing Novo Produto Marketing Esta view não permite a modificação dos dados, pois ela envolve duas tabelas, Projeto e Departamento, lembra? Entretanto, caso ela viesse somente da tabela Projeto, poderíamos inserir, atualizar ou excluir algum dado da view. O atributo oculto CodProjeto, por ser gerado automaticamente (neste exemplo), não seria obstáculo para a modificação da view. Quando se
Compartilhar