Banco de Dados I Objetivo: Apresentar os principais conceitos do nível lógico de um sistema gerenciador de banco de dados (SGBD) através da linguagem SQL e de modelos relacionais para gerenciamento de dados. Banco de Dados I Conteúdo Programático 1. Introdução a banco de dados 2. Arquitetura de um SGBD 3. Modelo de redes, hierárquico e relacional 4. Modelo relacional 4.1 Algebra relacional 4.2 Cálculo relacional 4.3 Operações da algebra relacional 5. SQL 5.1 Linguagem de definição de dados (DDL) 5.2 Linguagem de manipulação de dados (DML) 5.3 Linguagem de controle de dados (DCL) Banco de Dados I Conteúdo Programático (Continuação) 6. Projeto de banco de dados 6.1 Modelo Conceitual 6.2 Modelo Lógico 6.3 Modelo Físico 7. Modelo Entidade-Relacionamento (MER) 8. Mapeamento MER para modelo relacional 9. Normalização 10. SQL Avançada Banco de Dados I BIBLIOGRAFIA BÁSICA: 1. DATE, C. J. Introdução a Sistemas de Banco de Dados. 8. ed. Rio de Janeiro: Campus, 2004. 2. SILBERSCHATZ, A.; KORTH, H. F; SUDARSHAN, S. Sistema de Banco de Dados. 5ª Edição. Rio de Janeiro: Editora Campus, 2006. 3. MACHADO, Felipe Nery Rodrigues. Banco de Dados: Projeto e Implementação. São Paulo: Editora Érica, 2004. Banco de Dados I BIBLIOGRAFIA COMPLEMENTAR: 1. ELMASRI, Ramez; NAVATHE, Shamkant. Sistemas de banco de Dados – Fundamentos e Aplicações. 4ª. Edição. Editora Addison-Wesley, 2005. 2. PATRICK, John J. SQL fundamentos. São Paulo: Berkeley Brasil, 2002. 3. HEUSER, Carlos Alberto. Projeto de Banco de Dados – Série Livros Didáticos UFRGS. Editora Sagra-Luzzato, 2001. Banco de Dados I Ferramentas Freeware Utilizadas: Oracle 10g Express Edition http://www.oracle.com/technology/products/database/xe/ind ex.html Freeware Edition of Toad for Oracle http://www.toadsoft.com/lic_agree.html Conceitos de Banco de Dados “Um sistema de gerenciamento de banco de dados (DBMS) é uma coleção de dados inter-relacionados e um conjunto de programas para acessar esses dados.” (SILBERSCHATZ, 2006) “Um sistema gerenciador de banco de dados (SGBD) é uma coleção de programas que permite ao usuário criar e manter um banco de dados.” (ELMASRI, 2005) Desvantagens dos Sistemas de Arquivos Redundância e inconsistência dos dados Dificuldade de acesso a dados Isolamento de dados Problemas de integridade Problemas de atomicidade Anomalias de acesso concorrente Problemas de segurança Histórico dos Bancos de Dados Década de 50 e início da década de 1960 - As fitas magnéticas e os decks de cartão foram desenvolvidos para armazenamento de dados. Final da década de 1960 e década de 1970 - O uso dos discos rígidos foi difundido no final da década de 60. - Difusão dos banco de dados em rede e hieráquicos. - Em 1970, Codd define o modelo realcional dando origem aos bancos de dados relacionais. Histórico dos Bancos de Dados Década de 80 - Evolução dos bancos de dados relacionais. - Pesquisas sobre banco de dados paralelos e distribuídos. - Trabalhos iniciais sobre banco de dados orientado a objetos. Início da década de 1990 - Evolução da linguagem SQL para aplicações de suporte a decisão. - Fornecedores de banco de dados introduzem os conceitos de banco de dados paralelos em seu produtos. - Fornecedores de banco de dados também começaram a acrescentar o suporte ao modelo objeto/relacional aos seus banco de dados Histórico dos Bancos de Dados Final da década de 90 - Crescimento explosivo da world Wide Web. - Investimento dos banco de dados em altas taxas de processamento de transações e com níveis de confiabilidade muito altas. Início da década de 2000 - Surgimento dos bancos de dados XML e de suas linguagens de consulta XML: XPath e XQuery. - Crescimento das técnicas de computação auntonômica/ autoadministração para reduzir os esforços de administração dos sistemas de banco de dados. Níveis de Abstração Utilizados pelos Banco de Dados Nível Físico - É o nível de abstração mais baixo e que descreve como os dados são realmente armazenados. Nível Lógico - É o nível de abstração intermediário e que descreve que dados estão armazenados no banco de dados e que relações existem entre eles. Nível de View - É o nível de abstração mais alto e que permite a visualização de todas ou apenas algumas partes do banco de dados. Níveis de Abstração Utilizados pelos Banco de Dados NÍVEL DE VIEW VIEW 1 VIEW 2 NÍVEL LÓGICO NÍVEL FÍSICO VIEW N Engenharia de Software, Modelo de Dados e Banco de Dados Engenharia de Software Modelo de Dados Notações/Tecnologias Modelo Conceitual DER Fase de Projeto Modelo Lógico Modelo Relacional, Modelo Orientado a Objetos, etc. Fase de Implementação Modelo Físico Tabelas no Oracle , Classes em Java, etc. Fase de Análise Classificação da Linguagem de Banco de Dados Linguagem de Manipulação de Dados (DML) - Linguagem utilizada para leitura e armazenamento de dados. Linguagem de Definição de Dados (DDL) - Linguagem utilizada para definir a estrutura de armazenamento dos dados, também chamada de dicionário de dados ou metadados. Linguagem de Controle de Dados (DCL) - Linguagem utilizada para controle de sessão, transação, além do controle do próprio sistema de banco de dados. Linguagem de Manipulação de Dados (DML) Existem basicamente 2 tipos de DML: 1. DMLs procedurais - Requerem que um usuário especifique que dados são necessários e como obtê-los. 2. DMLs declarativas - Requerem que um usuário especifique que dados são são necessários sem especificar como obtê-los. Linguagem de Definição de Dados (DDL) A DDL também define propriedades adicionais ao dados, como: 1. Restrições de Domínio - São as restrições relativas aos tipos do dados. 2. Integridade Referencial - São as retrições relativas às associações entre duas ou mais entidades. 3. Assertivas - São as restrições relativas às condições impostas para uma atribuição de valor sobre um determinado atributo. 4. Autorização - São as retrições de acesso para leitura, escrita e exclusão sobre determinados dados. Arquitetura Simplificada de um Sistema de Banco de Dados Programas de Aplicações/ Consultas (Queries) Usuários/Programadores SOFTWARE SGBD Processamento de Consultas Gerenciador de Acesso aos Dados Armazenados Definição de Dados Armazenados (Metadados) Banco de Dados Armazenados Arquitetura Geral de um Sistema de Banco de Dados Usuários leigos (caixas, agentes, usuários da Web) Programadores de Aplicação Usuários Avançados (Analistas) escreve usa usa Interfaces de Aplicação Administrador de Banco de Dados usa Programas de Aplicação Ferramentas de Consulta Ferramentas de Administração Compilador e linkeditor Consultas de DML Interpretador de DDL Código de objeto do programa de aplicação Compilador e organizador de DML Mecanismo de avaliação de consulta Gerenciador de Buffer Gerenciador de Arquivos Processador de Consulta Gerenciador de Autorização e Integridade Gerenciador de Transação Gerenciador de Armazenamento Índices Dados Dicionário de Dados Dados Estatísticos Disco de Armazenamento Estruturas de Armazenamento de um Sistema de Banco de Dados Rede Hieráquico Relacional Objeto Class Class Attribute Attribute Service Service Class Attribute Service Estruturas de Armazenamento de um Sistema de Banco de Dados XML Objeto/Relacional Class Attribute Service Class Attribute <?xml version="1.0" encoding="ISO-8859-1"?> <Cliente> <Registro> <Nome/> <Cidade/> <Estado/> </Registro> </Cliente> Service Relacional/XML <?xml version="1.0" encoding="ISO-8859-1"?> <Cliente> <Registro> <Nome/> <Cidade/> <Estado/> </Registro> </Cliente> <?xml version="1.0" encoding="ISO-8859-1"?> <Cliente> <Registro> <Nome/> <Cidade/> <Estado/> </Registro> </Cliente> Principais Tipos de Arquitetura de um SGBD Arquitetura SGBD Centralizada Arquitetura Cliente/Servidor de 2 Camadas Arquitetura Cliente/Servidor de 3 Camadas Arquitetura SGBD Centralizada Arquitetura Cliente/Servidor de 2 Camadas Arquitetura Cliente/Servidor de 3 Camadas Exemplos de Tecnologias em Banco de Dados Banco Banco Banco Banco Banco Banco Banco de de de de de de de Dados Paralelos de Dados Distribuídos Dados Multimídia Dados Textuais Dados Temporais Dados Dedutivos Dados Móveis Principais Usuários de um Banco de Dados Administradores de banco de dados (DBA) Projetistas de banco de dados Analistas de sistemas e programadores de aplicações Usuário final Características dos usuários de um Sistema de Banco de Dados Usuários Leigos - São usuários não avançados que interagem com o sistema chamando um dos programas de aplicação previamente escritos. Programadores de Aplicação - São profissionais de computação que escrevem programas de aplicação. Usuários Avançados - Interagem com o sistema de banco de dados sem escrever programas. Usuários Especializados - São usuários avançados que escrevem aplicações de banco de dados que não se encaixam na estrutura de processamento de dados tradicional. Administrador de Banco de Dados (DBA) - É o profissional responsável pelo controle central dos dados e pelos programas que acessam os próprios dados. Funções de um Administrador de Banco de Dados Estrutura de armazenamento e definição de método de acesso. Modificação de esquema e de organização física. Concessão de autorização para acesso a dados. Manutenção de rotinas como backups, gerenciamento de espaço em disco e monitoração de tarefas executadas no próprio banco de dados. Definição de Esquema. Alguns Utilitários para Sistema de Banco de Dados Carregamento (Loading) Backup Reorganização de Arquivos Monitoramento de Desempenho