INSTITUTO DE EXATAS E TECNOLÓGICAS Curso de Ciência da Computação BANCO DE DADOS aula 01 - introdução - professor: Juliano Varella de Carvalho 1.1 Apresentação • Apresentação: - nome: Juliano Varella de Carvalho - formação: bacharel em ciência da computação (UFPel) e mestre em informática (UFPB) - áreas de interesse: banco de dados; Integração BD-Web; Data Mining ; DW; OO; • Apresentação da disciplina: - objetivos: - Identificar origem, natureza, modelos e utilizações de SGBD; - Elaborar modelos de dados; - Entender os conceitos a respeito do modelo relacional; - Conhecer estruturas internas e externas de um SGBD; - Implementar técnicas de Normalização; - Trabalhar com comandos SQL. - Identificar aspectos de Concorrência, Segurança e Transação; - planejamento de aula: 20 aulas - Apresentação: do professor, dos alunos e da disciplina, interesses e perspectivas da disciplina; seus objetivos e forma de avaliação. - Introdução a SGBD –: visão geral de um banco de dados, conceitos, o por quê, funcionamento de bancos de dados. 1.1 Apresentação Modelo Entidade Relacionamento: conceitos, diagrama ER, mapeamento do ER em tabelas. Modelo Relacional: estrutura e álgebra relacional, cálculo relacional. Regras de Integridade e Normalização: integridade referencial, restrições de domínios, triggers, formas normais. Laboratório de Linguagem SQL: conceitos e comandos. Indexação: conceitos, principais estruturas, processamento de consultas. Arquitetura de SGBD – Recuperação: conceitos, armazenamento, recuperação e gerenciamento de buffer. Arquitetura de SGBD – Concorrência: conceitos, protocolos, granularidade, operações de inserção e remoção. Arquitetura de SGBD – Processamento de Transações: conceitos, definição de atomicidade, consistência, durabilidade e isolamento, serialização, recuperação. • Bibliografia: - BIBLIOGRAFIA BÁSICA: - KORTH, H; SILBERCHATZ, A. Sistema de Banco de Dados. SP, Makron Books. 1994. M - DATE, C.J. Introdução a Sistemas de Banco de Dados. RJ, Campus. 1991. - ELMASRI R., NAVATHE S., Fundamentals of Database Systems, second edition, Addison-Wesley, 1994. - HEUSER, C. A. Projeto de Banco de Dados, Sagra Luzzatto, 2001. - BIBLIOGRAFIA COMPLEMENTAR: - MOLINA, H, WIDOM, J., ULLMAN, J. Implementação de Sistemas de Banco de Dados, RJ, Campus, 2001. - KERN, V. Banco de Dados Relacionais. Érica. 1994. - ULMANN, J. A First course in databases systems. Prentice Hall. 1997. 1.1 Apresentação • Avaliação: Serão realizadas duas avaliações escritas individuais que comporão individualmente dois graus (P1 e P2). Haverá uma terceira nota T. A nota final será dada pela média aritmética das três avaliações. MG= (P1 + P2 + T)/3 Será aprovado o aluno que obtiver média geral superior a sete (7). O aluno que obtiver média inferior a três (3) está reprovado. O aluno que obtiver média maior que três (3) e menor que sete (7) deverá realizar avaliação final (AF). Na necessidade de uma avaliação final (AF), a média semestral do aluno será dada por: MS=(MG+AF)/2 Será aprovado o aluno que obtiver média semestral (MS) superior a 5 (cinco). • Meios de Comunicação - Site do professor: http://www.wzero.com.br/feevale/ - email do professor: [email protected] Todos os emails devem ser enviados com o assunto [BANCO-DADOS] • Apresentação dos alunos (nome – profissão – experiência com BD) 1.2 Conceitos 1.2 Conceitos • um banco de dados é o equivalente eletrônico de um armário de arquivamento. • “um banco de dados é uma coleção de arquivos com dados operacionais armazenados, usados pelos sistemas de aplicações de uma empresa específica.” Permite portanto: • • • • • • acrescentar novos arquivos ao BD; inserir dados em arquivos existentes; buscar dados de arquivos existentes; excluir dados de arquivos existentes; alterar dados de arquivos existentes; remover arquivos existentes no BD. • “sistema de banco de dados, basicamente, é um sistema computadorizado de manutenção de registros, ou seja, um sistema cujo objetivo global é manter os dados e torná-los disponíveis quando solicitados.” Banco de dados - dados - hardware - software - usuários usuários finais Programas de aplicação Gerenciador do sistema de banco de dados usuários finais 1.2 Conceitos • dados: designam os valores fisicamente registrados no banco de dados; informações: designam o significados destes valores para um usuário específico; os dados apresentam 2 características: - são integrados: entende-se com sendo a união de diversos arquivos, que de outra forma estariam dispersos; Ex: arquivos FUNCIONÁRIO(nome, endereco, depto, salário) e MATRÍCULA(nome, curso,...) - são compartilhados: os dados são compartilhados por diversos usuários, podendo estes acessarem o mesmo conjunto de dados para usá-los com objetivos diferentes. Ex: Depto de Pessoal e Depto de Treinamento • o hardware envolvido para armazenar banco de dados consiste em: - Processador e memória principal que dão suporte à execução do software - Memória secundária, dispositivos de entrada e saída, controladores de dispositivos, etc. Usados para armazenar os dados. • o software a camada de software entre os usuários e os dados armazenados denomina-se sistema gerenciador de banco de dados (DBMS). O DBMS isola os usuários do BD, dos detalhes a nível de hardware e admite operações de usuários. - Instância de SGBD: cópia específica de um produto, executando em um computador 1.2 Conceitos • os usuários são os atores que são responsáveis pela administração do banco, carregamento dos dados, consulta, criação de aplicações, entre outras tarefas. Dividem-se em: - programadores de aplicações: interagem com o SGBD, por meio de requisições embutidas em programas nas mais diversas linguagens. - usuários finais: acessam o banco de dados interativamente, via aplicações ou interface do próprio SGBD. - administrador: pessoa responsável por fazer o controle, de modo centralizado, dos dados e dos programas que acessam o banco de dados. Suas principais funções são: de dados * deve entender dos dados e da importância destes para a empresa; * decidir quais dados devem ser armazenados no BD; * estabelecer normas para manter e tratar esses dados; de banco de dados * criar os bancos de dados; * gerar um conjunto de tabelas armazenadas no banco de dados; * implementar os controles para pôr em prática as normas tomadas; * assegurar o desempenho adequado do sistema e monitorá-lo; * definição da estrutura de dados e método de acesso; * criação e modificação na organização física; * implementar autorização de acesso ao sistema; * especificar de regras de integridade; * servir de elo de ligação com os usuários; * definir a estratégia de backup e recuperação: após erros humanos, falhas no hardware ou no sistema operacional é necessário retornar o BD o mais breve possível e com as menores conseqüências ao sistema 1.8 Administrador de Banco de Dados • programas utilitários para auxiliar: - ferramentas de carga: criar uma versão inicial do BD a partir de um ou mais arquivos; - ferramentas de backup/restore (gravação/recuperação); - ferramentas de reorganização: ajustar o banco de dados de forma a aprimorar o seu desempenho – agrupamento dos dados ou regeneração de espaço de dados obsoletos; - ferramentas estatísticas: para computar diversos desempenhos estatísticos, tamanhos de arquivos, gráficos, etc; - ferramentas analíticas: analisa as estatísticas geradas; - dicionário de dados ou catálogo do sistema ou banco de dados do sistema: são “dados sobre dados” (metadados), ou seja, descrição dos objetos do sistema. 1.2 Conceitos • Por que usar um banco de dados ? Comparando-se ao trabalho manual de armazenar dados: - densidade: não há necessidade de volume de papéis; - velocidade: recuperação e modificação dos dados é realizada de maneira muito rápida; - menos trabalho monótono: troca o trabalho manual pelo trabalho mecânico; - atualidade: informações precisas e atualizadas estão disponíveis a qualquer momento; - proteção: os dados podem ficar melhor protegidos a perdas não intencionais e acesso ilegal. - controle centralizado dos dados operacionais: * redundância dos dados evitada -> desperdício de espaço evitado; * inconsistência evitada -> informações incorretas evitadas, através da remoção de redundâncias ou da redundância controlada (propagação de atualizações); * compartilhamento dos dados por várias aplicações; * permite a aplicação de restrições de segurança; * mantém a integridade dos dados, através da geração de regras de integridade; * suporte a transações (unidade lógica de trabalho) é oferecido; * padrões (nomenclatura, documentação, de instalação, etc) podem ser impostos. 1.3 Histórico Durante a evolução dos bancos de dados, ao longo da história da computação, podemos distinguir quatro gerações destes sistemas. São elas: • 1ª geração - processamento de dados em arquivos independentes: nesta época, os bancos de dados não existiam, por isso diversos programas manipulavam diferentes arquivos, os quais eram os responsáveis pelo armazenamento dos dados. A figura 1 ilustra esta geração. Fig. 1: primeira geração Ainda existem algumas aplicações que se utilizam deste método para organização dos dados, basicamente porque a estrutura para organização dos dados do sistema é tão simples que pode ser inserida em um ou vários arquivos sem conexão lógica entre eles. 1.3 Histórico • 2ª geração - processamento de dados em arquivos integrados: os principais problemas da 1ª geração são: * redundância de dados; * inconsistência; * acesso difícil aos dados a partir do usuário Dada a necessidade, começam a surgir os primeiros Sistemas de Gerência de Banco de Dados (SGBD's). Desta forma, todos os programas passam a compartilhar um único arquivo entre si: o banco de dados (figura 2). Fig. 2: segunda geração Agora o SGBD responsabilizar-se-á com diversas tarefas, anteriormente espalhadas nos diversos programas, tais como: * controle de consistência; * segurança dos dados; * eficiência; * tolerância a falhas, etc 1.3 Histórico • 3ª geração - processamento da informação: os modelos da 2ª geração não são inteiramente suficientes para conseguir descrever de forma mais completa a aplicação. É necessário mapear a aplicação em conceitos intrínsecos aos bancos de dados como registro, normalização, chave primária, etc. Faltam tipos complexos. modelagem de um objeto em bd relacional • 4ª geração - processamento ampliado: os sistemas ditos de 4ª geração procuram ampliar as possíveis aplicações de sistemas de banco de dados. Exemplos deles temos: * BD's Multimídia: processam de forma adequada objetos multimídia, os quais possuem características próprias, exemplos com imagens estáticas ou animadas, sons, textos, gráficos, mapas, etc; · * Bancos de Dados Espaciais; * Bancos de Dados Semi-estruturados e XML; * Bancos de Dados Temporais; * Bancos de Dados Textuais; * Bancos de Dados Distribuídos e Paralelos; * Bancos de Dados Móveis; 1.4 Objetivos • Um SGBD (Sistema Gerenciador de Banco de Dados) deve oferecer um ambiente conveniente e eficiente para a recuperação e o armazenamento das informações do banco de dados; • Um SGBD tem como objetivos solucionar as seguintes desvantagens de um Sistema de Processamento de Arquivos: * * * * * * inconsistência e redundância de dados; dificuldade de acesso aos dados (é necessária a recuperação de informações de modo eficiente); integridade de dados ineficiente; problemas de atomicidade (ou tudo ou nada); problemas na manutenção de acesso concorrente aos dados; segurança de dados ineficaz 1.5 Visão geral do Banco de Dados Campo armazenado: menor unidade de dados armazenados. Banco de dados armazenado Registro armazenado: coleção de campos armazenados relacionados entre si. Arquivo armazenado:coleção de todas as Ocorrências de um único tipo de registro armazenado. outros arquivos armazenados Arquivo armazenado “peças” Duas ocorrências do tipo de registro armazenado “peça“ nº da peça nome da peça cor da peça peso da peça P1 Porca Vermelho 12 ocorrências de campos armazenados P2 Pino Verde 17 nº da peça nome da peça cor da peça peso da peça 1.7 Níveis de abstração • níveis: - interno: mais próximo ao armazenamento físico – relaciona-se à forma com os dados são realmente armazenados, bem como o detalhamento de como eles são acessados. - externo: mais próximo aos usuários – forma como os dados são vistos pelos usuários individuais. - conceitual (lógico): nível de simulação – visão conceitual que corresponde à representação abstrata do banco de dados em sua totalidade. Utilizam estruturas mais simples, tais como sql, gatilhos, backup/recovery, para executar tarefas complexas vistas do nível Usuário A1 Usuário A2 Usuário B1 Usuário B2 Usuário B3 físico. Linguagem X Linguagem Y Esquema Visão externa A Externo A Linguagem Z Linguagem Z Esquema Visão externa B Externo B Mapeamento B externo/conceitual Mapeamento A externo/conceitual Esquema Conceitual DBA Linguagem X Visão conceitual Mapeamento conceitual/interno Definição de estrutura do armazenamento (esquema interno) Banco de dados armazenado (visão interna) Sistema de Gerenciamento de banco de Dados (DBMS) 1.7 Níveis de abstração • exemplo dos três níveis: banco de dados de funcionário Externo DCL 1 EMPP, 2 EMP# CHAR(6), 2 SAL FIXED BIN(31); 01 EMPC 02 EMPNO PIC X(6) 02 DEPTNO PIC X(4) Conceitual EMPLOYEE EMPLOYEE_NUMBER DEPARTAMENT_NUMBER SALARY CHARACTER(6) CHARACTER(4) NUMERIC(5) Interno STORED_EMP PREFIX EMP# DEPT# PAY LENGTH=118 TYPE=BYTE(6), OFFSET=0 TYPE=BYTE(6), OFFSET=6, INDEX=EMPX TYPE=BYTE(4), OFFSET=12 TYPE=FULLWORD, OFFSET=16 1.7.1 Nível externo • é o nível do usuário individual. Em termos ANSI/SPARC, a visão de um determinado usuário é uma visão externa, ou seja, é o conteúdo do banco de dados como visto por determinado usuário. Ex: um usuário do Depto. Pessoal usuários finais com distintos graus de sofisticação • cada usuário tem um linguagem a sua disposição. Ex: - Programador da aplicação: pode utilizar uma linguagem convencional como COBOL ou PL/I, ou uma linguagem do sistema em questão, PL/SQL, PGSQL, TRANSACT-SQL. -Usuário final: uma linguagem de consulta como SQL ou uma linguagem baseada em formulários e menus. • mapeamento externo/conceitual é a correspondência entre a visão externa e a conceitual. Como exemplo, podemos ter tipos de dados diferentes, denominações de campos e registros modificadas, campos conceituais múltiplos podem ser combinados em um único campo externo, etc. 1.7.2 Nível conceitual • a visão conceitual é a representação de todo o conteúdo de informações do banco de dados, de modo abstrato quando comparado à forma como os dados são fisicamente armazenados, e que também pode ser bem diferente da maneira como os dados são vistos por qualquer usuário em particular. • a visão conceitual é a visão dos dados “como realmente são” e não como os usuários são forçados a vê-los. • a visão conceitual é definida pelo “esquema conceitual”, o qual não possui quaisquer considerações sobre a estrutura de armazenamento ou a estratégia de acesso – somente definição das informações. 1.7.3 Nível interno • a visão interna é descrita através do “esquema interno”, o qual tem a responsabilidade de definir: - tipos de registros armazenados; - os índices existentes; - triggers necessários; - seqüência física dos registros, etc. 1.8 Sistema de Gerenciamento de Banco de Dados • Resumindo, o SGBD é o software que manipula todos os acessos ao BD. Exemplo: 1. O usuário emite uma solicitação de acesso; 3. O DBMS intercepta a solicitação e a analisa; 5. O DBMS, por sua vez, inspeciona os esquemas externos para aquele usuário, o mapeamento externo/conceitual correspondente, o esquema conceitual, o mapeamento conceitual/interno e a definição da estrutura de armazenamento; 7. O DBMS executa as operações necessárias no banco de dados armazenado. 1.8 Sistema de Gerenciamento de Banco de Dados Fonte de esquemas e mapeamentos Processador de DDL Solicitações de DML Planejadas Processador de DML Solicitações de DML não-planejadas Processador de linguagem de consulta solicitações compiladas otimizador solicitações otimizadas Fonte de esquemas e mapeamentos Gerenciador em tempo de execução Banco de dados dados metadados metadados 1.9 Tipos de Sistemas de Banco de dados • Sistemas de Lista Invertida: Ex: DATACOM/DB (Aplied Data Research), ADABAS(Software AG), etc. • Sistemas Hierárquicos: Ex: IMS (1968, 1ª versão – depois virou IMS/VS – Information Management System/Virtual Storage) (IBM), System 2000 (Intel); • Sistemas em Rede: Ex: IDMS (Cullinet), DMS 1100 (Sperry), TOTAL (Cincom Systems) • Sistemas Relacionais: é aquele no qual os dados são percebidos pelos usuários como tabelas e as operações para recuperação dos dados geram novas tabelas, a partir das originais. Ex: Oracle, DB2 (IBM), MySql (MySql AB), Firebird (Open Source), PostgreSQL (Open Source), SQL Server (Microsoft), Sybase Adaptative Server (Sybase), etc. • Sistemas Orientados a Objetos: Os dados são armazenados como objetos. Ex: GemStone (GemStone Systems Inc.), Versant (Versant Object Technology), O2, Jasmine, etc. • Sistemas Relacionais-Orientados a Objetos: tiram proveito de características dos sistemas relacionais e do sistema orientado a objeto. Ex: Oracle (a partir da versão 8i), PostgreSql. 1.11 Linguagens de Consulta - SQL (Structured Query Language) - Linguagens de Definição de Dados (DDL): são as definições utilizadas para a especificação do esquema de dados. O resultado da compilação de uma cláusula DDL é a criação(alteração) de um objeto no esquema, além do armazenamento deste resultado no de dados; - Linguagens de Manipulação de Dados (DML): utilizada para inserir, atualizar, excluir e recuperar informações do BD. Existem tanto DML's procedurais quanto não procedurais 1.12 Modelos de SGBDs • Modelo relacional: utiliza-se de um conjunto de tabelas para representar tanto os dados como a relação entre eles. nome cpf cidade conta conta saldo Júlio 12345678901 Porto Alegre C-001 C-152 500 Ana 10987654321 Novo Hamburgo C-105 C-105 700 Pedro 22233344456 Sãp Leopoldo C-888 C-888 900 Tiago 99988877765 Novo Hamburgo C-185 C-006 1500 Fernanda 22211100098 Porto Alegre C-006 C-185 2300 Tiago 99988877765 Novo Hamburgo C-152 C-001 1850 • Modelo de rede: os dados são representados por um conjunto de registros (como em linguagens de programação) e a relação entre os dados é dada por links (ligações - ponteiros) Júlio 12345678901 Porto Alegre C-152 500 Ana 10987654321 Novo Hamburgo C-105 700 Pedro 22233344456 Sãp Leopoldo C-888 900 Tiago 99988877765 Novo Hamburgo C-006 1500 Fernanda 22211100098 Porto Alegre C-185 2300 C-001 1850 1.13 Modelos de SGBDs • Modelo hierárquico: similar ao modelo de rede, a não ser pelo fato de os registros estarem organizados em árvores. Júlio 12345678901 Porto Alegre Ana 10987654321 Novo Hamburgo Pedro C-001 22233344456 Sãp Leopoldo 1850 Tiago C-105 99988877765 Novo Hamburgo 700 Fernanda C-888 22211100098 900 C-152 500 C-185 2300 • Modelo dimensional: armazena os dados em arrays multidimensionais (cubos). BD RELACIONAL MODELO MATRIZ BIDIMENSIONAL COR VENDAS MODELO BMW Azul 5 BMW Preto 12 Mercedes Azul 1 Mercedes Preto 8 Toyota Azul 3 Toyota Preto 6 Porto Alegre Azul Preto BMW 5 12 Mercedes 1 8 Toyota 3 6 C-006 1500