Baixe o app para aproveitar ainda mais
Prévia do material em texto
35.327 - BANCO DE DADOS I (Apostila 1) Ciência da Computação Prof. Paulo Ricardo Rodegheri Universidade Regional Integrada do Alto Uruguai e das Missões - URI - Erechim Sistemas de Gerência de Bancos de Dados Histórico SGBDs Comerciais Bancos de Dados X Arquivos Convencionais Arquitetura de um SGBD Características e Vantagens do Uso Conceitos Relevantes em BD Modelos Lógicos de Bancos de Dados Modelo em Rede, Hierárquico e Relacional Introdução à abordagem Relacional Conceitos Relevantes em BDs Relacionais Evolução dos SGBDs BIBLIOGRAFIA Date, C.J., Introdução á sistemas de Bancos de Dados. Ed. Campus - 1994. Elmasri, R., Sistemas de Bancos de Dados – Fundamentos e Aplicações. Ed. LTC - 2005. Heuser, C.A. Banco de Dados - SGBD Relacional. Instituto de Informática - UFRGS. Korth, E.F., Silberschatz, A., Sistemas de Bancos de Dados. Makron Books - 1995. AVALIAÇÃO 1) Prova Teórica 2) Prova Álgebra Relacional + Prova SQL (Prática) 3) Prova SQL (Prática) BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 2 H I S T Ó R I C O 1945 Introdução da fita magnética (primeiro meio de armazenamento Externo). 1957 Primeiro computador comercial instalado. 1959 IBM introduz sistema Ramac, que permitiu acesso aleatório aos dados. 1961 Primeiro SGBD - IDS da GE. 65-70 Vários SGBDs, IBM desenvolve IMS. 1970 Papers de T. Codd sobre modelo relacional. 1971 CODASYL DBTG - Proposta para modelo em redes. 1972 Primeira conferência em BD - SIGMOD (Special Interest Group on Management of Data) da ACM (Association for Computing Machinery). 73-76 Diversos protótipos desenvolvidos por universidades ou centros de pesquisas: System R - IBM INGRESS - Univ. Califórnia System 2000 - Univ. Austin Sócrate - Grenóble ADABAS - Tech. Univ. Darmstadt 1975 Primeira conferência VLDB (Very Large Data Base). 1976 Modelo Entidade-Relacionamento introduzido por Peter Chen. 1982 IFIP Cis Conference : 14 modelos semânticos comparados. 1983 Já havia mais de 100 implementações de SGBDs Relacionais. 1985 SQL standard (preliminar). 1986 Protótipos SGBDOOs, Banco de Dados Dedutivos, Banco de Dados Extensíveis, Banco de Dados Inteligentes, etc. 1990 Primeiros produtos não convencionais. 1993 SQL3 BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 3 ALGUNS BD COMERCIALMENTE DISPONÍVEIS RELACIONAIS DB2 IBM SQL/DS IBM INGRESS Relational Technology Inc. ORACLE Oracle Corp. Rdb/VMS DEC SQL Server Microsoft SYBASE Sybase Inc. MYSQL INTERBASE/FIREBIRD POSTGRESQL LISTA INVERTIDA MODEL 204 CCA ADABAS Software AG DATACOM/DB Applied Data Research HIERÁRQUICO IMS IBM System 2000 Intel REDE IDMS Cullinet DMS 1100 Sperry TOTAL Cincom Systems BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 4 CONCEITOS • Um Banco de Dados é um conjunto de arquivos relacionados entre si (Chu, 1983). • Um Banco de Dados é uma coleção de dados operacionais armazenados, sendo usados pelos sistemas de aplicação de uma determinada organização (C.J. Date, 1985). • Um Banco de Dados é uma coleção de dados relacionados (Elmasri & Navathe, 1989). • Um Banco de dados é um conjunto de dados armazenados, cujo conteúdo informativo representa, a cada instante, o estado atual de uma determinada aplicação (Laender, 1990). • Um banco de dados “é uma coleção de dados inter- relacionados, representando informações sobre um domínio específico”, ou seja, sempre que for possível agrupar informações que se relacionam e tratam de um mesmo assunto, posso dizer que tenho um banco de dados. (KORTH,1994). • Um depósito de um conjunto de arquivos de dados computadorizados que oferece diversos recursos ao usuário, possibilitando-lhe a realização de várias operações, incluindo entre outras: Adição de novos arquivos (vazios) ao B.D. Inserção de novos dados nos arquivos existentes Recuperação de dados dos arquivos existentes Atualização e Eliminação dos dados nos arquivos existentes Renovação permanente de arquivos existentes (vazios ou não) do B.D. BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 5 BANCO DE DADOS (BD) Um Banco de dados é um modelo (representação) de uma determinada realidade (aplicação). O BD contém informações que circulam pela aplicação além de abstrações de elementos da própria aplicação. Ex. : Um BD para uma aplicação de vendas armazena informação sobre pedidos pendentes como também dados dos vendedores. Além de informações e abstrações dos elementos da realidade, o BD deve também respeitar, a cada instante, as leis (regras, regulamentos, normas) da aplicação. Ex.: Um BD para uma aplicação de pessoal deve respeitar a CLT e não permitir que um salário (nele armazenado) seja diminuído. BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 6 Arquivos Convencionais X Banco de Dados Ambiente Utilizando Arquivos: Ambiente Utilizando Banco de Dados: Arq. A Aplic. 1 Arq. B Arq. B Arq. C Arq. D Arq. A Arq. G Aplic. 2 Aplic. N.... SGBD Aplic. 1 Aplic. 2 Aplic. N.... Esquema Aplic. 3 Arquivos A e B são redundantes BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 7 ARQUIVOS CONVENCIONAIS Processamento de Dados SEM BD: Registros permanentes são armazenados em Arquivos Convencionais e aplicações acessam os arquivos. Desvantagens desta forma de processamento: REDUNDÂNCIA NÃO CONTROLADA DE DADOS Redundância não controlada ocorre quando o mesmo objeto da realidade é múltiplas vezes representado na base de dados e não há gerência automática da redundância. Redundância leva a inconsistência dos dados (dados não representam corretamente a realidade). DIFICULDADE DE ACESSO Dados são acessíveis apenas via programas. Necessidades de informações eventuais (tomada de decisões) são dificilmente atendidas. ESTRUTURA DE DADOS PROJETADA PARA ATENDER APLICAÇÕES ESPECÍFICAS Difícil acesso aos dados. Difícil integração entre aplicações que usem dados projetados para outras aplicações. ACESSO CONCORRENTE DIFICULTADO Mecanismos de acesso concorrente tem que ser implementados na aplicação => Risco de Inconsistências. MECANISMOS DE RECUPERAÇÃO DE ERROS MANUAIS A recuperação dos arquivos em caso de erros (software, interrupção de processamento, falha no meio de armazenamento) tem que ser implementada na aplicação. BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 8 VERIFICAÇÃO DE RESTRIÇÕES DE INTEGRIDADE É DIFÍCIL Restrições de Integridade são regras que devem ser obedecidas pela base de dados para serem consideradas corretas (ex.: o curso em que o aluno está inscrito deve estar na base de dados e ser ativo). Restrições de Integridade devem ser verificadas por cada aplicação que altera a base de dados. Dados devem estar acessíveis para verificar Restrições de Integridade. Abstração de dados: Abstração é a habilidade de se concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes, ou seja, são propriedades comuns de um conjunto de objetos, omitindo os detalhes. O sistema de banco de dados tem seu lado abstrato para o usuário, ou seja, para o usuário que vai usar o banco de dados não importa qual unidade de armazenamento, não importa seu tamanho, ou banco de dados onde vai ser inserido seus dados, o importanteé que na hora que for preciso procurar ou realizar uma consulta todos os dados estejam disponíveis. BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 9 ARQUITETURA PARA UM SBD ESQUEMA CONCEITUAL ESQUEMA INTERNO ...... Banco de Dados Armazenado VISÃO EXTERNA VISÃO EXTERNA NÍVEL EXTERNO NÍVEL CONCEITUAL NÍVEL INTERNO USUÁRIOS FINAIS Mapeamento Externo/Conceitual Mapeamento Conceitual/Interno BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 10 OS 3 NÍVEIS DA ARQUITETURA A arquitetura divide-se em 3 níveis gerais: Nível Interno (FÍSICO): Descreve a estrutura de armazenamento físico do BD. Descreve os detalhes completos sobre o armazenamento dos dados e os caminhos de acesso ao BD (complexas estruturas de dados de baixo nível). Nível Conceitual: Descreve quais dados estão armazenados de fato no BD e as relações que existem entre eles. Neste nível o BD inteiro é descrito em termos de um pequeno número de estruturas relativamente simples (diagrama). Nível Externo (Visões): É o mais próximo aos usuários. Relaciona-se á forma como os dados são vistos pelos usuários individualmente. Muitos usuários do sistema de BD não estão interessados em todas as informações. Em vez disso, precisam de apenas uma "parte" do BD. Os processos de transformação de solicitações e resultados são chamados de mapeamentos (mappings). SISTEMA DE GERÊNCIA DE BANCO DE DADOS (SGBD) É o conjunto de programas (software) que permite a criação e manutenção do BD. O SGBD permite a definição, construção e manipulação do Banco de Dados para diversas aplicações. DEFINIÇÃO DO BD: Especificação e descrição detalhada dos tipos de dados a serem armazenados no Banco de Dados. CONSTRUÇÃO DO BD: Processo de carga inicial dos dados em um meio de armazenamento controlado pelo SGBD. BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 11 MANIPULAÇÃO DO BD: Execução de operações de consulta e recuperação de dados específicos, além de atualização de dados para refletir, no BD, as mudanças no mini- mundo que está sendo modelado. A manipulação inclui, também, a geração de relatórios a partir dos dados do BD. CARACTERÍSTICAS DE UM SBD OFERECE UM AMBIENTE AUTO CONTIDO: A base de dados contém além dos dados, uma descrição de que informações podem ser armazenadas na base de dados, incluindo as restrições de integridade. O modelo de dados ou esquema da base de dados contém dados sobre os dados (meta dados). O esquema da base de dados é armazenado em uma parte do BD e é chamado catálogo ou dicionário de dados. Dicionário de Dados é ativo quando contém informações sobre os programas que usam a base de dados. OFERECE ISOLAMENTO DAS APLICAÇÕES EM RELAÇÃO AOS DADOS (INDEPENDÊNCIA DE DADOS) As aplicações não contêm descrições de dados. Com isso a base de dados pode ser alterada sem que as aplicações sejam afetadas. OFERECE ABSTRAÇÃO DE DADOS Aplicações "vêem" dados de forma abstrata, independente de detalhes físicos de implementação (fatores de bloco, localização no meio de armazenamento, existência de índices e caminhos de acesso). Isto aumenta a Independência de dados. OFERECE CONTROLE DE SEGURANÇA Recuperação em caso de falhas. OFERECE CONTROLE DE ACESSO CONCORRENTE SUPORTA MÚLTIPLAS VISÕES DE DADOS BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 12 Uma visão é uma parte da base de dados usada por um usuário ou classe de usuários. SGBD oferece dados virtuais e formatos particulares a diferentes visões. LINGUAGENS ENVOLVIDAS EM UM SGBD DDL - Data Definition Language DML - Data Manipulation Language (SGBDs modernos tendem a integrar a DDL e a DML em uma linguagem só). DCL - Data Control Language (Linguagem de Controle de Dados) Controla os aspectos de autorização de dados e a utilização de licenças por usuários. Os principais comandos são GRANT e REVOKE DTL - Data Transaction Language (Linguagem de Transação de Dados) Utilizado pelos desenvolvedores em transações. Os principais comandos são COMMIT e ROLLBACK Outras Linguagens: Linguagens de 4ª Geração (4GL): Linguagens não procedurais para escrever aplicações. Geradores de telas/relatórios: Ambientes para construir transações e emitir relatórios (normalmente integrado a 4GL). Linguagens para usuário final: Linguagens simples para consulta. (EIS : Executive Information System). Utilitários para a administração da base de dados: Programas de "Backup" e reconstrução da base de dados. Programas para sintonia da performance. PROGRAMAS DE APLICAÇÃO Realizam as funções da aplicação: Ex.: cálculo das deduções e impostos, a partir da receita, dos custos computados e da legislação em vigor. Garantem as restrições de integridade (RI) que não podem ser controladas pelo SGBD. Implementam interfaces e relatórios específicos. BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 13 Acessam o BD através do SGBD para consulta e atualização dos dados da aplicação. INSTÂNCIAS e ESQUEMA Os BDs mudam através do tempo á medida que as informações são inseridas ou apagadas. A coleção de informações armazenadas no BD em um determinado momento é chamada de INSTÂNCIA do BD. O projeto geral do BD é chamado de Esquema de Banco de Dados. Os esquemas não mudam com frequência. POR QUE UTILIZAR BANCO DE DADOS? As vantagens do uso de BD são mais significativas em ambientes multiusuários. Há neste caso, outra vantagem dominante: O SISTEMA DE BANCO DE DADOS PROPORCIONA Á EMPRESA O CONTROLE CENTRALIZADO DE SEUS DADOS OPERACIONAIS. O controle centralizado dos dados implica que numa empresa com um sistema de B.D. exista uma pessoa identificável detendo a responsabilidade central sobre os dados operacionais, é o Administrador de Banco de Dados (DBA), que requer: A) Alto grau de capacitação técnica; B) Capacidade de entender e interpretar as necessidades da empresa em nível de gerência executiva; C) Posição dentro da empresa de alto nível gerencial. Vantagens que resultam do controle centralizado: PODE REDUZIR REDUNDÂNCIA: Nos sistemas sem banco de dados, cada aplicação possui seus próprios arquivos (propriedade dos dados). Este fato costuma provocar uma redundância considerável nos dados armazenados resultando em desperdício de espaço de armazenamento. Se por fortes razões técnicas ou comerciais for necessária a redundância, esta deverá ser cuidadosamente controlada - isto é, o SGBD deve ter conhecimento da mesma, e assumir a responsabilidade de ‘propagar as atualizações’. BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 14 A INCONSISTÊNCIA PODE SER EVITADA: Consequência natural da Redundância. Diz-se que um banco de dados é inconsistente quando apresenta redundância de dados e apenas uma parte destes dados é atualizado e a outra não. Com isto, para um mesmo “fato” teremos duas informações diferentes armazenados em locais distintos. É óbvio que um B.D. considerado inconsistente é capaz de fornecer informações incorretas ao usuário. Alternativamente, se a redundância não for removida, mas controlada (tornando-se conhecida do SGBD), então ele nunca estará inconsistente, assegurando que qualquer alteração feita em uma entrada seja automaticamente aplicada na outra. Conhece-se este processo como PROPAGAÇÃO DE ATUALIZAÇÃO. Deve-se observar, entretanto, que a maioria dos B.Ds comercialmente disponíveis hoje, não são capazes de propagar automaticamente as atualizações. PODE COMPARTILHAR OS DADOS: Os dados podem ser compartilhados tanto pelas aplicações existentes como por aquelas novas que venham a ser criadas futuramente. Em outras palavras, as necessidades de dados das novas aplicações podem ser satisfeitas sem a criaçãode quaisquer dados adicionais armazenados. PODE REFORÇAR PADRÕES: O DBA, pelo controle central do B.D., pode assegurar que todos os padrões aplicáveis serão observados na representação dos dados. PODE APLICAR RESTRIÇÕES DE SEGURANÇA: O DBA, detendo toda a autoridade sobre os dados operacionais pode assegurar: a) Que, os únicos meios de acesso ao B.D. sejam realizados através de certos canais; b) que os controles de segurança a adotar em caso de acesso a dados especiais sejam por ele definidos. BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 15 PODE MANTER INTEGRIDADE: Por integridade entende-se que os dados do B.D. sejam corretos. A inconsistência entre duas entradas que pretendam representar o mesmo “fato” é um exemplo de falta de integridade. Este problema só poderá ocorrer se houver redundância nos dados armazenados. Entretanto, mesmo sem redundância, o B.D. ainda poderá conter uma informação incorreta. O controle centralizado do Banco de Dados poderá evitar tais problemas. PODE EQUILIBRAR AS NECESSIDADES CONFLITANTES: O DBA, tendo conhecimento das necessidades globais da empresa - em oposição ás necessidades de um usuário individual - pode estruturar o sistema, a fim de proporcionar um serviço geral que seja o “melhor para a empresa”. BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 16 INDEPENDÊNCIA DE DADOS Baseado nos três níveis de abstração, independência de dados é a habilidade de modificar a definição de um esquema em um nível sem afetar a definição de esquema num nível mais alto. Existem dois níveis de independência de dados: Independência Física de Dados: é a habilidade de modificar o esquema físico sem a necessidade de reescrever os programas aplicativos(ex.: Criação de um novo índice). As modificações no nível físico são ocasionalmente necessárias para melhorar o desempenho. É oferecida pelos produtos modernos. Independência Lógica de Dados: é a habilidade de modificar o esquema conceitual ou lógico sem a necessidade de reescrever os programas aplicativos. As modificações no nível conceitual são necessárias quando a estrutura lógica do BD é alterada. É oferecida até um certo ponto pelos produtos no mercado - em alguns casos re-compilação é requerida. Em aplicações sem o uso de banco de dados, as aplicações dependem dos dados, isto é, a maneira como os dados são organizados na memória secundária e a forma de acesso a esses dados, são ditadas pelas necessidades da aplicação. Além disso, o conhecimento da organização dos dados e a técnica de acesso são embutidos na lógica e no código da aplicação. • Por exemplo, decide-se que por motivos de desempenho, um determinado arquivo seja armazenado de forma indexada por um campo específico. EX: O arquivo de FUNCIONÁRIO será armazenado de forma indexada pelo campo CÓDIGO. A aplicação em questão estará informada que o índice existe e também da sequência do arquivo como definida pelo índice, e a estrutura interna da aplicação será montada em torno deste conhecimento. Dizemos que uma aplicação como esta DEPENDE DOS DADOS, porque é impossível modificar a estrutura de armazenamento (como os dados são fisicamente armazenados) ou a estratégia de acesso (como são acessados estes dados) sem que a aplicação seja afetada significativamente. BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 17 Por exemplo, não é possível substituir o arquivo indexado definido acima por outra forma de organização qualquer, sem que houvesse necessidade de grandes modificações na aplicação. As partes da aplicação que exigem alterações nesse caso são precisamente aquelas que se comunicam com o software de gerência de arquivo; as dificuldades envolvidas são praticamente irrelevantes para o problema que a aplicação se destinava a resolver quando escrita - isto é, são dificuldades introduzidas pela natureza da interface de gerência de arquivo. Em um sistema de Banco de Dados, seria indesejável permitir que as aplicações dependam dos dados, por duas razões principais: Aplicações diferentes necessitarão de visões diferentes do mesmo dado. O DBA deve ter autonomia para poder modificar a estrutura de armazenamento ou a estratégia de acesso (ou ambos), atendendo ás exigências de modificação, sem que haja a necessidade de mudar as aplicações existentes. Se as aplicações forem dependentes dos dados, as mudanças estruturais (armazenamento e acesso) exigirão modificações correspondentes nos programas, necessitando do trabalha de programadores, que poderiam dedicar-se á criação de novos aplicativos. Portanto, a provisão de independência é o maior objetivo dos sistemas de Banco de Dados. A independência dos dados pode ser definida como a imunidade das aplicações á estrutura de armazenamento e á estratégia de acesso - isto é, as aplicações não dependem de qualquer estrutura de armazenamento ou estratégia de acesso. BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 18 SISTEMA DE BANCO DE DADOS (SBD) USUÁRIOS/PROGRAMADORES DEFINIÇÃO DO BD (METADADOS) BANCO DE DADOS ARMAZENADO PROGRAMAS DE APLICAÇÕES / CONSULTAS SOFTWARE DE ATENDIMENTO A CONSULTAS E PROGRAMAS SOFTWARE DE ACESSO A DADOS ARMAZENADOS SISTEMA DE BANCO DE DADOS SGBD BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 19 SISTEMAS DE BANCO DE DADOS (SBD) SBD X Sistema Tradicional de Arquivos 1) Diminui e controla a redundância dos dados, mantendo consistência entre cópias. 2) Padroniza a definição e o acesso aos dados, através, respectivamente, da DDL (Data Definition Language) e da DML (Data Manipulation Language). 3) Assegura independência física dos dados: alterações em estruturas de armazenamento (esquema físico) NÃO afetam programas de aplicação. 4) Garante independência lógica dos dados: modificações na definição dos dados (esquema lógico), na maioria das vezes, não afetam os programas de aplicação. 5) Mantém a consistência dos dados, mesmo em caso de falhas de hardware ou software (SO, SGBD, Programas de aplicação). 6) Garantem a consistência dos dados em ambiente multi-usuário, onde mais de um programa pode acessar, simultaneamente, os mesmos dados (programas concorrentes). 7) Auxilia na manutenção das restrições de integridade da aplicação, evitando que testes de consistência sejam repetidos em programas de aplicação. 8) O SBD dá ao usuário uma visão abstrata dos dados, escondendo detalhes da organização dos mesmos no meio de armazenamento. 9) O SGBD implementa três níveis de abstração: Nível (esquema) Físico Nível (esquema) conceitual / lógico Nível (esquema) de visões BANCO DE DADOS I - URI Erechim - Prof. Paulo Ricardo Rodegheri 20 SISTEMAS DE BANCO DE DADOS (SBD) O que se pode almejar com o uso de SBD? 1) Redundância controlada de dados. 2) Compartilhamento de dados por aplicações diversas. 3) Controle de autorização de acesso a dados. 4) Acesso a dados através de diferentes interfaces. 5) Modelagem de relacionamentos complexos entre dados. 6) Garantia de restrições de integridade da aplicação. 7) Garantia de consistência física dos dados. 8) Potencial para imposição de padrões (modelagem e programação). 9) Flexibilidade nas definições e manutenções dos dados. 10) Redução no tempo de desenvolvimento de aplicações. D A D O S : E um um banco de dados, os dados são PERSISTENTES, INTEGRADOS e COMPARTILHADOS. PERSISTENTES: entende-se que esses dados ficam armazenados no banco de dados e só podem ser removidos por uma requisição explícita ao mesmo. INTEGRADOS : O B.D. pode ser imaginado como a unificação de diversos arquivos de dados que, de outra forma, seriam distintos, eliminando-se total ou parcialmente qualquer redundância entre os mesmos. COMPARTILHADOS:Significa que as parcelas isoladas de dados podem ser compartilhadas por diversos usuários num B.D., no sentido que todos os usuário podem ter acesso á mesma parcela de dados e podem usá-los com finalidades diferentes, podendo inclusive ter acesso aos mesmos dados no “mesmo momento” (acesso concorrente). 21 0) Usuário submete a Consulta 1) Programa que implementa a transação ou o processador de consultas pede ao SGBD um Registro Lógico 2) SGBD pede ao SO a leitura dos esquemas 3) SO acessa os esquemas 4) Meta-dados são transferidos para a área do SGBD 5) SGBD consulta os meta-dados para saber como traduzir os comandos do usuário 6) SGBD emite comandos para que o SO leia os registros físicos necessários 7) SO acessa a base de dados 8) Registros físicos são transferidos para a área de E/S do SGBD 9) SGBD seleciona os dados necessários para formar os registros lógicos. Se necessário faz transformações, conversões e coloca na área do usuário 10) SGBD envia ao programa de aplic. um código sinalizando final de operação 11) Programa de aplicação exibe o resultado ao usuário (ou gera relatório). SGBD ÁREAS DE E/S 0 11 1 S.O. 2 6 7 3 8 5 9 10 ESQUEMA DADOS PROCESSAMENTO DE UMA CONSULTA Fluxo de Dados Fluxo de Controle PROGRAMA DE APLICAÇÃO ÁREA LOCAL DO PROGRAMA 4 22 ESTRUTURA GERAL DO SISTEMA Um sistema de BD é dividido em módulos que tratam de cada uma das responsabilidades do sistema geral. Na maioria dos casos, o sistema operacional do computador fornece apenas os serviços mais básicos, e o sistema de BD precisa ser construído sobre essa base. Portanto, o projeto do sistema de BD precisa incluir considerações sobre a interface entre o sistema de BD e o sistema operacional. Os componentes funcionais de um sistema de BD incluem: GERENCIADOR DE ARQUIVOS: Gerencia a alocação do espaço na armazenagem do disco e as estruturas de dados usadas para representar a informação armazenada no disco. GERENCIADOR DE BANCO DE DADOS: Fornece a interface entre os dados de baixo nível armazenados no disco e os programas aplicativos e de consultas submetidos ao sistema. PROCESSADOR DE CONSULTAS: Traduz comandos numa linguagem de consulta para instruções de baixo nível que o gerenciador de BD pode interpretar. Além disso, o processador de consultas tenta transformar uma requisição do usuário em uma forma compatível e mais eficiente com respeito ao BD, encontrando uma boa estratégia para executar consultas. PRÉ-COMPILADOR DA DML: Converte comandos da DML embutidos em um aplicativo para chamadas de procedimento normal na linguagem hospedeira. O pré-compilador precisa interagir com o processador de consultas para gerar o código apropriado. Além disso, também são necessários os seguintes componentes: Arquivos de Dados: Armazena o Banco de Dados propriamente dito. Dicionário de Dados: Armazena os metadados sobre a estrutura do BD. O dicionário de dados é usado com freqüência. Desta forma, deve-se dar grande ênfase no desenvolvimento de um bom projeto e implementação eficiente do dicionário. Índices: Fornecem acesso rápido aos itens de dados guardando determinados valores. 23 E X E R C Í C I O S (1) 1) Compare: SBD X Sistema de arquivos convencionais. 2) Comente sobre os três níveis da arquitetura de um SGBD. 3) Defina: Redundância, Inconsistência, Integridade, Instância, DDL, DML, DCL, DTL, 4GL, ADS, Independência de dados (lógica e física - dê exemplos de cada). 4) O que significa dizer que os dados em um B.D. multiusuário são persistentes, integrados e compartilhados? 5 Comente a diferença entre BD, SBD e SGBD. 6) O que é e por que é importante o SGBD num SBD? 7) O que é e por que é importante o Esquema num BD? 8) Qual a diferença entre redundância de dados controlada e a não controlada? 9) Comente sobre Controle de Concorrência, Serialização e Mecanismos de Bloqueio. 10) Comente sobre recuperação de falhas em Bancos de Dados. 24 RESTRIÇÕES DE INTEGRIDADE As restrições de integridade fornecem meios para assegurar que mudanças feitas no BD por usuários autorizados não resultem na perda da consistência dos dados. Assim, as restrições de integridade resguardam o BD contra danos acidentais. Geralmente, uma restrição de integridade pode ser um predicado arbitrário que é reaplica ao BD. No entanto, os predicados arbitrários podem ser custosos para serem testados. Assim, geralmente limitamo-nos a restrições de integridade que podem ser testadas com um custo adicional mínimo. RESTRIÇÕES DE DOMÍNIO Restrições de domínio especificam o conjunto de valores possíveis que podem ser associados a um atributo. Restrições de domínio é a forma mais elementar de restrições de integridade. Elas são testadas facilmente pelo sistema cada vez que um novo item de dado é inserido no BD. Cadeia de caracteres de comprimento fixo, Números em pontos fixos, com precisão especificada pelo usuário, Inteiro, Inteiro pequeno, Número de ponto flutuante, Ponto flutuante com dupla precisão, etc. Valores Vazios (not null). Existem situações nas quais a proibição de valores vazios é desejável (chave primária em modelo relacional). INTEGRIDADE REFERENCIAL É quando desejamos assegurar que um valor que aparece em uma relação para um dado conjunto de atributos apareça também em certo conjunto de atributos em outra relação. DEPENDÊNCIAS FUNCIONAIS São restrições sobre o conjunto de relações válidas. Elas nos permitem expressar fatos sobre a empresa, que são modeladas no BD (regras de negócio). 25 ASSERÇÕES Uma asserção é um predicado expressando uma condição que desejamos que o BD sempre satisfaça. Restrições de domínio, dependências funcionais e restrições de integridade referencial são formas especiais de asserções. Quando uma asserção é feita, o sistema testa sua validade. Se a asserção é valida, então qualquer futura modificação no BD é permitida apenas se não violar esta asserção. Este teste pode introduzir uma quantidade significativa de sobrecarga se asserções complexas forem feitas. GATILHOS (TRIGGERS) Um gatilho é um comando executado automaticamente pelo sistema como um efeito colateral de uma modificação no BD. Para projetar um gatilho, precisamos: ➔Especificar as condições sob as quais o gatilho deve ser acionado. ➔Especificar as ações a serem tomadas quando o gatilho é executado. MODELOS LÓGICOS DE SGBDs Desde o final da década de 60 diversos SGBDs comerciais foram construídos. Alguns tipos básicos de SGBDs estabeleceram-se na prática. MODELOS LÓGICOS BASEADOS EM REGISTROS Modelos lógicos baseados em registros são usados nas descrições de dados no nível conceitual e de visões. São usados para especificar a estrutura lógica geral do BD e para fornecer uma descrição de alto nível da implementação. São assim chamados porque o BD é estruturado em registros de formato fixo de diversos tipos. Cada tipo de registro define um número fixo de campos (ou atributos), e cada campo é usualmente de um tamanho fixo. O uso de registros com tamanho fixo simplifica o nível de implementação física dos BDs. 26 ABORDAGEM HIERÁRQUICA SGBDs deste tipo foram importantes pelo fato da IBM ter um produto chamado IMS, e que foi largamente utilizado durante a década de 70 e início da década de 80. Não é mais comercializado. Os registros são organizados como coleções de árvores. Ex. Exemplo de Banco de Dados Hierárquico João Av. Sete Erechim Maria Rua Tuiti Erechim José Rua Acre G. Vargas 505102 1200,00 104751 160,33 102566 4700,00 103100 362,30 27 ABORDAGEM EM REDE Grande família de SGBDs baseada em um padrão ANSI.Originário do IDS. Os dados no modelo rede são representados por coleções de registros, e os relacionamentos entre os dados são representados por ligações que podem ser vistas como ponteiros. Os registros no BD são organizados como coleções de grafos arbitrários. Exemplo de Banco de Dados em Rede 4700,00 1200,00505102 G. VargasRua Acre Erechim 160,00104751 362,30103100ErechimRua TuiitiMaria 102566João Av. Sete José 28 ABORDAGEM RELACIONAL Surgiu a partir de trabalhos teóricos de Codd (IBM) procurando um modelo lógico independente de detalhes de implementação. Durante a década de 70 houve muita pesquisa e construção de diversos protótipos. O modelo relacional representa dados e relacionamentos entre dados por um conjunto de tabelas, cada uma tendo um número de colunas com nomes únicos. As linhas são registros e as colunas são os campos. Nome Rua Cidade Numero Cta João Av. Sete Erechim 102566 Maria Rua Tuiuti Erechim 103100 Maria Rua Tuiuti Erechim 104751 José Rua Acre G. Vargas 104751 José Rua Acre G. Vargas 505102 Numero Cta Saldo 102566 4700,00 103100 362,30 104751 160,00 505102 1200,00 Exemplo de um Banco de Dados Relacional Obs.: Modelo com anomalia de 3ª Forma Normal – Repetição de itens de dados. 29 ANÁLISE DA ABORDAGEM HIERÁRQUICA Adequada somente para problemas hierárquicos Em caso de problemas não hierárquicos cria: Redundância de Dados. Assimetrias indesejáveis na representação de dados e na programação. Anomalias nas instruções de modificação da base de dados. ANÁLISE DA ABORDAGEM EM REDE Não está restrita a problemas hierárquicos. O programador tem que conhecer as ligações existentes na base de dados (navegação explícita). A independência de dados fica prejudicada, pois a criação / eliminação de ligações implica em alterações dos programas. ANÁLISE DA ABORDAGEM RELACIONAL Não está restrita a problemas hierárquicos. Não há ligações explícitas. Independência de dados aumenta, pois programas não são influenciados pela existência ou não de caminhos de acesso. As referências entre registros são feitas através do VALOR armazenado na tabela. 30 SISTEMAS RELACIONAIS A maioria dos sistemas de BD desenvolvidos nos últimos anos é RELACIONAL. Também, quase todas as pesquisas atuais em Banco de Dados baseiam-se também em conceitos relacionais. A abordagem relacional representa a tendência dominante no mercado de hoje e o “modelo relacional” é simplesmente o desenvolvimento mais importante de toda a história do ramo de Banco de Dados. O modelo relacional difere dos modelos de redes e hierárquico no fato de que ele não usa ponteiros ou ligações. Em vez disso, o modelo relacional relaciona registros a partir de valores que eles contêm. Esta liberação no uso de ponteiros permite a definição de um fundamento matemático formal. O QUE SIGNIFICA DIZER QUE UM SISTEMA É RELACIONAL? Resumidamente, um sistema relacional é aquele, no qual: 1) Os dados são percebidos pelos usuários como tabelas 2) Os operadores á disposição do usuário, são operadores que geram novas tabelas a partir das antigas. Por exemplo, uma solicitação de consulta parcial a dados de uma tabela gerará uma nova tabela. ESTRUTURA DE BDs RELACIONAIS Uma linha em uma tabela representa um relacionamento entre um conjunto de valores. Uma vez que uma tabela é uma coleção de tais relacionamentos, existe uma correspondência íntima entre o conceito de tabela e o conceito matemático de relação, a partir da qual o modelo de dados relacional tira seu nome. Nome Rua Cidade Numero Cta João Av. Sete Erechim 102566 Maria Rua Tuiuti Erechim 104751 José Rua Acre G. Vargas 104751 Uma linha de uma relação é uma tupla. TUPLA 31 Uma coluna de uma relação é um atributo. Relação é um conjunto: Não há ordenação de tuplas A mesma tupla NÃO pode aparecer mais que uma vez Não é conveniente referenciar aos elementos de uma tupla através de sua posição - melhor é usar o nome (do atributo). A idéia básica por traz da abordagem relacional é a de que os valores de atributos são atômicos. Diz-se que a tabela esta na "primeira forma normal" (1ª FN). (Um domínio é atômico se os elementos do domínio são considerados unidades indivisíveis). Em determinadas áreas de aplicação pode ser conveniente admitir relações não na primeira forma normal (non first normal form). Ex. Como representar informações (padrão de preenchimento, posição relativa) sobre figuras geométricas identificadas pelos seus vértices? CONCEITOS EM BDs RELACIONAIS CHAVE PRIMÁRIA: Coluna ou colunas cujos valores diferenciam uma linha das demais para todos possíveis valores de uma tabela. Normalmente exige-se que a chave seja mínima: retirando uma coluna da chave, ela deixa de ser uma chave primária. Não está ligado ao conceito de caminho de acesso: as linhas de uma tabela podem ser acessadas por qualquer critério. Outras chaves com a mesma propriedade são chamadas candidatas (ex: CIC em uma tabela com dados de empregados que são identificados por um código). CHAVE ESTRANGEIRA: Coluna ou colunas de uma tabela, cujos valores devem aparecer na chave primária de uma tabela (da mesma ou de outra). RESTRIÇÕES DE INTEGRIDADE: É uma regra que deve ser obedecida em todos os estados válidos da base de dados. Pode envolver uma ou mais linhas de 32 uma ou mais tabelas (ex. Número de horas trabalhadas por semana na empresa não pode exceder 50). Integridade de Entidade: O valor da chave primária NÃO pode ser vazio. A chave primária serve como representante na base de dados de uma entidade (se a chave primária for vazia, a linha não corresponde a nenhuma entidade). Integridade de Chave Primária: A chave primária tem que ser única. Integridade Referencial: As chaves estrangeiras devem ser respeitadas. Restrições de integridade Semânticas: Todas as demais regras que devem ser obedecidas por todos os estados válidos da base de dados. DDL para Abordagem Relacional: Deve permitir a especificação de no mínimo: A estrutura das tuplas de cada tabela (nome das colunas, respectivos domínios e possibilidade de assumir valor vazio). As restrições de integridade (chave primária, chaves candidatas, integridade referencial, outras integridades semânticas). 33 EVOLUÇÃO DOS SGBDs Aplicações de BD Tradicionais (informação armazenada e acessada é textual ou numérica). EVOLUÇÃO BANCOS DE DADOS MULTIMÍDIA: Podem armazenar figuras, videoclipes, sons, mensagens de voz. GIS – Geographic Information Systems: Podem armazenar analisar mapas, dados metereológicos e imagens de satélites. Data warehouse e OLAP (On-Line Analytical Processing): São utilizados para extrair e analisar informações úteis, a partir de grandes bancos de dados, para a tomada de decisões. Tecnologias de Sistemas de Tempo Real e de Bancos de Dados Ativos: São utilizados no controle de processos industriais e de produção. Da mesma forma, técnicas de pesquisas de bancos de dados vêm sendo aplicadas na WWW para aprimorar a busca de informações que são necessárias para usuários que estejam navegando pela Internet. 34 E X E R C Í C I O S (2) 1) Diferencie e caracterize os principais modelos lógicos de BD baseados em registros. 2)Comente sobre os componentes funcionais em um BD. 3)O que é o Gerenciador de BD e quais as suas principais tarefas? (comente cada uma delas). 4)Resumidamente, o que significa dizer que um Banco de dados é relacional? 5)O que significa dizer que um domínio é atômico? 6)Conceitue: Chave Primária, Chave Candidata, Atributo, Chave Estrangeira,Restrições de Integridade, Integridade de Entidade. 35 OPERAÇÕES RELACIONAIS BÁSICAS Quando realizamos qualquer consulta em SQL (LINGUAGEM NÃO PROCEDURAL), apenas escrevemos QUAIS os dados que queremos que sejam recuperados e não definimos COMO estes dados deverão ser recuperados. Na verdade, por trás de uma consulta SQL são realizadas, frequentemente, diversas operações de álgebra relacional. Quando escrevemos uma consulta no formato: select atributo1, atributo2, atributo3 from tabela1, tabela2 where atributox = 'xxxxxxx' and atributox = atributoy para obter-se o resultado desejado o banco de dados realiza algumas operações relacionais. Os operadores relacionais mais utilizados em um consulta clássica são: SELEÇÃO PROJEÇÃO PRODUTO CARTESIANO SELEÇÃO: seleciona tuplas que satisfazem uma determinada condição. O resultado é uma tabela que contém as linhas que obedecem a um determinado critério. PROJEÇÃO: A projeção tem como operando uma tabela. O resultado é uma tabela que contém apenas as colunas selecionadas. PRODUTO CARTESIANO: O produto cartesiano possui como operandos duas tabelas (operação binária). O resultado é uma tabela cujas linhas são a combinação das linhas das tabelas <tab>1 e <tab>2, tomando-se uma linha da <tab>1 e concatenando-a com uma linha da <tab>2. Portanto, o total de colunas do produto cartesiano é igual ao número de colunas da primeira tabela mais o número de colunas da segunda tabela e o número 36 de linhas é igual ao número de linhas da primeira tabela multiplicado pelo número de linhas da segunda tabela. Dado o seguinte modelo de dados: CARGOS FUNCIONARIOS DEPTOS cod_car (pk) cod_fun (pk) cod_dep (pk) descri_car nome_fun descri_dep dt_adm_fun salario_fun cod_car_fun (fk) cod_dep_fun (fk) Utilizando SQL, com a seguinte consulta: select nome_fun, salario_fun, descri_dep from funcionarios, deptos where descri_dep = 'Informática' AND cod_dep_fun = cod_dep são realizadas as seguintes operações relacionais: 1. Produto cartesiano entre as tabelas funcionários e deptos; 2. Seleção das linhas que satisfazem todos os critérios de seleção (que estão na clausula where) sobre a tabela resultante R – gerando a tabela R1; 3. Projeção das colunas (definidas pela clausula select) sobre a tabela R1. Supondo-se que a tabela funcionários tenha 1000 registros e a tabela depto tenha 30 registros, a tabela resultante (R) do produto CARGOS FUNCIONARIOS DEPTOS 37 cartesiano teria 30.000 registros (ou tuplas) com a seguinte formação: FUNCIONARIOS (1000 linhas) cod_fun nome_fun dt_adm_fun salario_fun cod_car_fun cod_dep_fun 0001 Jose silva 10/04/08 1200,00 005 012 ….. ….. ….. ….. ….. ….. ….. ….. ….. ….. ….. ….. 1000 Maria Souza 16/01/09 850,00 023 001 DEPTOS (30 linhas) cod_dep descri_dep 001 Gerencia ….. ….. 009 Informática ….. ….. 030 Vendas RESULTANTE (R – 30.000 linhas) cod_fun nome_fun dt_adm_fun salario_fun cod_car_fun cod_dep_fun cod_dep descri_dep 0001 Jose silva 10/04/08 1200,00 005 012 001 Gerencia ….. ….. ….. ….. ….. ….. ….. ….. ….. ….. ….. ….. ….. ….. ….. ….. 0001 Jose silva 10/04/08 1200,00 005 012 030 Vendas ….. ….. ….. ….. ….. ….. ….. ….. 1000 Maria Souza 16/01/09 850,00 023 001 001 Gerencia ….. ….. ….. ….. ….. ….. ….. ….. 1000 Maria Souza 16/01/09 850,00 023 001 030 Vendas 38 Sobre a tabela R, faz-se a operação de Seleção, e tem-se como resultado uma tabela (R1) com o número de linhas que satisfazem o critério de seleção (where). Suponhamos que sejam selecionadasapenas 20 linhas (que sejam dos funcionários do depto de Informática). RESULTANTE (R1 – 20 linhas) cod_fun nome_fun dt_adm_fun salario_fun cod_car_fun cod_dep_fun cod_dep descri_dep ….. ….. ….. ….. ….. 009 009 Informática ….. ….. ….. ….. ….. 009 009 Informática ….. ….. ….. ….. ….. 009 009 Informática ….. ….. ….. ….. ….. 009 009 Informática ….. ….. ….. ….. ….. 009 009 Informática ….. ….. ….. ….. ….. 009 009 Informática ….. ….. ….. ….. ….. 009 009 Informática ….. ….. ….. ….. ….. 009 009 Informática Observe que todas as linhas selecionadas tem o atributo descri_dep = Informática e o atributo cod_dep_fun = cod_dep. Sobre a tabela R1, faz-se a operação de Projeção, isto é, seleciona- se apenas as colunas definidas na clausula select (nome_fun, salário_fun, descri_dep). A tabela final é exibida ao usuário (20 linhas). nome_fun salario_fun descri_dep ….. ….. Informática ….. ….. Informática ….. ….. Informática ….. ….. Informática ….. ….. Informática 39 ….. ….. Informática ….. ….. Informática ….. ….. Informática EXERCÍCIOS Quais operações, sobre quais tabelas, e em que ordem são realizadas para as seguintes consultas SQL: 1) select nome_fun, salario_fun, dt_adm_fun from funcionarios where cod_dep_fun = 30 2) select cod_fun, nome_fun, cod_dep_fun, descri_car from funcionarios, cargos where descri_car = 'programador' and cod_car_fun = cod_car 3) select nome_fun, descri_dep, descri_car from funcionarios, deptos, cargos where descri_car = 'analista de sistemas' and descri_dep = 'Tecnologia da Informação' and cod_car_fun = cod_car and cod_dep_fun = cod_dep
Compartilhar