Capítulo I -Introdução a Banco de Dados Emerson Cordeiro Morais ( emersoncm@estacio.br) Doutorando em Bioinformática Mestre em Banco de Dados Agenda Dados, Banco de Dados e SGBD Evolução Histórica dos BDs Sistemas de Arquivos x Abordagem SGBD Visão dos Dados e Arquitetura ANSI/SPARC Modelos de Dados Linguagens de Banco de Dados Tipos de Usuários de Banco de Dados Estrutura Geral do SGBD 2
Introdução Banco de Dados tem se tornado um componente essencial de uma sociedade moderna (TOFFLER, 1980). A interação pode se dar por: Aplicações de BDs Tradicionais em aplicações comerciais; Banco de Dados Orientado a Objetos e Multimídia; Estruturas Espaciais e Sistemas de Informações Geográficas; Data Warehouse e Data Mining e Tomada de Decisão; Banco de Dados Fuzzy e Dedutivos; Integração Banco de Dados e WEB e Dados Semiestrutrados; Banco de Dados Móveis e Temporais; Banco de Dados Distribuídos e Paralelos,... 3 Dados, Informação e BD Dados são fatos, conceitos ou instruções que podem ser processados ou armazenados por seres humanos ou meios automatizados. Exemplos: nomes, telefones e endereços. Informação são os fatos organizados de maneira significativa. Exemplo: Lista de moradores da Rua XYZ que tem telefone começando por 2132 Banco de Dados ou Base de Dados (BD) é uma coleção de dados inter-relacionados logicamente. Um banco de dados está sempre associado à aplicações e a usuários que têm interesse nele. Exemplo: Agenda de telefones. 4
Exemplo de BD LIVRO ID_LIVRO TÍTULO ANO ID_EDITORA L1 Introdução aos SGBDs 1998 E2 L2 Redes 2000 E3 L3 Análise de Sistemas 1999 E2 AUTOR ID_AUTOR NOME PAÍS A1 Shildt EUA A2 Antero Brasil A3 Abdala Irã EDITORA ID_EDITORA NOME PAÍS E1 EdiPrata Brasil E2 Antiga Brasil E3 Norkam Albânia E4 Supmac Grécia AUTOR_LIVRO ID_AUTOR ID_LIVRO A1 L1 A2 L1 A2 L3 A3 L2 5 SGBD Sistema Gerenciador de Banco de Dados (SGBD) é um conjunto de dados associados a um conjunto de programas que servem para criação, acesso e manutenção desse conjunto de dados. Principal objetivo do SGBD: proporcionar um ambiente tanto conveniente quanto eficiente para a recuperação e armazenamento das informações. Também denominados Sistemas de Banco de Dados. 6
Sistema de BD Sistema de BD Usuário Final Programa de Aplicação / Consultas SGBD Software para processar consultas Software para acessar dados armazenados Meta Dados BD 7 Função de um SGDB Definir um banco de dados Consiste em especificar os tipos de dados, estruturas e restrições para os dados armazenados no banco de dados Construir um banco de dados Consiste no processo de armazenar os dados em algum meio de armazenamento manipulado pelo SGBD. Manipular um banco de dados Consiste em operações como busca de informações armazenadas no mesmo, modificações nos dados existentes e geração de relatórios baseados nos dados do BD 8
Características de um SGDB Persistência de objetos Controle de redundância Manutenção de restrições de integridade Representação de relacionamentos complexos entre os dados Restrições de acesso Múltiplas interfaces para o usuário Realização de inferências utilizando regras de dedução Rotinas para cópia (backup) e recuperação dos dados 9 Evolução Histórica de BDs 1ª Geração :... - 1900 Processamento manual de dados Uso do papel 2ª Geração: 1900-1955 Processamento mecânico de dados Cartões perfurados Programação pelo painel de controle da máquina 3ª Geração: 1955-1970 Processamento seqüencial de registros Fita magnética Programas batch Arquivos seqüenciais 10
Evolução Histórica de BDs 4ª Geração: 1965-1980 Processamento de grupos de registros Independência de dados Esquemas Banco de dados, transações e acesso a dados on-line BD Hierárquico da IBM e BD em Redes da General Electric 5ª Geração: 1980-1995 Processamento paralelo Banco de dados relacionais Aplicações cliente-servidor 6ª Geração: 1995 -... Novos tipos de dados: imagem, som, vídeo,... Banco de dados objeto-relacional Internet e novas aplicações 11 Sistemas de Arquivos (SA) São registros permanentes que são armazenados em vários arquivos São aceitos por sistemas operacionais tradicionais Diversos programas de aplicação são escritos para extrair e gravar registros nos arquivos apropriados Estes sistemas de processamento de arquivos eram utilizados pelas organizações antes do advento dos SGBDs. Estes sistemas apresentavam diversas desvantagens. 12
Sistemas de Arquivos (SA) Vendas Dados de entrada e relatórios Rotinas de armazenamento de arquivos Definição de arquivos Programas da aplicação de Vendas Arquivos de Vendas Contratos Dados de entrada e relatórios Rotinas de armazenamento de arquivos Definição de arquivos Programas da aplicação de Contratos Arquivos de Contratos 13 Problemas com SA Redundância de Dados Os arquivos são criados e mantidos por diferentes programadores; É comum que os arquivos possuam formatos diferentes; Aplicativos escritos em diversas linguagens de programação; A mesma informação pode ser repetida em diversos lugares; A redundância aumenta os custos de armazenamento e a dificuldade de acesso; Existem duas formas de redundância: Redundância Controlada: garantia de sincronia entre as diversas informações. Redundância Não Controlada: responsabilidade de sincronia entre as diversas representações é do usuário. Este tipo de redundância deve ser evitado, pois traz diversos problemas. 14
Problemas com SA Inconsistência de Dados A redundância pode gerar a inconsistência de dados, isto é, várias cópias de dados podem divergir ao longo do tempo. Exemplo: A mudança do endereço de um cliente pode refletir no arquivo de contas, mas não ser alterada no sistema como um todo. Funcionário Nome Depto Salar João 01 100 Pedro 02 230 Maria 01 370 Treinamento Nome Depto Curso João 01 Windows Pedro 02 Word Maria 01 AutoCAD 15 Problemas com SA Dificuldade de Acesso aos Dados Quando se faz necessário novas consultas e/ou novos relatórios, têm-se duas soluções: Manipular manualmente o resultado de alguma aplicação já existente que seja mais abrangente; Requisitar um programador para desenvolver a aplicação necessária; Ambas soluções não são satisfatórias, pois sistemas mais efetivos para recuperação da informação precisam ser desenvolvidos; Exemplo: aplicação para consultar todos os clientes com CEP 21061; 16
Problemas com SA Problemas de Integridade Os valores dos dados atribuídos e armazenados em um banco de dados devem satisfazer certas restrições para manutenção da consistência; Exemplo: Saldo de uma conta bancária não pode ficar abaixo de R$ 50,00. Em sistemas de arquivos, os programadores determinam o cumprimento das restrições por meio de adição de código; Quando aparecem novas restrições, é difícil alterar todos os programas, principalmente quando estas atingem diversos itens de dados em diferentes arquivos. 17 Problemas com SA Problemas de Atomicidade Um sistema computacional, como qualquer outro dispositivo mecânico ou elétrico, está sujeito à falhas; Em muitas aplicações é crucial assegurar que, uma vez detectada uma falha, os dados sejam salvos em seu último estado consistente, anterior a ela; Exemplo: transferência de R$ 50,00 de uma conta A para uma conta B É essencial para a consistência do banco de dados que na transferência de fundos, ocorra uma operação atômica, isto é, deve ocorrer por completo ou não ocorrer; É difícil garantir essa propriedade em um sistema convencional de processamento de arquivos. 18
Problemas com SA Anomalias no Acesso Concorrente Muitos sistemas permitem atualizações simultâneas nos dados para aumento de desempenho do sistema. Nesses tipos de ambiente, a interação entre atualizações concorrentes pode resultar em inconsistência de dados; Exemplo: dois clientes retirando fundos de uma mesma conta Como os dados podem sofrer acesso de aplicações anteriormente não previstas, a supervisão é dificultada; SGBDs apresentam mecanismos próprios de controle de concorrência para resolver estes problemas: Protocolos de bloqueios (lock), de registro de tempo (timestamp), de validação, granularidade múltipla... 19 Problemas com SA Isolamento de Dados Como os dados estão dispersos em vários arquivos, e estes arquivos podem apresentar diferentes formatos, é difícil escrever novas aplicações para recuperação apropriada dos dados. Problemas de Segurança Nem todos os usuários de banco de dados estão autorizados ao acesso a todos os dados; Uma vez que os programas de aplicação são inseridos no sistema como um todo, é difícil garantir a efetividade das regras de segurança; SGBDs oferecem mecanismos de visões, descrevendo apenas a parte do banco de dados que interessa ao usuário. 20
Abordagem de BD Dados de entrada e relatórios Vendas Contratos Programas da aplicação de Vendas Dados de entrada e relatórios Programas da aplicação de Contratos SGBD Proprietário Propriedades Restrições Arquivos de definições Banco de dados 21 Abordagem de BD Sistemas de bancos de dados são auto-descritivos Dicionário de Dados ou Catálogo e Metadados Separação entre programas e dados Abstração de Dados Suporte a múltiplas visões dos dados Compartilhamento de dados Processamento de transações multiusuário Facilidade para imposição de padrões Tempo de desenvolvimento de aplicações reduzido Flexibilidade Disponibilidade de informações atualizadas 22
Visão dos Dados Um SGBD é uma coleção de arquivos e programas inter-relacionados que permitem ao usuário o acesso para consultas e alterações desses dados. O maior benefício de um banco de dados é proporcionar ao usuário uma visão abstrata dos dados. O sistema acaba por ocultar determinados detalhes sobre a forma de armazenamento e manutenção desses dados. 23 Abstração de Dados Nível de visão (externo) mais alto nível de abstração; visão de cada usuário; descreve apenas parte do banco de dados. Nível lógico (conceitual) nível médio de abstração; visão da comunidade de usuários; quais dados estão armazenados no banco de dados, e quais os inter-relacionamentos entre eles. Nível físico (interno) mais baixo nível de abstração; como os dados estão de fato armazenados 24
Arquitetura de Três Níveis Foi desenvolvida pela ANSI (American National Standards Institute) / SPARC (Standards Planning And Requirements Committee). O objetivo desta arquitetura é possibilitar a separação entre as aplicações dos usuários e o banco de dados físico. Os esquemas desta arquitetura podem pertencer a um dos três níveis de abstração: Nível físico Nível lógico Nível de visão 25 Arquitetura de Três Níveis Nível Físico Descreve com os dados estão de fato armazenados. Descreve a estrutura física de armazenamento do banco de dados representando todo o banco de dados em um esquema interno. Define os vários tipos de registros armazenados como também especifica os índices que existem, como os campos armazenados são representados, a seqüência física dos registros armazenados e assim por diante. 26
Arquitetura de Três Níveis Nível Lógico Descreve a estrutura do banco de dados para uma comunidade de usuários, de forma um tanto abstrata quando comparada à forma como os dados são fisicamente armazenados. Descreve os dados armazenados e quais são os interrelacionamentos entre eles: entidades, tipos de dados, relacionamentos e operações do usuário. Este nível é utilizado pelos administradores de banco de dados que precisam decidir quais as informações devem pertencer ao banco de dados. Um modelo conceitual ou de implementação pode ser utilizado neste nível. 27 Arquitetura de Três Níveis Nível de Visão Descreve apenas parte do banco de dados. O sistema pode proporcionar diversas visões do mesmo banco de dados, assim este nível é composto por vários esquemas externos ou visões do usuário. Cada um destes esquemas descreve uma parte do banco de dados de acordo com os interesses do grupo de usuários para o qual se destina Emprega sub-linguagens de dados para operar o banco de dados através de variáveis, operadores lógicos,.. linguagens hospedeiras. 28
Arquitetura de Três Níveis Nível de Visão Nível externo Visões do usuário Visão n... Visão 2 Visão 1 DCL Emp (PL/I) emp# char(6) salixed bin(31) Empc(cobol) empno pic x(6) deptno pic x(4) Nível Lógico Nível conceitual Visão do conjunto de usuários Empregado Numero character (6) Departamento character(4) Salario numeric(5) Nível Físico Nível interno visão do armazenamento Stored_emp length = 18 prefix type byte(6), offset=0 emp# type byte(6), offset=0,index=empx dept# type= byte(4), offset=0 pay type=fullword,offset=16 29 Instâncias e Esquemas Um banco de dados muda ao longo do tempo por meio das informações que nele são inseridas ou excluídas. O conjunto de informações contidas em determinado banco de dados, em um dados momento, é chamado instância. O projeto geral do projeto do banco de dados é chamado esquema (metadados). Os esquemas são alterados com pouca freqüência. 30
Instâncias e Esquemas Esquema Externo Esquema Externo 2... Esquema Nível Externo externo n Esquema Conceitual Nível Conceitual Esquema Interno Nível Físico ou Interno BD BD BD 31 Independência de Dados É a capacidade de modificar a definição dos esquemas em determinado nível, sem afetar o esquema do nível superior. A Arquitetura ANSI/SPARC facilita esta independência de dados. Tipos de independência de dados: Independência de Dados Lógica capacidade de se efetuarem mudanças no esquema conceitual sem a necessidade de se efetuarem mudanças nos esquemas externos nem nos programas de aplicação. Independência de Dados Física capacidade de se efetuarem mudanças no esquema interno sem a necessidade de se efetuarem mudanças nos esquemas conceitual e externos. 32
Modelos de Dados É o conjunto de ferramentas conceituais usadas para a descrição dos: dados, relacionamento entre dados, semântica de dados e regras de consistência. Tipos de modelos: Modelos conceituais ou de alto nível Modelos lógicos ou de implementação Modelos físicos ou de baixo nível 33 Modelos de Dados Modelos Conceituais: descreve a estrutura de um banco de dados de forma independente de um SGBD particular. Provêem conceitos próximos aos percebidos pelos usuários, tais como entidades, atributos e relacionamentos; É uma representação da realidade em um alto-nível de abstração. Alguns são amplamente conhecidos, como: Modelo entidade-relacionamento Modelo orientado a objetos Modelo semântico de dados Modelo funcional de dados 34
Modelos de Dados O modelo conceitual entidade-relacionamento é amplamente o mais utilizado. Preço Descrição Descrição Produto (1,1) (0,n) Tipo de Produto Código Código 35 Modelos de Dados Modelos Lógicos: é uma descrição de um Banco de Dados no nível de abstração visto pelo usuário do SGBD. Ou seja, o modelo lógico é dependente do tipo particular de SGBD em uso. É uma descrição de estruturas de dados em uma forma passível de ser processada pelo computador; Exemplos: modelo relacional, modelo hierárquico e modelo de rede. O modelo lógico relacional é amplamente o mais utilizado. 36
Modelos de Dados Exemplo: TipoDeProduto (CodTipoProd, DescrTipoProd) Produto (CodProd, DescrProd, PrecoProd, CodTipoProd) TipoDeProduto CodTipoProd DescrTipoProd 1 Computador Produto 2 Impressora CodProd DescrProd PrecoProd CodTipoProd 1 PC Modelo X 2.500 1 2 Notebook ABC 3.500 1 3 Impressora JT 600 2 4 Impressora Laser 800 2 37 Modelos de Dados Modelos Físicos: são usados para descrevê-los no mais baixo nível. Em contraste com os modelos conceituais e lógicos, há poucos modelos físicos de dados em uso. Dois deles são amplamente difundidos: o modelo unificado (unifying model) e o modelo de partição de memória (framememory model) 38
Linguagens de Banco de Dados Linguagens de Definição de Dados: Um esquema de dados é especificado por um conjunto de definições expressos em uma Linguagem de Definição de Dados (Data-Definition Language DDL). O resultado da compilação dos parâmetros DDLs é armazenado em um conjunto de tabelas que constituem um arquivo especial chamado Dicionário de Dados. Um Dicionário de Dados é um arquivo de Metadados. Esse arquivo é consultado antes que o dado real seja modificado. A estrutura de memória e o método de acesso usados pelo banco de dados são especificados por um tipo especial de DDL, chamado Linguagem de Definição e Armazenamento de Dados (Data Storage and Definition Language -DSDL). 39 Linguagens de Banco de Dados Linguagens de Manipulação de Dados: A Linguagem de Manipulação de Dados (Data Manipulation Language DML) viabiliza o acesso e a manipulação (recuperação, inserção, remoção, modificação) dos dados de forma compatível ao modelo de dados apropriado. DMLs Procedurais: exigem que o usuário especifique quais dados são necessários e como obtê-los. DMLs Não Procedurais: exigem que o usuário especifique quais dados são necessários, sem especificar como obtê-los. Linguagem de consultas Linguagem de manipulação 40
Administrador de BD Uma das principais razões que motivam o uso dos SGBDs é o controle centralizado tanto dos dados como dos programas de acesso a esses dados. A pessoa que centraliza esse controle do sistema é chamado Administrador de Banco de Dados (Data Base Administrator DBA) e têm como principais funções: Definição do esquema; Definição da estrutura de dados e método de acesso; Esquema e modificações na organização física; Fornecer autorização de acesso ao sistema; Especificação de regras de integridade,... 41 Usuários de BD Programadores de aplicações: interagem com o sistema através de chamadas DML, envolvidas por programas escritos na linguagem hospedeira (Exemplo: Pascal, C, Delphi, Java). Usuários sofisticados: interagem sem escrever programas. Formulam suas solicitações ao BD através de linguagens de consultas. Usuários especialistas: escrevem aplicações especializadas de BD que não podem ser classificadas como aplicações tradicionais em processamento de dados. Usuários navegantes: interagem chamando aplicativos permanentes já escritos. 42
Estrutura Geral do SGBD Um sistema de banco de dados está dividido em módulos específicos, de modo a atender todas as funções do sistema. Algumas das funções do SGBD podem ser fornecidas pelo Sistema Operacional. Os componentes funcionais do sistema de banco de dados podem ser divididos por: Componentes de Processamento de Consultas Componentes de Administração de Memória 43 Estrutura Geral do SGBD Componentes de Processamento de Consulta: Compilador DML que traduz comandos DML da linguagem de consulta para instruções de baixo nível; Pré-compilador para comandos DML inseridos na aplicação, convertem comandos DML em chamadas de procedimentos normais da linguagem hospedeira; Interpretador DDL, que interpreta os comandos DDL e registra-os num conjunto de tabelas que contêm metadados. Componentes para o tratamento de consultas, que executa instruções de baixo nível geradas pelo compilador DML. 44
Estrutura Geral do SGBD Componentes de Administração de Memória: Gerenciamento de autorizações e integridade, que testam o cumprimento de regras de integridade a permissão ao usuário no acesso ao dado; Gerenciamento de transações, que garante que o banco permanecerá em estado consistente a despeito de falhas e que transações concorrentes serão executadas sem conflitos Administração de arquivos, que gerencia a alocação de espaço no armazenamento de disco e as estruturas usadas; Administração de buffer, responsável pela intermediação de dados do disco para a memória principal e pela decisão de quais dados colocar na memória cache. 45