Prévia do material em texto
Autores: Profa. Gisele Lopes Batista Pinto Prof. Luiz Fernando de Lima Santos Colaboradores: Prof. Roberto Macias Profa. Elisângela Mônaco de Moraes Prof. Emanuel Augusto Severino de Matos Administração de Banco de Dados Professores conteudistas: Gisele Lopes Batista Pinto / Luiz Fernando de Lima Santos Gisele Lopes Batista Pinto É licenciada em Matemática pelo Instituto de Matemática e Estatística da Universidade de São Paulo, com especialização em Automação e Informática Industrial pela Escola Politécnica da USP. Depois de um instigante e divertido período lecionando Matemática no Ensino Médio e para cursos de Magistério em uma escola pública no Estado de São Paulo, voltou-se para a Tecnologia da Informação. Durante onze anos, foi Administradora de Bancos de Dados (DBA) no Departamento de Informática da Reitoria da USP e há cinco anos integra o Grupo de Projetos Institucionais do mesmo Departamento, atuando nas áreas de Mídias Sociais e Inteligência Corporativa. Luiz Fernando de Lima Santos É formado em Ciências da Computação pela Uninove e pós-graduado em Tecnologia da Informação pela UNIP. Atua há mais de 10 anos na área de Banco de Dados e Business Intelligence, com passagem por empresas como Unilever e Johnson & Johnson, e com experiência nos maiores bancos do mercado como Microsoft SQL Server e Oracle. É professor de Banco de Dados na UNIP nas modalidades presencial e a distancia (EaD). © Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida por qualquer forma e/ou quaisquer meios (eletrônico, incluindo fotocópia e gravação) ou arquivada em qualquer sistema ou banco de dados sem permissão escrita da Universidade Paulista. Dados Internacionais de Catalogação na Publicação (CIP) P659a Pinto, Gisele Lopes Batista Administração de banco de dados / Gisele Lopes Batista Pinto; Luiz Fernando Lima dos Santos. São Paulo: Editora Sol, 2020 108 p., il. Nota: este volume está publicado nos Cadernos de Estudos e Pesquisas da UNIP, Série Didática, ISSN 1517-9230. 1. Informática. 2. Banco de dados. 3. Administração. I. Santos dos, Luiz Fernando Lima. II. Título. CDU 004.65 U504.48 – 20 Prof. Dr. João Carlos Di Genio Reitor Prof. Fábio Romeu de Carvalho Vice-Reitor de Planejamento, Administração e Finanças Profa. Melânia Dalla Torre Vice-Reitora de Unidades Universitárias Prof. Dr. Yugo Okida Vice-Reitor de Pós-Graduação e Pesquisa Profa. Dra. Marília Ancona-Lopez Vice-Reitora de Graduação Unip Interativa – EaD Profa. Elisabete Brihy Prof. Marcelo Souza Prof. Dr. Luiz Felipe Scabar Prof. Ivan Daliberto Frugoli Material Didático – EaD Comissão editorial: Dra. Angélica L. Carlini (UNIP) Dra. Divane Alves da Silva (UNIP) Dr. Ivan Dias da Motta (CESUMAR) Dra. Kátia Mosorov Alonso (UFMT) Dra. Valéria de Carvalho (UNIP) Apoio: Profa. Cláudia Regina Baptista – EaD Profa. Betisa Malaman – Comissão de Qualificação e Avaliação de Cursos Projeto gráfico: Prof. Alexandre Ponzetto Revisão: Andréia Andrade Michel Apt Sueli Brianezi Carvalho Sumário Administração de Banco de Dados APRESENTAÇÃO ......................................................................................................................................................9 INTRODUÇÃO ...........................................................................................................................................................9 Unidade I 1 INTRODUÇÃO A BANCO DE DADOS ..........................................................................................................11 1.1 Histórico ................................................................................................................................................... 12 1.1.1 Modelo hierárquico ................................................................................................................................ 14 1.1.2 Modelo em rede ...................................................................................................................................... 15 1.2 Definição de banco de dados .......................................................................................................... 16 1.3 Tipos de bancos de dados ................................................................................................................. 17 1.3.1 Bancos de dados relacionais .............................................................................................................. 17 1.3.2 Bancos de dados não relacionais ..................................................................................................... 18 1.3.3 Bancos de dados orientados a objeto ............................................................................................ 18 1.4 Sistemas de Gerenciamento de Banco de Dados (SGBD) .................................................... 19 1.5 Funções básicas de um SGBD .......................................................................................................... 21 1.5.1 Método de acesso ................................................................................................................................... 21 1.5.2 Restrições de Integridade (RI) ........................................................................................................... 22 1.5.3 Segurança .................................................................................................................................................. 22 1.5.4 Controle de concorrência .................................................................................................................... 23 1.5.5 Independência dos dados .................................................................................................................... 23 1.6 Arquitetura básica de um SGBD ..................................................................................................... 23 1.6.1 Nível físico ................................................................................................................................................. 23 1.6.2 Nível conceitual ....................................................................................................................................... 23 1.6.3 Nível de visão ........................................................................................................................................... 24 1.7 Como os dados são armazenados ................................................................................................. 24 1.7.1 Diferença entre dado e informação ................................................................................................ 25 1.7.2 Dicionário de Dados (DD) .................................................................................................................... 25 2 AGENTES DE INTERAÇÃO COM O SGBD ................................................................................................. 25 2.1 DBA – Data Base Administrator ..................................................................................................... 26 2.1.1 AD – Administrador de dados ............................................................................................................ 26 2.1.2 Desenvolvedor de banco de dados .................................................................................................. 26 2.1.3 Programador ............................................................................................................................................. 26 2.2 Certificações ........................................................................................................................................... 27 2.2.1 Certificação Microsoft .......................................................................................................................... 27 2.2.2 Certificação Oracle .................................................................................................................................27 Unidade II 3 DIAGRAMA ENTIDADE-RELACIONAMENTO (E-R) .............................................................................. 33 3.1 Entidades do DER ................................................................................................................................. 33 3.2 Relacionamentos do DER .................................................................................................................. 33 3.2.1 Relacionamentos binários ................................................................................................................... 33 3.2.2 Relacionamentos reflexivos ................................................................................................................ 34 3.2.3 Relacionamentos ternários ................................................................................................................. 34 3.3 Atributos do DER .................................................................................................................................. 34 3.3.1 Atributos opcionais ................................................................................................................................ 35 3.3.2 Atributos compostos ............................................................................................................................. 35 3.3.3 Atributos multivalorados ..................................................................................................................... 35 3.4 Entidades fracas .................................................................................................................................... 35 3.5 Especialização ........................................................................................................................................ 35 3.5.1 Especialização com ou sem exclusão mútua .............................................................................. 35 3.5.2 Especialização com ou sem obrigatoriedade .............................................................................. 36 3.6 Agregação ................................................................................................................................................ 36 4 MODELO ENTIDADE RELACIONAMENTO (MER)................................................................................... 36 4.1 Domínio .................................................................................................................................................... 37 4.2 Atributo do MER ................................................................................................................................... 37 4.3 Tupla .......................................................................................................................................................... 38 4.4 Relação ..................................................................................................................................................... 38 4.5 Chave ......................................................................................................................................................... 38 4.5.1 Chave primária (PK) – primary key .................................................................................................. 38 4.5.2 Chave estrangeira (FK) – foreign key .............................................................................................. 39 4.5.3 Chave artificial ou delegada (SK) – surrogate key .................................................................... 39 4.6 Restrições de integridades básicas ................................................................................................ 40 4.6.1 Regra de integridade de entidade ................................................................................................... 40 4.6.2 Regra de integridade referencial ...................................................................................................... 40 4.7 Tipos de relacionamento ................................................................................................................... 43 4.8 Normalização ......................................................................................................................................... 44 4.8.1 Primeira Forma Normal (1FN) ............................................................................................................ 44 4.8.2 Segunda Forma Normal (2FN) ........................................................................................................... 46 4.8.3 Terceira Forma Normal (3FN) ............................................................................................................. 47 Unidade III 5 PROJETO DE BANCO DE DADOS ................................................................................................................ 52 5.1 Linguagens de banco de dados ...................................................................................................... 52 5.2 Tipos de linguagem SQL .................................................................................................................... 53 5.2.1 Data Definition Language (DDL) ....................................................................................................... 53 5.2.2 Data Manipulation Language (DML) ............................................................................................... 54 5.2.3 Data Control Language (DCL) ............................................................................................................ 55 5.2.4 Data Transaction Language (DTL) ..................................................................................................... 57 5.2.5 Data Query Language (DQL) ............................................................................................................... 58 5.3 Módulos de funcionamento do SGBD ......................................................................................... 63 5.4 Etapas do projeto de banco de dados .......................................................................................... 64 5.4.1 Levantamento de requisitos ............................................................................................................... 65 5.4.2 Projeto conceitual .................................................................................................................................. 65 5.4.3 Projeto lógico ........................................................................................................................................... 65 5.4.4 Projeto físico ............................................................................................................................................. 66 5.4.5 Criação do banco de dados ................................................................................................................ 66 5.4.6 Exemplo de projeto de banco de dados ........................................................................................ 66 6 TIPOS DE DADOS (DATA TYPES) ................................................................................................................. 68 6.1 Elementos de dados ............................................................................................................................ 69 6.1.1 Estrutura de dados ................................................................................................................................. 69 6.1.2 Unidades de medidas ............................................................................................................................ 71 Unidade IV 7 ADMINISTRAÇÃO DE BANCO DE DADOS ............................................................................................... 77 7.1 Backup ......................................................................................................................................................78 7.1.1 Recuperação e concorrência .............................................................................................................. 78 7.1.2 Pontos de sincronização ...................................................................................................................... 79 7.2 Meios de recuperação (restore) ...................................................................................................... 80 7.2.1 Falhas do sistema .................................................................................................................................... 80 7.2.2 Falhas dos meios físicos ....................................................................................................................... 81 7.3 Concorrência .......................................................................................................................................... 81 7.4 Bloqueio (Lock) ...................................................................................................................................... 82 7.5 Arquitetura básica do ambiente de banco de dados ............................................................. 84 7.5.1 Cluster de alto desempenho .............................................................................................................. 84 7.5.2 Cluster de alta disponibilidade .......................................................................................................... 84 7.5.3 Cluster para balanceamento de carga ........................................................................................... 84 7.6 Replicação ............................................................................................................................................... 85 7.6.1 Replicação síncrona (eager)................................................................................................................ 85 7.6.2 Replicação assíncrona (lazy) ............................................................................................................... 85 7.6.3 Replicação unidirecional (master-slave) ....................................................................................... 86 7.6.4 Replicação multidirecional (multi-master) .................................................................................. 86 7.6.5 Exemplo de funcionamento de um cluster com replicação .................................................. 86 8 MODELO DIMENSIONAL ............................................................................................................................... 87 8.1 Fatos .......................................................................................................................................................... 88 8.2 Dimensão ................................................................................................................................................. 89 8.2.1 Chave artificial (surrogate key) ......................................................................................................... 90 8.3 Medidas .................................................................................................................................................... 90 8.4 Granularidade ........................................................................................................................................ 90 8.5 Agregados ................................................................................................................................................ 91 8.6 Passos do projeto de DW ................................................................................................................... 92 8.7 Data mart (DM) ..................................................................................................................................... 94 8.8 Ferramentas de acesso aos dados ................................................................................................. 94 9 APRESENTAÇÃO O conceito de banco de dados é importante porque auxilia no desenvolvimento das aplicações para os sistemas de informação, comunicação e processos de automação. Por meio deste curso, você será capaz de avaliar as tecnologias e arquiteturas disponíveis no mercado e fazer a escolha mais adequada. Além disso, você poderá entender os assuntos referentes à modelagem de dados e identificar os aspectos que impactam no desempenho e na segurança dos dados da empresa. Todo o controle sobre o armazenamento e a manipulação de dados no que diz respeito ao acesso, à integridade física e lógica, à segurança, à redundância, concorrência entre as diversas aplicações, autorização para as diversas operações etc., são de responsabilidade de um software denominado de Sistema Gerenciador de Banco de Dados, isto é, o SGBD. Esses softwares são capazes de gerenciar diversos bancos de dados em um único sistema. INTRODUÇÃO O surgimento da tecnologia de banco de dados ocorreu no momento em que os especialistas no desenvolvimento de sistemas computacionais perceberam que, para a informatização de grandes organizações, várias questões relacionadas com o gerenciamento de dados necessitavam ser resolvidas de forma mais eficiente, por exemplo, o acesso aos dados de diferentes setores de uma mesma empresa, por aplicações diferentes, de forma compartilhada e consistente, evitando a falta de padronização e problemas de segurança dos dados. A manutenção de uma base de dados consistente, sem o auxílio das técnicas e ferramentas que envolvem os bancos de dados, torna-se um trabalho insano. A maior dificuldade em construir sistemas corporativos em uma organização ocorre quando os dados são armazenados de forma não integrada com um projeto global da empresa. Se cada setor mantiver uma base de dados local e independente, fica extremamente difícil a integração das aplicações e a construção de um sistema de apoio gerencial para a organização. A reflexão que devemos fazer é a seguinte: a empresa pode não ter a certeza de qual é a verdade referente à informação, mas ela deve ser única em todos os setores da organização. Se o relatório do setor de pessoal mostrar que a empresa tem 500 funcionários, significa que todos os relatórios dos demais setores devem ter o mesmo resultado. E isso só é possível se a fonte dessa informação for única em todos os setores, ou seja, estão cadastradas no mesmo banco de dados da empresa e não mais em arquivos locais de cada setor. O banco de dados passa a ser o repositório único dos dados, com controle eficiente das operações realizadas sobre os dados armazenados, sem falar na segurança. Portanto, inicialmente, apresentaremos o conceito e um breve histórico sobre o surgimento dos bancos de dados. Mostraremos os diversos tipos de bancos de dados e falaremos um pouco sobre a carreira de um administrador de banco de dados. Depois, discutiremos os conceitos baseados na modelagem física e na lógica dos dados e as técnicas de desenvolvimento de um projeto de banco de dados e suas aplicações. Também apresentaremos a linguagem de programação usada para tratar os dados que estão e serão armazenados nas estruturas de banco de dados. Por fim, falaremos sobre a importância e as técnicas para salvar ou restaurar com segurança os dados armazenados. 11 ADMINISTRAÇÃO DE BANCO DE DADOS Unidade I 1 INTRODUÇÃO A BANCO DE DADOS O desenvolvimento de um sistema de informação envolve a análise e o projeto de dois componentes: os dados e os processos. O projeto de dados é considerado a parte estática do sistema, uma vez que diz respeito a um universo persistente de características que dificilmente sofre modificações após a sua definição. O projeto de processos, por sua vez, é chamado de parte dinâmica, uma vez que as tarefas a serem realizadas sobre os dados podem variar, conforme ocorre a evolução do sistema. Considera-se projeto de um banco de dados a análise, o projeto e a implementação dos dados persistentesde uma aplicação, levando em conta a determinação da sua semântica (abstração dos dados de uma realidade) e, posteriormente, o modelo de dados e o Sistema Gerenciador de Banco de Dados (SGBD) a serem adotados. O projeto de um banco de dados é composto das seguintes etapas: Descrição de requisito Etapa em que são coletadas informações sobre os dados de interesse da aplicação, seu uso, ou seja, as operações de manipulação sobre elas e suas relações. Para a realização dessa etapa, são necessárias tarefas como entrevistas com os futuros usuários do sistema, análise de documentações disponíveis, arquivos, relatórios etc. O resultado normalmente é uma descrição dos requisitos da aplicação mais detalhada e clara possível. Caso nenhuma metodologia de engenharia de software esteja sendo empregada, essa descrição de requisitos é uma descrição informal, na forma de um texto, que contém as informações necessárias para o entendimento da aplicação. Projeto conceitual Pode ser considerada a fase de análise dos dados ou requisitos capturados na etapa anterior. Nessa etapa, é realizado o que chamamos de modelagem conceitual: são analisados os fatos de interesse, isto é, as entidades ou conjunto de ocorrências de dados e seus relacionamentos, juntamente com seus atributos e propriedades ou características, e construída uma notação gráfica para facilitar o entendimento dos dados e suas relações, tanto para os analistas quanto para os futuros usuários. 12 Unidade I Essa etapa resulta em um modelo conceitual, em que a semântica da realidade deve estar correta. A ferramenta mais usada nessa etapa é o Diagrama Entidade-Relacionamento (ER). Projeto lógico Considerada a fase de projeto dos dados. Nessa etapa, o desenvolvimento do banco de dados começa a se voltar para o ambiente de implementação, uma vez que é feita a conversão do modelo conceitual para um modelo de dados de um banco de dados (modelo lógico). Esse modelo de dados pode ser relacional, orientado a objetos ou dimensional, por exemplo. Essa etapa se baseia no uso de regras de mapeamento de um tipo de diagrama de acordo com o modelo de dados definido. Pode ser um diagrama E-R ou um diagrama de classes, entre outros. O resultado é uma estrutura lógica, como um conjunto de tabelas relacionadas. Projeto físico Esta última etapa realiza a adequação do modelo lógico gerado na etapa anterior ao formato de representação de dados do Sistema Gerenciador de Banco de Dados escolhido para a implementação. Para a realização dessa etapa, deve-se conhecer os elementos e o funcionamento do SGBD, para a criação da estrutura lógica definida no modelo. O resultado é a especificação do esquema da aplicação e na implementação das restrições de integridade. 1.1 Histórico Podemos afirmar que a história dos bancos de dados se inicia na década de 1950, no momento em que surge a necessidade de armazenar os dados gerados nos computadores. Nessa época, os recursos disponíveis eram bem inferiores em relação aos existentes hoje em dia. Antigamente, os dados eram armazenados em fitas magnéticas ou em cartões perfurados, e eram lidos e gravados de forma sequencial. Na década de 1960, apareceram os primeiros discos rígidos, e com isso os dados não precisaram mais ser gravados de forma sequencial. Surgiu, então, um dos primeiros modelos, conhecido como Modelo Hierárquico, que organizava dados em uma estrutura em árvore. Os SGBD mais conhecidos, nessa época, foram o IMS e o System 2000. No final da década de 1960 e durante a década de 1970, surgiu o Modelo de Redes, que organizava os dados em uma estrutura formada por várias listas, que definia uma intrincada rede de ligações. Nessa época, os SGBD mais conhecidos foram o IDMS e o Total. O Modelo Relacional é o modelo de dados dominante no mercado ainda hoje e surgiu na década de 1970. Ele foi proposto por Edgar Frank Codd e se tornou um marco em como pensar em banco de dados. Codd desconectou a estrutura lógica do banco de dados do método de armazenamento físico, organizando os dados em um conjunto de relações. Essas relações são denominadas de tabelas. 13 ADMINISTRAÇÃO DE BANCO DE DADOS Em cima da teoria de Codd, foram criados dois protótipos de sistemas relacionais, que depois foram sendo aperfeiçoados com o tempo. O primeiro foi o Ingress, desenvolvido pela UCB, que serviu como base para os sistemas Ingres Corp., Sybase, MS-SQL Server, Britton-Lee, Wang PACE (que utilizava QUEL como linguagem de consulta). O outro, o System-R, foi desenvolvido pela IBM San Jose e serviu de base para o IBM SQL/DS, IBM DB2, Oracle, todos os bancos de dados da HP e o Tandem’s Non-Stop SQL, que utilizava SEQUEL como linguagem de consulta. O termo Sistema de Gerenciamento de Banco de Dados Relacional (SGBDR ou RDBMS em inglês) foi definido durante esse período. Figura 1 – Dr. Peter Chen O doutor Peter Chen propõe o modelo Entidade-Relacionamento (ER) para projetos de banco de dados, dando uma nova e importante percepção dos conceitos de modelos de dados. Assim como as linguagens de alto nível, a modelagem ER possibilita ao projetista concentrar-se apenas na utilização dos dados, sem se preocupar com a estrutura lógica de tabelas. A partir da década de 1980, com o advento da computação pessoal, novos modelos começaram a ser definidos, visando atender às necessidades de aplicações ditas não convencionais, ou seja, aplicações cujas entidades apresentam uma estrutura que não de adéqua bem com a organização relacional de dados. A Linguagem Estruturada de Consultas (SQL) se torna a linguagem padrão mundial para os Sistemas Gerenciadores de Banco de Dados. Nessa década, surge também o modelo cliente-servidor, que muda a forma como os sistemas seriam concebidos. A internet chega aos lares ainda um pouco rudimentar se compararmos com a de hoje, mas funcional o suficiente para que as pessoas se comuniquem. E, desde então, a pesquisa científica na área procura evoluir no sentido de definir e encontrar modelos que representem da melhor maneira possível os dados 14 Unidade I de uma realidade, ou seja, que os organizem de forma mais próxima à maneira como estes são vistos e manipulados pelas pessoas no mundo real. A grande maioria dos bancos de dados conhecidos hoje comercialmente foi criada nessa época. Com a evolução, começaram a surgir conceitos que são utilizados até os dias de hoje, como: • OLTP – Online Transaction Process (Processos de Transação em Tempo Real) • OLAP – Online Analytical Process (Processos Analíticos em Tempo Real) • Open Source – software livre, que são os que mudariam o conceito de posse de um software. Os sistemas open source se baseiam em quatro leis, ou quatro liberdades, que são: – Liberdade nº 0: a liberdade de executar o programa, para qualquer propósito. – Liberdade nº 1: a liberdade de estudar como o programa funciona e adaptá-lo para suas necessidades. Acesso ao código-fonte é um pré-requisito para essa liberdade. – Liberdade nº 2: a liberdade de redistribuir cópias de modo que você possa ajudar ao seu próximo. – Liberdade nº 3: a liberdade de aperfeiçoar o programa e liberar seus aperfeiçoamentos, de modo que toda a comunidade se beneficie. Acesso ao código-fonte é um pré-requisito para essa liberdade. 1.1.1 Modelo hierárquico O modelo hierárquico foi definido com base na observação de que muitas entidades do mundo real são organizadas hierarquicamente. Nesse modelo, os dados são organizados em um conjunto de tipos de registros (entidades), interconectados por meio de ligações (relacionamentos). Uma ligação representa uma relação entre exatamente dois tipos de registros: pai e filho. Assim, tanto o esquema quanto os dados (ocorrências) são visualizados por meio de uma estrutura em árvore, em que um ou vários tipos de registros filhos podem estar vinculados a um tipo de registro pai. Um esquema no modelo hierárquico é chamado de diagrama de estrutura em árvore, conforme podemos ver na Figura 3. O sentido de acesso é sempre unidirecional,ou seja, sempre do pai para o filho (parte sempre da raiz e percorre os níveis inferiores). 15 ADMINISTRAÇÃO DE BANCO DE DADOS Cecília 5657-3 3584-7 2576-5 4876-2 800,00100,68576,80300,00 Lauro Elaine Guarujá 257-1376Mauá 257-6425Taubaté 526-7890 Figura 2 – Diagrama de estrutura em árvore Observação O modelo hierárquico não suporta relacionamentos com cardinalidade N:N em decorrência da organização em árvore, que permite apenas cardinalidade 1:1 e 1:N, ou seja, um tipo de registro filho sempre está relacionado a um único tipo de registro pai. E um pai, por sua vez, pode se relacionar com vários filhos. Os casos de cardinalidade N:N devem, então, ser modelados como uma relação 1:N, por meio da escolha de qual registro será tratado como pai. A indicação é escolher aquele registro que apresentar um maior valor médio de cardinalidade para ser o tipo de registro pai. A redundância de dados é inevitável, caso uma ocorrência de um tipo de registro filho se relacionar com mais de uma ocorrência de um tipo de registro pai. No modelo hierárquico, não há acesso direto a ocorrências de tipos de registros filho. 1.1.2 Modelo em rede Esse modelo é muitas vezes denominado de Modelo DBTG-CODASYL (Data Base Task Group – subgrupo da Conference on Data Systems and Language), uma organização existente na década de 1970 responsável pela padronização de linguagens de programação de sistemas. Similar ao modelo hierárquico, os dados no modelo de redes são organizados em tipos e ligações entre dois tipos de registros. Não existe restrição hierárquica, ou seja, quaisquer dois tipos de registros podem se relacionar. Assim, tanto o esquema quanto as ocorrências de dados são visualizados como um grafo direcionado. Um esquema no modelo de redes é chamado de diagrama de estrutura de dados, de acordo com a Figura 3. Nome_Cli Cidade_Cli Tel_Cli #_CC Saldo ContaCliente Figura 3 – Diagrama de estrutura de dado 16 Unidade I Toda vez que existe um relacionamento com cardinalidade 1:1 ou 1:N, define-se um set, ou seja, o tipo de registro com cardinalidade fixa igual a 1 é chamado de owner e o outro, de member. Uma ocorrência de um set equivale a uma lista encadeada que parte do owner e encadeia todos os members relacionados a ele. Quando existe um relacionamento com cardinalidade M:N, define-se o que se chama de conector: um tipo de registro adicional que estabelece uma ligação entre dois tipos de registro, ou seja, dois sets são definidos, transformando um relacionamento M:N em dois relacionamentos 1:N. Esse conector pode ou não ter atributos. Observação No modelo em rede, cada relacionamento presente gera listas encadeadas e, com isso, as consultas que percorrem por muitos relacionamentos têm seu desempenho (performance) comprometido. 1.2 Definição de banco de dados Um banco de dados pode ser definido como sendo uma coleção de dados operacionais inter-relacionados. Esses dados são armazenados de forma independente dos programas que os utilizam, servindo assim a múltiplas aplicações de uma organização. Além disso, o banco de dados deve ser o repositório único de armazenamento dos dados, pois, com isso, diminuímos a redundância e eliminamos redefinições de dados semelhantes de diversas fontes. O acesso ao banco de dados é realizado por meio de linguagens de alto nível para manipulação de dados. Em outras palavras, um banco de dados é um sistema de manutenção de registros. O seu objetivo principal é manter as informações para, quando solicitadas, serem disponibilizadas ao usuário. Existem diversas plataformas de banco de dados, e a escolha depende do orçamento e de políticas de investimento em TI nas organizações. Houve um tempo em que apenas as plataformas proprietárias ofereciam produtos de qualidade e segurança, e somente empresas com elevado capital tinham condições de adquirir esses produtos. Mas, com o amadurecimento das plataformas open source, as pequenas empresas também podem desenvolver seu projeto de banco de dados de forma tão eficiente e segura quanto as empresas de grande porte. Dentre as empresas fornecedoras de plataformas proprietárias de banco de dados, destacamos as seguintes: • Oracle – <www.oracle.com> • Microsoft – <www.microsoft.com> • Sybase (SAP) – <www.sybase.com> • IBM – <www.ibm.com> 17 ADMINISTRAÇÃO DE BANCO DE DADOS Apesar de oferecerem plataformas pagas, elas costumam disponibilizar uma versão gratuita do banco de dados. Mas essas versões gratuitas não são recomendadas para projetos em sistemas de produção, porque possuem limitações se comparadas com a versão paga. No site dos fornecedores, há as recomendações e restrições para o uso dessas versões. Normalmente, elas são usadas na fase inicial do projeto, para ajudar na escolha da plataforma definitiva que será posteriormente adquirida. Funcionam como um teste drive, em que podemos conhecer o produto sem custos. As soluções chamadas open source mais conhecidas são: • MySQL – <www.mysql.com> • PostgreSQL – <www.postgresql.org> • Cassandra – <cassandra.apache.org> • SQLite – <www.sqlite.org> Saiba mais Para saber mais e se manter atualizado(a) com os novos projetos e eventos sobre software livre, recomendamos os sites: <http://softwarelivre. org> e <http://www.softwarelivre.gov.br>. 1.3 Tipos de bancos de dados Existem diferentes tipos de bancos de dados, os mais conhecidos são: • relacionais; • não relacionais; • orientados a objeto. 1.3.1 Bancos de dados relacionais Bancos relacionais são os bancos derivados das primeiras pesquisas, realizadas em meados da década de 1970. São o tipo de banco mais utilizado no mundo. Os dados são separados em entidades, conforme cada assunto, e gravados como atributos dessas entidades. Permitem que essas entidades se relacionem entre si e proporcionam uma forma rápida e segura de armazenar e recuperar os dados. Os mais conhecidos são: • SQL Server Microsoft – <www.microsoft.com/sqlserver> 18 Unidade I • MySQL – <www.mysql.com> • PostgreSQL – <www.postgresql.org> • Informix – <www-01.ibm.com/software/data/Informix> • DB2 – <www-01.ibm.com/software/data/db2> • Sybase – <www.sybase.com> • Oracle – <www.oracle.com> 1.3.2 Bancos de dados não relacionais Um banco de dados é dito não relacional quando não suporta instruções e operações de junção na linguagem SQL. São muito utilizados em sistemas para a internet, por causa da velocidade e da escalabilidade maior em relação aos bancos relacionais. As primeiras pesquisas surgiram em 1998, mas o termo NoSQL (not only sql) como conhecemos hoje surgiu em 2009. Os mais conhecidos são: • Hadoop – <hadoop.apache.org> • Cassandra – <cassandra.apache.org> • Hypertable – <hypertable.org> • Amazon Simple DB – <aws.amazon.com/pt/simpledb> • CloudData – <www.cloudata.org> Saiba mais Para mais informações sobre os bancos não relacionais, recomendamos o site <http://nosql-database.org>. 1.3.3 Bancos de dados orientados a objeto Dizemos que um banco de dados é orientado a objetos quando cada informação é armazenada na forma de objetos, ou seja, utiliza a estrutura de dados chamada de orientação a objetos. Os mais conhecidos são: • db4objects – <www.db4o.com> • GemStone – <www.gemstone.com> 19 ADMINISTRAÇÃO DE BANCO DE DADOS • Caché – <www.intersystems.com.br> • Zope – <zope.org> 1.4 Sistemas de Gerenciamento de Banco de Dados (SGBD) Um SGBD é um sistema cujo objetivo principal é gerenciar o acesso e a correta manutenção dos dados armazenados em um ou mais bancos de dados. O acesso aos dados é disponibilizado por meio de uma interface que permite a comunicação com a aplicação desenvolvida. Em outras palavras, um SGBD é um software que serve de interface entre o usuário e o banco de dados em si. Software para processar consultas Software para acessar dados armazenados Programas de Aplicação/consultasUsuários SGBD Software SGBD Meta-dados armazenados Base de dados armazenados Figura 4 – Esquema de um SGBD Os SGBD têm interfaces bem parecidas. Todospossuem o que chamamos de Object Explorer no lado esquerdo, onde é exibida a estrutura do banco de dados. Eles utilizam um formato análogo ao do Windows Explorer, permitindo a navegação entre os objetos do banco de dados. Do lado direito, temos uma tela dividida em suas partes na vertical. Normalmente, a parte de cima é onde se digitam os comandos SQL, e a parte de baixo é onde se visualizam os resultados. A seguir, alguns exemplos de interface utilizados pelo administrador de banco de dados para gerenciar os bancos de dados. 20 Unidade I Figura 5 – SQL Server Management Studio Figura 6 – Oracle PL-SQL Developer 21 ADMINISTRAÇÃO DE BANCO DE DADOS Figura 7 – PHPMyAdmin Observação Você pode testar o Sistema Gerenciador do Banco de Dados MySQL, conhecido como phpMyAdmin, pelo link: <http://demo.phpmyadmin.net/master-config>. 1.5 Funções básicas de um SGBD Com base na definição, as seguintes funções básicas são encontradas: 1.5.1 Método de acesso Duas categorias de linguagem, conhecidas como DDL (Data Definition Language) e DML (Data Manipulation Language), devem ser suportadas. A DDL permite a especificação do esquema da organização, ou seja, entidades com seus atributos e tipos de dados associados, os relacionamentos entre essas entidades e os índices de acesso associados aos atributos. Por esquema, entende-se uma organização lógica dos dados de uma realidade, adequados ao modelo de dados do SGBD. A DML permite as operações de manipulação de dados, executadas pelas aplicações inclusão, alteração, exclusão e consulta. As consultas devem ser executadas de maneira eficaz, procurando minimizar o número de acessos ao meio de armazenamento secundário, assim como o volume de dados gerados nos resultados intermediários do processamento da consulta. Para tanto, a antecipação da 22 Unidade I aplicação de filtros e a busca apenas de dados relevantes para os relacionamentos, em uma certa etapa do processamento, são exemplos de estratégias que são consideradas. 1.5.2 Restrições de Integridade (RI) Integridade está associada à ideia de dados corretos, consistentes no banco de dados. As restrições de integridade preocupam-se em manter dados sempre coerentes, verdadeiros com a realidade em questão. Devem garantir os estados possíveis de serem assumidos pelos dados, por exemplo, alterações no valor do salário não podem diminuir o valor existente. A manutenção dos relacionamentos válidos entre os dados devem ser mantidas, isto é, se existe uma regra que diz que uma turma de alunos, por exemplo, não pode estar vinculada a mais de uma disciplina, então deve existir uma restrição de integridade que garanta essa regra de negócio. Para tanto, o SGBD deve disponibilizar uma linguagem para especificação de restrições de integridade, chamada de DCL (Data Constraint Language), e por meio dessa linguagem é possível programar testes e ações. 1.5.3 Segurança Esse controle evita a violação dos dados por agentes e/ou situações não previstas, ou seja, as falhas. Políticas de autorização de acesso devem permitir que apenas agentes autorizados sejam usuários ou aplicações, realizem certas operações sobre certos dados. Para tanto, faz-se necessário manter uma matriz de autorização, que especifica, para cada agente e cada dado, as operações autorizadas. Por dado, entende-se alguma porção do banco de dados, como um ou mais registros, um arquivo completo ou vários, alguns campos de um registro etc. O mecanismo de visões permite especificar a porção do banco de dados que um agente tem direito a acesso. A recuperação de falhas deve possibilitar o retorno do banco de dados a um estado consistente de seus dados após a ocorrência de uma falha. Para tanto, o SGBD deve manter arquivos históricos (log), que cadastram todas as alterações realizadas no banco de dados por transações. Entende-se por transação um conjunto de operações de manipulação de dados que é submetido ao banco de dados, sendo que todas essas operações devem ser efetivadas ou, na ocorrência de uma falha, nada deve ser efetivado, para preservar a consistência dos dados. Os arquivos históricos (log) devem registrar, dentre outras coisas, a identificação das transações, os arquivos manipulados, os registros atualizados, a operação feita e os valores atual e antigo. No caso de falhas de transação ou de sistema, o arquivo histórico (log) deve ser consultado e as ações realizadas por transações inacabadas devem ser desfeitas. Caso todas as modificações da transação estejam registradas, é possível refazê-la. Já para falhas de meio de armazenamento, que tornam inoperantes as unidades de disco onde se encontra o banco de dados, deve-se restaurar o banco de dados a partir do último backup realizado e consultar o log para refazer ou desfazer as transações cadastradas após esse backup. 23 ADMINISTRAÇÃO DE BANCO DE DADOS 1.5.4 Controle de concorrência Esse controle evita conflitos de acesso simultâneo a um dado por mais de uma transação. Se esse controle não existisse, os dados consultados por uma transação poderiam se tornar inválidos caso fossem atualizados por outra transação. Esse controle geralmente é feito pelo uso de estratégias de bloqueio (lock), que garantem que apenas uma transação manipule um dado, durante o espaço de tempo que necessitar, sem que ocorra interferência de outras transações. 1.5.5 Independência dos dados Essa funcionalidade do SGBD é uma decorrência direta das vantagens trazidas pelo uso de um banco de dados. Independência de dados significa transparência de gerenciamento e armazenamento, assim como do esquema global da organização, para as aplicações. O primeiro caso é chamado de independência física, ou seja, a aplicação não se preocupa com detalhes de localização física dos dados ou controles de integridade e segurança. A independência lógica garante, pelo mecanismo de visões, que uma aplicação tenha condições de especificar a porção do banco de dados que deseja ter acesso, não precisando ter conhecimento do esquema global. 1.6 Arquitetura básica de um SGBD Um SGBD geralmente interage com diversas aplicações de uma organização, assim como com os meios de armazenamento de dados. No primeiro caso, a aplicação se vale de comandos DML embutidos no seu código. No segundo caso, geralmente existe uma interface com o sistema operacional do equipamento, para leitura e gravação de dados. Assim, um SGBD lida com diversos níveis de visão de um mesmo dado, de maneira a abstrair detalhes da organização dos dados. 1.6.1 Nível físico Nível mesmo abstrato, em que se sabem detalhes físicos da organização de um dado, ou seja, o esquema físico. É uma estruturação de baixo nível, em que é descrito como os dados estão armazenados em termos de bytes. O módulo de gerenciamento de arquivos lida com esse nível de visão dos dados, uma vez que localiza, lê e grava registros. 1.6.2 Nível conceitual Nível intermediário, que suporta uma descrição de mais alto nível em relação ao nível físico, em que a preocupação está em descrever quais dados são significativos para uma organização, isto é, têm semântica, são relevantes para o dia a dia da organização. Nesse caso, trabalha-se com os dados em nível de entidades e relacionamentos, tais quais estão definidos no esquema. É similar, por analogia, à descrição de um registro em uma linguagem de programação, ou seja, trabalha-se com nomes 24 Unidade I de arquivos e campos e não com sequências de bytes. Os usuários que lidam nesse nível devem ter conhecimento completo de todo o esquema da organização, como o administrador do banco de dados ou o usuário especializado. 1.6.3 Nível de visão Nível mais alto de abstração, sendo particular de cada aplicação que manipula dados do banco de dados. Nesse caso, cada aplicação pode determinar o universo de dados que deseja ter acesso. Esse universo de dados pode ser uma porção do esquema global da organização. Assim sendo, cada aplicação abstrai detalhes irrelevantes, desnecessários paraseu processamento. Os usuários desse nível são os programas de aplicação. 1.7 Como os dados são armazenados Os dados são armazenados em áreas chamadas páginas. O tamanho dessas páginas pode variar de banco para banco. Nelas, são armazenados os dados e os metadados (são os dados dos dados). Figura 8 – Exemplo de uma página de dados Os elementos de uma página são: a) PAGE HEADER DATA: armazena as informações, como a última atualização dos dados, a posição do próximo dado a ser gravado etc.; b) ITEM POINTER DATA: grava as informações sobre os índices dos dados; c) ITENS: são os dados e metadados, propriamente ditos. 25 ADMINISTRAÇÃO DE BANCO DE DADOS 1.7.1 Diferença entre dado e informação Para simplificar, podemos dizer que tudo o que é armazenado pode ser considerado como dado. Por exemplo: um nome de uma pessoa, um nome de um produto, uma data, um local, um endereço, um número de telefone etc. A informação surge quando agregamos dois ou mais dados e, a partir deles, inferimos uma conclusão. Por exemplo, vamos considerar os seguintes dados registrados: • Estado = São Paulo • Data = 28 de agosto de 1978 • Nome = Luiz Fernando Nesse caso, temos os seguintes dados, que isoladamente não têm nenhum significado, ou seja, temos uma cidade ou um Estado, temos uma data e um nome de uma pessoa. Mas, dependendo do contexto em que esses dados aparecem, podemos chegar a algumas conclusões, como: a pessoa é paulista, se essa data se refere à data de nascimento, podemos afirmar que ela tem 32 anos e é do signo de virgem. 1.7.2 Dicionário de Dados (DD) É o catálogo responsável pela manutenção dos metadados que dizem respeito à estrutura do esquema, à integridade, às configurações do SGBD para efeitos de controle, segurança e desempenho (performance), às estimativas de acesso e estimativas sobre os dados. É constantemente consultado durante a realização de várias das suas tarefas, como processamento de consultas, pré-compilação de comandos DML, verificação de integridade em operações de atualização etc. O administrador do banco de dados tem acesso às suas informações por meio de ferramentas especiais. Lembrete Estrutura de esquema se refere às entidades (com atributos e tipos de dados associados) e relacionamentos. 2 AGENTES DE INTERAÇÃO COM O SGBD Um SGBD deve se comunicar com vários agentes (usuários ou programas), com o objetivo de atender às necessidades de dados de diversas aplicações, permitir o desenvolvimento de aplicações que utilizam um banco de dados, assim como possibilitar que aspectos de performance possam ser otimizados, conforme a demanda de acesso a dados pelas aplicações. 26 Unidade I Os sistemas gerenciadores de banco de dados são projetos com muitos recursos visuais e aplicações internas que servem como verdadeiros assistentes. Ainda assim, eles não se autoadministram, ou seja, não eliminam a necessidade dos profissionais especializados, apenas agilizam tarefas trabalhosas, como escrever scripts. 2.1 DBA – Data Base Administrator Especialista no SGBD adotado pela organização, o DBA (Administrador de Banco de Dados) é o profissional que controla diversos aspectos funcionais, como definição e modificação do esquema, das autorizações de acesso e das regras de integridade. Além disso, tem o controle dos procedimentos de segurança, execução de backups e recuperação de falhas de meio de armazenamento, assim como monitoração de performance de acesso de dados e tomada de decisões para melhorias no SGBD. Lembrete: o backup parece simples, mas, na verdade, precisa ser bem planejado. Surge a questão: fazer o backup completo, que armazena todos os registros do banco de dados, várias vezes ao dia, prejudicando a performance do sistema, ou fazer backups incrementais, que só armazenam a lista dos registros que foram alterados e que complicam uma eventual restauração? 2.1.1 AD – Administrador de dados É o profissional responsável pelos dados armazenados, especializado em Projeto de Banco de Dados. É de sua responsabilidade o desenvolvimento de relatórios gerenciais e a distribuição da informação dentro da empresa em todos os níveis. Interage com os usuários da aplicação a ser desenvolvida, com o objetivo de definir os requisitos de dados e especificar o esquema do banco de dados. Deve ser um especialista em desenvolvimento de sistemas. 2.1.2 Desenvolvedor de banco de dados É o profissional responsável pelo desenvolvimento de programas de aplicação dentro do banco de dados. Esses programas interagem com o SGBD por meio de comandos de manipulação de dados (DML) embutidos no seu código. São desenvolvidos usando a linguagem padrão do banco de dados, como Oracle PL-SQL, Microsoft T-SQL, Transact SQL da Sybase, entre outros, e podem ser rotinas que são executadas sob outras aplicações ou mesmo em conjunto com elas. 2.1.3 Programador É o profissional que desenvolve aplicações utilizando ferramentas compatíveis com o SGBD. Essas ferramentas podem ser compiladores de linguagens de programação tradicionais que permitem a integração de comandos da linguagem da DML no seu código, programas que usam alguma linguagem de programação (C#, PHP, VB.NET, DELPHI, JAVA etc.), programação de sistemas e aplicativos de manipulação de dados, geradores de interfaces gráficas, geradores de relatórios etc. 27 ADMINISTRAÇÃO DE BANCO DE DADOS 2.2 Certificações Dentro do mercado de tecnologia como um todo, além do tempo de atuação na área e a experiência, outra forma de se comprovar o domínio de um profissional sobre uma determinada tecnologia é por meio de certificações. Essas certificações são criadas e mantidas pelos fornecedores das soluções de tecnologia e as provas aplicadas e gerenciadas por parceiros globais. A seguir, veremos as certificações mais importantes dentro da área de banco de dados. 2.2.1 Certificação Microsoft • MCTS – Microsoft Certified Technology Specialist (primeiro nível) • MCITP – Microsoft Certified IT Professional (segundo nível) MCM – Microsoft Certified Master (top) • Divide-se em três caminhos: – Database Administrator – Database Developer – BI Developer Saiba mais Para obter informações sobre as carreiras e certificações da Microsoft, recomendamos consultar o site <www.microsoft.com/learning>. 2.2.2 Certificação Oracle • Oracle Certified Associate (primeiro nível) • Oracle Certified Professional (segundo nível) • Oracle Certified Master (terceiro nível) – Duas provas por nível – Necessidade de cursos presenciais 28 Unidade I Saiba mais Para informações sobre as certificações nos produtos da Oracle, recomendamos consultar o site <education.oracle.com>. Observação Apesar de as provas serem mantidas pelas empresas fornecedoras da tecnologia, existe uma agência externa que as aplica. Trata-se da Prometric, no site <www.prometric.com>, você encontra informações sobre certificações, por exemplo, o preço de cada prova. Resumo Nesta unidade, você aprendeu que um banco de dados é um conjunto de registros dispostos em uma estrutura regular, possibilitando sua reorganização e a produção de informação. O surgimento da tecnologia de banco de dados ocorreu no momento em que os especialistas no desenvolvimento de sistemas computacionais perceberam que, para a informatização de grandes organizações, várias questões relacionadas com o gerenciamento de dados necessitavam ser resolvidas de forma mais eficiente. Problemas como redundância, manutenção dos dados, atualizações, correções, falta de padronização, segurança, entre outros, com o uso dos bancos de dados são resolvidos. Os dados passam a ser armazenados em um único local, ao invés de serem arquivados em diversos formatos e aplicações locais, sem nenhuma gerência e segurança. Todo o cuidado com os dados, no que diz respeito ao acesso, à integridade, à segurança, concorrência, autorização de uso etc., é incumbência de um software de gerenciamento de banco de dados, totalmente projetado para isso. Além disso, você pode ter umaideia sobre a carreira profissional nessa área e como obter certificação nas diferentes plataformas. Na área de Tecnologia da Informação, existe um profissional que só é lembrado nos momentos críticos: o DBA. Sua função maior é assegurar que o banco de dados esteja funcionando e acessível todo o tempo que o 29 ADMINISTRAÇÃO DE BANCO DE DADOS sistema necessitar, com rapidez e confiabilidade. Ou seja, quando o sistema está “redondo”, ninguém se lembra de que existe um DBA que trabalha arduamente para isso. Porém, se o banco de dados ficar off-line por alguns minutos, você receberá uma dezena de telefonemas de reclamações. Dentre as funções administrativas que devem ser executadas em um banco de dados, estão backup periódico, verificação de consistência e otimização (tuning). O profissional que atua como DBA precisa ter grande conhecimento da modelagem dos dados, para saber em que implicam as alterações. Esta é uma das razões pelas quais o perfil do DBA fica cada vez mais amplo. Sua participação na fase de modelagem de dados é muito importante, pois seus conhecimentos de performance e otimização em muito contribuem para a definição de dados. Outro conhecimento que pode agregar valor a um DBA é o de processos administrativos e de negócios, para que ele entenda o “porquê” do banco de dados que administra e qual a importância de cada tabela, o que pode fazer diferença em uma otimização. Exercícios Questão 1. Ao se pesquisar sobre Bancos de Dados encontram-se diversas definições ou diversos conceitos que de alguma forma afirmam que os BDs são coleções de dados que se relacionam de forma a criar um sentido dentro de um determinado contexto (empresarial, científico e social). São considerados de vital importância para empresas, já que por meio dos Sistemas de Informação todos os dados fundamentais são armazenados, relacionados e acessados em todos os níveis da corporação. Com os Banco de Dados e os SIs os processos são executados, controlados e as tomadas de decisão se dão a partir dos resultados das informações recuperadas e organizadas nos BDs da empresa. Desde a década de 1960, eles se tornaram a principal peça dos sistemas de informação. Os Bancos de Dados são gerenciados ou operados pelos Sistemas Gerenciadores de Bancos de Dados (SGBD), que surgiram na década de 1970 e vêm evoluindo tanto na sua estrutura quanto no seu poderio de armazenamento. Os Bancos de Dados são utilizados em todos os tipos de aplicação, mas na atualidade suas principais aplicações se dão no controle de operações empresariais e no gerenciamento de informações científicas, tais como os Bancos de Dados Geográficos e os Banco de Dados Sociais. Considerando os conceitos sobre Banco de Dados, examine as afirmações a seguir e indique a alternativa incorreta: A) O projeto de dados é considerado a parte estática de um sistema de informação e as funcionalidades são consideradas como a parte dinâmica do SI. B) Dentro de um ciclo de desenvolvimento de um SI, logo no início do ciclo, são determinados os requisitos do sistema ou aplicação; nessa etapa são coletadas informações sobre os dados de interesse da aplicação, fundamentais para um bom projeto de Banco de Dados. 30 Unidade I C) O Modelo Relacional proposto por Edgar Frank Codd se tornou um marco em como pensar em banco de dados, já que a estrutura lógica do banco de dados organiza os dados muito próximos do armazenamento físico dos discos magnéticos, trazendo grandes vantagens sobre os outros modelos com relação ao espaço de armazenamento e ao tempo de acesso. D) Pode-se afirmar que na atualidade não seria possível construir aplicações multiusuárias sem o uso de Banco de Dados e dos Sistemas Gerenciadores de Bancos de Dados (SGBDs). E) Como os Bancos de Dados, na atualidade, são utilizados para armazenar todos os tipos de informações, que vão de pessoas até empresariais, a segurança do BD se tornou crítica e exige do gerenciador do banco de dados mecanismos que garantam a integridade, a disponibilidade e a confidencialidade das informações armazenadas. Resposta correta: alternativa C. Análise das alternativas A modelagem de banco de dados relacional de Codd tornou-se um marco na tecnologia de BD devido à desconexão da estrutura lógica do banco de dados com os métodos de armazenamento físico vigente na década de 1970. Toda a modelagem do Banco de Dados está associada à teoria matemática das relações ou conjuntos, o que traz a organização dos dados de uma aplicação para mais próximo do pensamento humano. Os dados passam a ser vistos como conjuntos matemáticos que podem ser manipulados pela teoria das relações. A) Alternativa correta. Justificativa: os dados em um sistema de informação representam as propriedades de uma determinada entidade que devem ser persistidas durante o tempo e garantidas quanto à suas integridades. Devido a essa propriedade eles são considerados como a parte estática do sistema de informação. Os dados de um cliente de uma empresa em um sistema de compras tem que ser armazenados e garantidos ao longo de todas as suas operações realizadas nos SIs da empresa. Os dados ou características básicas desse cliente (nome, CPF, telefone, endereço, RG etc.) raramente são alteradas, mas os dados de suas operações comerciais são constantemente modificadas. B) Alternativa correta. Justificativa: os requisitos de um sistema determinam o escopo a ser desenvolvido, isto é, o conjunto de necessidades dos clientes ou usuários que utilizarão o sistema em suas tarefas do dia-a-dia. Por meio de reuniões, entrevistas, documentos existentes dos processos organizacionais são determinadas as funcionalidades, a usabilidade e os dados necessários para a execução das tarefas operacionais envolvidas no sistema. C) Alternativa incorreta. 31 ADMINISTRAÇÃO DE BANCO DE DADOS Justificativa: o Modelo Relacional foi proposto por Edgar Frank Codd e se tornou um marco em como pensar em banco de dados porque Codd desconectou a estrutura lógica do banco de dados do método de armazenamento físico, organizando os dados em um conjunto de relações denominadas de tabelas. D) Alternativa correta. Justificativa: aplicações multiusuárias são complexas, já que diversas operações podem ser realizadas e que manipulam coleções de dados operacionais inter-relacionados. Esses dados devem ser corretamente armazenados, relacionados e garantidos quanto às suas integridades, exigindo um grande esforço de programação dos dispositivos de armazenamento. Dessa forma, o uso de estruturas de Banco de Dados e dos monitores de BDs (SGBDs) é fundamental no sucesso dos sistemas de informação. E) Alternativa correta. Justificativa: existem diversos mecanismos dos gerenciadores de banco de dados para suporte às aplicações na guarda e manuseio dos dados existentes nos Banco de Dados. Como diversas aplicações acessam e manipulam os mesmos dados durante suas tarefas, se torna fundamental que o SGBSs garantam a integridade, a disponibilidade e a confidencialidade dos dados contidos em seus arquivos. Questão 2. Como todo sistema de computador, um sistema de gerenciamento de banco de dados (SGBD) é um conjunto de componentes de software que permitem armazenar, modificar e extrair informações de um Banco de Dados. Atualmente existem muitos tipos diferentes de SGBDs, desde os considerados pequenos sistemas que funcionam em computadores pessoais, celulares, tablets até sistemas extremamente grandes que residem em grandes computadores das grandes organizações ou em servidores (plataforma baixa) ou nas máquinas denominadas de mainframes (ou plataforma alta). Para a execução de todas as atividades envolvidas em um SGBD existem basicamente três componentes: a) a linguagem de definição de dados que especifica os conteúdos, a estrutura da base de dados e define os elementos de dados; b) a linguagem de manipulação de dados para obter e alterar os dados no banco de dados; c) um dicionário de dados onde estão as definições de elementosde dados e respectivas características que descreve os dados, quem os acede etc. Apesar de todos esses recursos, os SGBDs não se autoadministram e exigem profissionais especializados para sua administração e controle. Considerando os conceitos sobre os SGBDs, examine as afirmações a seguir e indique a alternativa incorreta: A) Os SGBDs modernos são projetados e construídos com muitos recursos internos que praticamente eliminam a necessidade de uma organização possuir uma estrutura de pessoas especializadas para sua organização e administração. B) O backup dos bancos de dados de uma empresa precisa ser bem planejado já que diversos aspectos operacionais devem ser considerados nesta atividade: Quando efetuar um backup total ou como se fazer backups parciais sem perder a integridade dos dados? Que aplicações podem, ou não ser executadas nos momentos de backups dos bancos de dados? Outras considerações também podem ser necessárias. 32 Unidade I C) O mercado preocupa-se muito com os profissionais que manipulam os Sistemas de Banco de Dados nas empresas e as certificações profissionais são uma forma de comprovação do conhecimento de pessoas em uma determinada tecnologia. Isso acontece com os profissionais denominados de DBAs. D) Diversos autores afirmam que a utilização de um SGBD traz enormes vantagens que podem ser resumidas em: controle da redundância, restrição a acessos não autorizados, permitir um armazenamento persistente para os objetos dos programas e estruturas de dados, permitir a inferência em ações seguindo regras, permitir múltiplas interfaces para os utilizadores, permite representar relacionamentos complexos entre os dados, reforçar as restrições de integridade e a recuperação de dados em caso de pane. E) Um modelo de banco de dados para ser considerado relacional deve seguir as denominadas “Doze regras” de Codd, que foram criadas para impedir que os fornecedores de banco de dados não utilizassem somente o nome relacional, mas que seus produtos implementassem a teoria das relações matemáticas do modelo. Resolução desta questão na plataforma. 33 ADMINISTRAÇÃO DE BANCO DE DADOS Unidade II 3 DIAGRAMA ENTIDADE-RELACIONAMENTO (E-R) O diagrama E-R é uma ferramenta para modelagem conceitual de banco de dados amplamente utilizada no projeto de banco de dados, sendo considerada praticamente um padrão para modelagem conceitual. É aconselhado como padrão por ser de fácil compreensão e apresenta poucos conceitos. Um diagrama E-R é uma representação gráfica, na forma de um diagrama, no qual são utilizados apenas três conceitos: entidades, relacionamentos e atributos, que serão descritos a seguir. 3.1 Entidades do DER Representam categorias de fatos do mundo real, sejam eles concretos ou abstratos, como empregados, departamentos, despesas etc. São representados por retângulos nomeados por substantivos, que indicam um conjunto de ocorrências da entidade. Sugerem-se nomes no plural. 3.2 Relacionamentos do DER Representam associações entre entidades, sendo que, em cada associação, são indicadas as cardinalidades, ou seja, o número de ocorrências de uma entidade que se relaciona com uma ocorrência de outra entidade. Por exemplo, como representado na Figura 9. Empregados Departamentos (1, N) (1, 1) Figura 9 – cardinalidade de um relacionamento • Indica que 1 empregado trabalha no mínimo em 1 departamento e no máximo em 1 departamento. • Indica que em 1 departamento trabalha no mínimo 1 empregado e no máximo N empregados. 3.2.1 Relacionamentos binários Representam uma associação entre duas entidades, representada por um losango nomeado com linhas para as duas entidades envolvidas. Um relacionamento indica uma função cumprida pelas duas entidades envolvidas. Sugere-se que esse nome seja um substantivo no plural, uma vez que o uso de verbos limita mais a criatividade para a determinação de nomes. 34 Unidade II Quando se define um relacionamento, deve-se definir também a cardinalidade dessa associação, por meio de dois pares de valores, no qual o valor da esquerda indica o número mínimo esperado de ocorrências de uma entidade que se relaciona com a entidade questionada, e o valor da direita o número máximo. Esses valores de máximo e mínimo podem ser constantes, quando se souber exatamente esses valores. 3.2.2 Relacionamentos reflexivos É um tipo de associação que envolve ocorrências de uma mesma entidade (parte e chega da mesma entidade). Nesse caso, recomenda-se a indicação explícita do papel assumido por cada lado da associação, para tornar mais clara a interpretação do relacionamento. Por exemplo, em uma relação de chefia entre um empregado e outro, é interessante a indicação dos papéis de superior e subordinado. Alguns controles de integridade, não expressos no diagrama E-R, podem ser necessários, como a proibição de um empregado ser chefiado por ele mesmo (valores iguais no relacionamento) ou uma hierarquia de gerência com ciclos. É interessante que esses controles, se desejados, sejam explicitamente comentados como um anexo ao diagrama E-R. 3.2.3 Relacionamentos ternários Relacionam três ocorrências de entidades. Só é interessante utilizar esse tipo de relacionamento quando realmente é obrigatório associar, ao mesmo tempo, um par de entidades com uma terceira. Por exemplo, um empregado que trabalha num projeto necessariamente realiza alguma tarefa nesse trabalho. Esses três fatos estão sempre relacionados. Quando não ocorre essa obrigatoriedade, recomenda-se o uso da agregação. A determinação da cardinalidade de um relacionamento ternário é feita questionando um par em relação à terceira entidade envolvida. Por exemplo, um empregado trabalhando em um projeto temos o par empregado-projeto que realiza de 1 a N tarefas. Logo, a cardinalidade (1,N) é colocada ao lado da entidade TAREFAS. Outros relacionamentos acima de ternários podem ocorrer em um diagrama E-R, porém são raros e deve-se avaliar cuidadosamente se serão necessários. A determinação da cardinalidade é semelhante ao comentado para ternários, ou seja, questiona-se um conjunto de entidades associadas em relação àquela que se deseja determinar a cardinalidade. 3.3 Atributos do DER Representam uma propriedade de uma entidade ou de um relacionamento, como salário de um empregado ou o tempo que um empregado estará alocado em um projeto. São representados por círculos nomeados, ligados por linhas a uma entidade ou relacionamento. Atributos identificadores de entidades, ou que sejam necessários na identificação de relacionamentos, são indicados por um círculo preenchido ou pelo nome sublinhado. 35 ADMINISTRAÇÃO DE BANCO DE DADOS 3.3.1 Atributos opcionais Atributos com propriedades que podem assumir NULL. São indicados por um traço que corta a linha que liga o atributo à entidade ou relacionamento. 3.3.2 Atributos compostos Representam uma abstração de outros atributos, como um endereço que abstrai (agrega) outros dados como rua, CEP, cidade etc. É representado por uma eclipse, com ligações (linhas) para os atributos componentes (convencionais). 3.3.3 Atributos multivalorados Atributos com propriedades que podem assumir mais de um valor, como os números de telefone de um departamento. São representados por uma cardinalidade mínima e máxima que é colocada ao lado do nome do atributo, indicando as quantidades de valores mínimos e máximos permitidos. 3.4 Entidades fracas Entidades cujas existências dependem da existência de outra entidade, dita fork. É representada por um retângulo duplo, podendo, opcionalmente, ser indicada uma seta que parte dela e chega à sua entidade forte, para tornar mais clara a dependência. A cardinalidade de uma ocorrência de uma entidade fraca com a forte é sempre (1,1), indicando que ela sempre depende de uma ocorrência da entidade forte. 3.5 Especialização Salienta que algumas ocorrências de uma entidade assumem papéis específicos, ou seja, são especializações, como o fato de um empregado ser um motorista ousecretário, inclusive com a possibilidade de terem atributos específicos. São classificadas em dois tipos, descritos a seguir. 3.5.1 Especialização com ou sem exclusão mútua Indica se uma ocorrência de uma entidade genérica pode assumir apenas uma ou várias especializações, respectivamente. No primeiro caso, representa-se por meio de um único triângulo que recebe uma linha da entidade genérica, sendo que da sua base partem linhas para várias entidades especializadas, dando a ideia de uma escolha que deve ser feita. No segundo caso, desenha-se um triângulo para cada ligação entre a entidade genérica e uma especialização. 36 Unidade II 3.5.2 Especialização com ou sem obrigatoriedade Indica se uma especialização é obrigatória ou não. Em caso negativo, diz-se que a especialização é parcial. A parcialidade é indicada pelo uso da letra P colocada ao lado do triângulo. 3.6 Agregação Um agregado representa uma porção de um diagrama E-R que envolve um relacionamento entre várias entidades. É utilizado para indicar situações em que entidades relacionadas podem ainda se relacionar com outras entidades. Essas entidades relacionadas são consideradas uma entidade de alto nível, chamada agregado, e são recomendadas para representar situações em que existe parcialidade na relação entre três ou mais ocorrências de entidade. Por exemplo, uma pessoa que tem a posse de um automóvel e que pode ou não ter contratado seguro para o carro. Um agregado possível é representado pelo conjunto de pessoas que tem automóvel com seguro. Uma agregação é representada por um polígono fechado que envolve as entidades e o relacionamento entre elas, determinando a entidade agregada. Essa entidade agregada é considerada, então, uma entidade normal do diagrama E-R, que pode se relacionar com outras entidades. 4 MODELO ENTIDADE RELACIONAMENTO (MER) É um modelo abstrato desenvolvido pelo Prof. Peter Chen, a fim de representar as estruturas de dados de forma mais natural e mais próxima do mundo real dos negócios. Seus aspectos estruturais formalizam matematicamente a maneira como os dados estão organizados no modelo relacional. A seguir, serão descritos os conceitos básicos de um modelo relacional. É composto por entidades, que são caracterizadas por atributos e que se relacionam entre si. Dentro do MER, utilizamos algumas formas geométricas para a representação das entidades, seus atributos e seus relacionamentos, conforme apresentados a seguir. Pessoa Retângulos representam as entidades TEL Elipses representam os atributos de uma entidade 37 ADMINISTRAÇÃO DE BANCO DE DADOS Possui Losangos representam as relações entre as entidades Figura 10 4.1 Domínio O domínio define o universo de valores permitidos para certo item de dado. Por exemplo, o domínio para o item de dado salário pode ser o conjunto dos números reais; o domínio do item de dado idade pode ser o conjunto dos números inteiros no intervalo [0,150]; o domínio do item sexo pode ser o conjunto limitado (masculino, feminino). Um domínio compreende um tipo de dado predefinido mais um conjunto de restrições de integridade que limitam os valores permitidos para esse tipo de dado. Domínios podem ser simples, ou seja, possuem um único valor, como um inteiro ou compostos, quando possuem vários valores, como uma data. Os valores dos itens de dados que apresentam domínios compostos são abstraídos e tratados como um único valor. Uma data poderia ser manipulada como uma string, por exemplo. Observação A noção de domínio de um item de dados assemelha-se à noção de domínio de um conjunto na matemática. Lembrete MER é o modelo teórico inventado para transportar estruturas existentes no mundo real para o banco de dados. DER é a representação gráfica do MER. 4.2 Atributo do MER Um atributo é um nome dado a um domínio utilizado para representar um item de dado. Matematicamente falando, um atributo é o nome de um conjunto. 38 Unidade II Em uma tabela, representa uma coluna. Um atributo pode apresentar um valor condizente com o domínio associado a ele ou NULL, que indica a ausência de valor ou valor desconhecido. Um atributo pode conter apenas um valor atômico, ou seja, um valor indivisível. 4.3 Tupla É um conjunto de pares (atributo – valor) que define uma linha da tabela, ou seja, uma ocorrência de uma entidade ou relacionamento. Se imaginarmos em uma tabela como sendo um conjunto, uma tupla seria um elemento desse conjunto. 4.4 Relação Pode ser definida como um subconjunto do produto cartesiano dos domínios (d1, d2, d3,...., dn) que correspondem aos atributos (a1, a2, a3,..,an) de uma tabela. O produto cartesiano gera (d1 x d2 x d3 x....x dn) tuplas e a relação mantém apenas aquelas tuplas que contêm valores de atributos relacionados que estão presentes na realidade. Uma relação, portanto, é um subconjunto. É vista como uma tabela no modelo relacional, composta por um cabeçalho e um corpo. O cabeçalho é formado por um conjunto fixo de atributos que possuem nomes distintos, para evitar ambiguidade na localização de um item de dado. O grau de uma relação significa o número de atributos da mesma. O corpo de uma relação é formado por um número variável de tuplas, em que a ordem das mesmas não é significativa, ou seja, dada uma relação R1 com três tuplas, nesta ordem: t1, t2 e t3, e uma relação R2 com três tuplas nesta ordem: t2, t3 e t1, teremos R1 igual a R2. A cardinalidade de uma relação significa o número de tuplas da relação. O conceito de relação é ligeiramente diferente do conceito de tabela. Relação equivale à noção de conjunto, ou seja, um agrupamento de elementos sem repetição. Tabela equivale à noção de coleção, ou seja, um agrupamento de elementos em que é permitida a repetição. Os Sistemas Gerenciadores de Banco de Dados, na prática, lidam com o conceito de tabela. 4.5 Chave O conceito de chave é fundamental no modelo para garantir a identificação de tuplas e estabelecer relacionamentos entre relações. 4.5.1 Chave primária (PK) – primary key Atributo ou grupo de atributos que permite a identificação única de uma tupla em uma relação, ou seja, o valor da PK (primary key) de uma tupla nunca se repetirá nas demais tuplas da mesma relação. 39 ADMINISTRAÇÃO DE BANCO DE DADOS Uma PK é escolhida dentre várias chaves candidatas, que podem estar presentes na relação. As chaves candidatas não selecionadas são ditas chaves alternativas. A cada chave alternativa deve ser associada uma Relação de Integridade (RI) que garanta que seus valores sejam únicos. Observação Quando a chave primária tem um atributo, dizemos que é uma chave primária simples, e, quando ela tem dois ou mais atributos, dizemos que é uma chave primária composta. Utilizamos uma chave primária simples para armazenar o ESTADO (UF) porque eles são únicos. UF PK SIGLA UF NOME_UF Figura 11 – Exemplo de chave primária simples Utilizamos uma chave composta para CIDADE porque posso ter mais de uma cidade com o mesmo nome, por isso temos que associar o nome da cidade com o Estado ao qual ela pertence, para poder garantir a unicidade da tupla. Cidade PK UFCIDADE_NOME Figura 12 – Exemplo de chave primária composta 4.5.2 Chave estrangeira (FK) – foreign key Atributo ou grupo de atributos de uma relação R1 que estabelece um relacionamento de equivalência, por valor, com uma PK (primary key) de uma relação R2. O domínio da FK (foreign key) de R1 deve ser compatível com o domínio da PK (primary key) de R2. Nada impede que R1 e R2 sejam a mesma relação. 4.5.3 Chave artificial ou delegada (SK) – surrogate key Serve para substituir a chave original da tabela. Normalmente composta de números sequenciais, é muito utilizada em Modelos Multidimensionais, em que o processo de dimensionamento associa a chave natural do modelo relacional, que vão ser apenas atributos da dimensão, e para garantir a unicidade é criada a chave delegada (surrogate key). 40 Unidade II Saiba mais Para aprofundar os estudos sobre o ModeloMultidimensional, recomendamos a leitura dos livros de Ralph Kimball. E não deixe de visitar frequentemente este site: <www.kimballgroup.com>, se quiser entrar na área de Inteligência Corporativa e aprender mais sobre a tecnologia de Datawarehouse. 4.6 Restrições de integridades básicas Os aspectos de integridade do modelo relacional estão associados aos conceitos de chave primária e chave estrangeira. Garantir a integridade de um esquema relacional significa assegurar o acesso individualizado a todas as tuplas de uma relação, assim como relacionamentos válidos e condizentes com a realidade. O modelo relacional é regido por duas regras de integridade básicas: a de integridade de entidade e a de entidade referencial, descritas a seguir. 4.6.1 Regra de integridade de entidade Diz respeito à chave primária de uma relação. Ela diz que nenhum atributo que faz parte da chave primária pode ter NULL em alguma tupla. A manutenção dessa regra garante que toda tupla possa ser identificada unicamente. 4.6.2 Regra de integridade referencial Diz respeito às chaves estrangeiras de uma relação. Ela diz que o valor de um atributo que faz parte de uma chave estrangeira pode assumir NULL desde que o mesmo não faça parte da chave primária. Ainda, esse mesmo atributo pode assumir um valor qualquer, condizente com o seu domínio, desde que esse mesmo valor exista na chave primária de uma tupla da relação referida por ele. Com isso, nunca existirão relacionamentos incorretos entre dados. Para que essas regras sejam sempre respeitadas, o SGBD deve implementar rotinas de verificações automáticas. Isso implica testes e ações a serem realizados pelo SGBD toda vez que uma operação de atualização for submetida ao mesmo. No caso da regra de integridade de entidade, o seguinte algoritmo deve ser executado toda vez que for incluída uma nova tupla em uma relação ou for alterado um valor de um atributo de uma tupla que faz parte da chave primária de uma relação: SE a chave primária da tupla for NULL 41 ADMINISTRAÇÃO DE BANCO DE DADOS OU existir tupla com o mesmo valor da chave primária ENTÃO impedir a efetivação da operação SENÃO efetivar a operação Já para o caso da regra de integridade referencial, três alternativas de ações são geralmente tomadas pelo SGBD quando se percebe que uma violação irá ocorrer: • Impedimento a operação não é efetivada. • Cascata para o caso de exclusões de tuplas ou alterações de chave primária na relação referida, realizar a mesma operação em todas as tuplas que se referem a ela. • Anulação para o caso de exclusões de tuplas ou alterações de chave primária na relação referida, altera-se para NULL o(s) atributo(s) que compõe(m) a chave estrangeira que estabelece o relacionamento com essa relação. Uma variante dessa alternativa é anular apenas a chave estrangeira de uma única tupla. A aplicação dessas ações depende da operação de atualização submetida e da relação que sofre a operação (a referida ou a que possui uma referência). Se uma operação de atualização é submetida à relação que possui a referência (possui a chave estrangeira), o seguinte algoritmo deve ser executado toda vez que for incluída uma nova tupla ou for alterado o valor de um atributo que faz parte da chave estrangeira: SE a chave estrangeira da tupla for NULL ENTÃO SE a chave estrangeira fizer parte da chave primária ENTÃO impedir a efetivação da operação SENÃO efetivar a operação SENÃO SE não existir uma tupla na relação referida com valor de chave primária igual ao valor da chave estrangeira desta tupla ENTÃO SE a chave estrangeira fizer parte da chave primária ENTÃO aplicar impedimento SENÃO aplicar impedimento OU aplicar anulação SENÃO efetivar a operação 42 Unidade II Se uma operação de atualização é submetida à relação referida (possui a chave primária), o seguinte algoritmo deve ser executado toda vez que for excluída uma tupla ou for alterado o valor de um atributo que faz parte da chave primária: SE a chave estrangeira fizer parte da chave primária ENTÃO aplicar impedimento OU aplicar cascata SENÃO aplicar impedimento OU aplicar cascata OU aplicar anulação Lembrete Entidades, do original entity type, servem para representar objetos, coisas, pessoas que existem na realidade. No MER, os relacionamentos são identificados com um verbo, conforme pode ser observado na figura 13. Uma pessoa possui um automóvel. PossuiPessoa Automóvel 1 1 1 1 Um automóvel pertence a uma pessoa. Figura 13 – Exemplo de um relacionamento 1:1 Dentro de um modelo relacional, temos que ver como as entidades se relacionam entre si, ou seja, ver como a entidade Pessoa se relaciona com a entidade Automóvel e como a entidade Automóvel se relaciona com a entidade Pessoa, e podemos concluir que: 43 ADMINISTRAÇÃO DE BANCO DE DADOS Uma pessoa possui vários automóveis. PossuiPessoa Automóvel 1 N 1 1 Vários automóveis pertencem a uma pessoa. Figura 14 – Exemplo de relacionamento 1:N Aqui fazemos os mesmos passos para a obtenção da cardinalidade, verificamos o relacionamento de Pessoa com Automóvel e de Automóvel com Pessoa. • 1 Pessoa possui N (vários) automóveis. • 1 Automóvel que pertence a 1 Pessoa. Um aluno possui vários professores. PossuiAluno Professor 1 N N 1 Um professor possui vários alunos. Figura 15 – Exemplo de relacionamento N:N No exemplo da Figura 15, temos a seguinte definição: 1 aluno possui N (vários) professores e 1 professor possui N (vários) alunos. Para obter a cardinalidade final, devemos usar a multiplicação. Em cada um dos lados, pegamos os dois números, que estão em destaque ao lado da entidade. Nesse caso, em aluno temos 1 e N, 1 x N = N (qualquer número multiplicado por 1 é ele mesmo). Já em professor, temos N e 1. N x 1 = N. Assim, obtemos um relacionamento de N para N. 4.7 Tipos de relacionamento Quando fazemos o relacionamento entre duas ou mais tabelas, esse relacionamento pode ser classificado de duas formas: 44 Unidade II Identificado: também conhecido como relacionamento forte. Identifica que a chave estrangeira da tabela “pai” faz parte da chave da tabela “filha”. Não identificado: também conhecido como relacionamento fraco. Identifica que a chave estrangeira da tabela “pai” não faz parte da chave primária da tabela filha, sendo esse apenas mais um atributo. A seguir, mostramos a representação desses tipos de relacionamento, com exemplos, nas figuras 16 e 17. UF Cidade PK UF-SIGLA PKPK, FK1 CID_NOME UF-SIGLA UF_NOME Figura 16 – Exemplo de relacionamento forte Cor Carro Motor PK COR PK CHASSI PK MOTOR COR_NOME FK1 FK2 MODELO COR MOTOR MOTOR_NOME Figura 17 – Exemplo de relacionamento fraco 4.8 Normalização Normalização de dados é o processo formal passo a passo que examina os atributos de uma entidade, com o objetivo de evitar redundâncias e anomalias observadas na inclusão, na exclusão e na alteração de registros. 4.8.1 Primeira Forma Normal (1FN) Uma relação estará na Primeira Forma Normal 1FN se, e somente se, todos os domínios básicos contiverem somente valores atômicos (não contiver grupos repetitivos). Procedimentos: • identificar a chave primária da entidade; • identificar o grupo repetitivo e removê-lo da entidade; • criar uma nova entidade com a chave primária da entidade anterior e o grupo repetitivo; • a chave primária da nova entidade será obtida pela concatenação da chave primária da entidade inicial e a do grupo repetitivo. 45 ADMINISTRAÇÃO DE BANCO DE DADOS Exemplo: ID Nome Telefone Endereço 1 João (11)1234-5678(11)2345-6789 Rua Seis, 85 Morumbi 12536-965 2 Maria (11)3456-7890(11)4567-8901 Rua Onze, 64 Moema 65985-963 3 José (11)5678-9012(11)6789-0123 Praça Ramos Liberdade 68858-456 Figura 18 Aqui temos os mesmos grupos de dados agrupados para todas as linhas. ID Nome Telefone Rua Bairro CEP 1 João (11)1234-5678(11)2345-6789 Rua Seis, 85 Morumbi 12536-9652 Maria (11)3456-7890(11)4567-8901 Rua Onze, 64 Moema 65985-963 3 José (11)5678-9012 (11)6789-0123 (11)7890-1234 Praça Ramos Liberdade 68858-456 Figura 19 Foi resolvido o problema do endereço, quebrando a informação em três colunas; porém, ainda persiste o problema da coluna telefone e, diferente da anterior, não tem a mesma repetição do outro grupo. Para resolvermos esse caso, teremos que quebrar essa tabela em duas. ID Nome Rua Bairro CEP 1 João Rua Seis, 85 Morumbi 12536-965 2 Maria Rua Onze, 64 Moema 65985-963 3 José Praça Ramos Liberdade 68858-456 Figura 20 A primeira, sem a informação de telefone. Telefone ID (11)1234-5678 1 (11)2345-6789 1 (11)3456-7890 2 (11)4567-8901 2 (11)5678-9012 3 46 Unidade II Telefone ID (11)6789-0123 3 (11)7890-1234 3 Figura 21 A segunda, apenas com a informação de telefone, associada com a primeira pelo código do cliente. 4.8.2 Segunda Forma Normal (2FN) Uma relação estará na Segunda Forma Normal 2FN se já estiver na 1FN e não existir nenhum atributo que não seja dependente de todo da chave da tabela. Procedimentos: • identificar os atributos que não são funcionalmente dependentes de toda a chave primária; • remover da entidade todos esses atributos identificados e criar uma nova entidade com eles. Exemplo: C_Produto N_Produto Qtd Vl_Unitário Subtotal 1 1234 Impressora Matricial 4 100,00 400,00 2 2345 Impressora Jato de Tinta 3 200,00 600,00 3 3456 Impressora Laser 2 1000,00 2000,00 4 5678 Impressora Multifuncional 1 350,00 350,00 Figura 22 Não está na Segunda Forma Normal porque temos atributos que não dependem da chave primária. N_Pedido C_Produto Qtd Vl_Unitário Subtotal 1 1234 4 100,00 400,00 2 2345 3 200,00 600,00 3 3456 2 1000,00 2000,00 4 5678 1 350,00 350,00 Figura 23 Para resolver, separamos a informação em duas tabelas. 47 ADMINISTRAÇÃO DE BANCO DE DADOS C_Produto N_Produto 1234 Impressora Matricial 2345 Impressora Jato de Tinta 3456 Impressora Laser 5678 Impressora Multifuncional Figura 24 Da tabela de pedidos, foi retirada a descrição do produto, porque o atributo é dependente apenas do código do produto. Foi criada uma nova tabela chamada de Produto, composta por Código do Produto e Nome do Produto. Foi mantido o Código do Produto na tabela de Pedido para o relacionamento. 4.8.3 Terceira Forma Normal (3FN) Uma tabela está na Terceira Forma Normal 3FN se estiver na 2FN e se nenhuma coluna não chave depender de outra coluna não chave. Procedimentos: • identificar todos os atributos que são funcionalmente dependentes de outros atributos não chave e removê-los; • a chave primária da nova entidade será o atributo do qual os atributos removidos são funcionalmente dependentes. N_Pedido C_Produto Qtd Vl_Unitário Subtotal 1 1234 4 100,00 400,00 2 2345 3 200,00 600,00 3 3456 2 1000,00 2000,00 4 5678 1 350,00 350,00 Figura 25 Ainda existe um atributo que está relacionado a outro atributo não chave. O atributo SUBTOTAL é derivado do cálculo da quantidade que multiplica o valor unitário. N_Pedido C_Produto Qtd Vl_Unitário 1 1234 4 100,00 2 2345 3 200,00 3 3456 2 1000,00 4 5678 1 350,00 Figura 26 48 Unidade II Nesse caso, removemos a coluna, já que, entre outras coisas, ela era derivada de um cálculo. Saiba mais Na internet, existe muita informação sobre o fascinante mundo do DBA. Para começar a navegar nesse mundo, sugerimos alguns sites. Boa viagem! <http://certificacaobd.com.br> <http://silasmendes.com/dba> <http://www.mcdbabrasil.com.br> <http://www.sybase.com/resources/blogs> <http://dbaforums.org/oracle> Resumo Nesta unidade, apresentamos o modelo relacional, que foi formalmente definido por E. Codd, no laboratório da IBM em San José, na Califórnia, em 1970. O projeto inicial foi denominado de Sistema R e definia a organização dos dados e linguagem e linguagens formais para a sua manipulação. Com base nessas linguagens formais, a primeira versão da linguagem SQL foi definida. Essa linguagem é, atualmente, um padrão para gerenciamento de dados em um SGBD relacional. Entidades e relacionamentos são representados nesse modelo por relações que equivalem ao conceito matemático de conjunto, ou seja, um agrupamento de elementos sem repetição. Uma relação é vista como uma tabela, em que as colunas indicam os campos e as linhas, as ocorrências (valores). Relacionamentos entre relações são estabelecidos por igualdade de valor de campos. Relacionamentos M:N são modelados como relações que mantêm os campos que identificam as duas relações envolvidas mais os dados pertinentes ao relacionamento, caso existam. Uma das vantagens em adotar o modelo relacional é a representação uniforme das entidades e dos relacionamentos. É um conceito único e simples para a organização de dados. Um esquema no modelo relacional é dito um esquema do mais alto nível, pois abstrai uma estrutura de 49 ADMINISTRAÇÃO DE BANCO DE DADOS implementação, como estruturas em árvore ou grafos, em que o usuário deve se preocupar em percorrer apontadores adequadamente. O modelo relacional é o primeiro modelo de dados que oferece linguagens de manipulação de dados cujos comandos podem ser executados independentes da aplicação, pois não estão obrigatoriamente vinculados ao código da aplicação. São, ainda, linguagens de alto nível, ou seja, um pequeno comando de manipulação equivale a um procedimento de acesso a dados, se comparado com os modelos anteriores. Linguagens com essa característica são ditas declarativas, ou seja, o usuário preocupa-se em dizer o que eles desejam obter do banco de dados e não como ele deseja obter. A normalização é uma metodologia para projeto de banco de dados relacionais, uma vez que sugere uma organização de dados em tabelas. Assim sendo, a normalização é uma ferramenta para projeto lógico de banco de dados relacionais. O objetivo dessa técnica é evitar problemas de redundância e anomalias de atualização, que podem estar presentes em uma relação. A solução para resolver esses problemas é a decomposição de uma relação em uma ou mais relações, com base na aplicação de certas regras de normalização (formas normais). Essa proliferação de relações nem sempre é ideal do ponto de vista de performance, devendo ser balanceadas vantagens e desvantagens antes da efetivação dos resultados de uma forma normal. Exercícios Questão 1. Um banco de dados é um componente fundamental para o êxito dos sistemas de informação (SI) na atualidade. Todavia, para ter um banco de dados consistente, torna-se necessário o projeto do banco de dados, que é uma atividade essencial na fase de implementação de um SI. Projetar bancos de dados tem se tornado uma atividade importante e que exige profissionais especializados, principalmente quando os sistemas manipulam grandes quantidades de dados. Frequentemente, quando não há uma abordagem adequada para o projeto de um banco de dados pode-se incorrer em resultados indesejáveis e até em grandes prejuízos financeiros para as empresas. Os autores indicam que a ausência de um projeto do banco de dados acarreta em uma falta de clareza para entender a natureza exata dos dados em um nível conceitual (abstrato). As atividades do projeto de um banco de dados incluem: o projeto conceitual; o projeto lógico e o projeto físico. Considerando os conceitos sobre Banco de Dados e Projetos de Banco de Dados, examine as afirmações a seguir e indique a alternativa incorreta: A) O projeto conceitual de um banco de dados é uma atividade do projeto de banco de dados que usa como base a especificação dos requisitos de um projeto de SI, produzindo como resultado o esquema conceitual do banco de dados. 50 Unidade II B) Um esquema conceitual é uma descrição em alto nível da estrutura do banco de dados, independente do Sistema de Gerenciamento de Banco de Dados (SGBD) adotado para implementá-lo. C) O propósito do projeto conceitual de um banco de dados é descrever o conteúdo de informaçãodobanco de dados ao invés das estruturas de armazenamento que serão necessárias paragerenciar essa informação. D) O projeto lógico de um banco de dados tem por objetivo avaliar o esquema conceitual frente às necessidades de uso do banco de dados pelos usuários e/ou aplicações, realizando possíveis refinamentos para alcançar maior desempenho das operações sobre o banco de dados. E) O projeto físico de um banco de dados não toma como base o projeto lógico para construir o esquema físico do banco de dados. Resposta correta: alternativa E. Análise das alternativas De acordo com a teoria de projeto de banco de dados, as atividades de projeto de BD envolvem em ordem sequencial: o projeto conceitual, o projeto lógico e o projeto físico do banco de dados. Dessa forma, o projeto físico utiliza o esquema lógico gerado durante o projeto lógico para construção das estruturas físicas do banco de dados. A) Alternativa correta. Justificativa: projeto conceitual de dados é uma atividade que tem como ponto de partida os requisitos de informação e as regras de negócio inerentes a um determinado problema ou necessidades de automação de uma área de negócio. B) Alternativa correta. Justificativa: o esquema conceitual de dados é constituído de: a) Diagrama de Entidade e Relacionamento (DER), que modela o aspecto estrutural do mundo real; b) Regras de Restrição de Integridade (RI) e c) um conjunto de Regras de Derivação (RD) que modelam o aspecto comportamental do mundo real. C) Alternativa correta. Justificativa: durante o projeto conceitual é gerado o esquema conceitual do banco de dados e através dele que se descrevem as características dos dados ou informações que estarão contidas no banco de dados. D) Alternativa correta. Justificativa: a atividade do projeto lógico de banco de dados tem como objetivo transformar o modelo conceitual obtido durante o projeto conceitual de dados em um modelo lógico. O modelo lógico 51 ADMINISTRAÇÃO DE BANCO DE DADOS define como o banco de dados será implementado em um SGBD específico, tal como o Oracle, o DB2, o MySQL etc. E) Alternativa incorreta. Justificativa: o Projeto Físico do banco de dados toma por base o esquema lógico para construir o esquema físico. Um esquema físico é uma descrição da implementação do banco de dados em memória disco magnético ou memória secundária; ele descreve as estruturas de armazenamento e métodos de acesso usados para efetivamente realizar o acesso aos dados. O projeto físico é direcionado para um SGBD específico (por exemplo: Oracle, Sybase, OpenIngres, Access). Questão 2. O modelo de banco de dados relacional apresenta o banco de dados como uma coleção de tabelas. O conceito de tabela, embora seja simples e intuitivo, apresenta uma forte correspondência com o conceito matemático de uma relação. Dessa forma, um banco de dados relacional consiste em uma coleção de relações (tabelas), cada qual associada a um nome único (identificação da relação ou tabela). Para a manipulação das tabelas e dos Bancos de Dados Relacionais utiliza-se a linguagem SQL (Structured Query Language – Linguagem de consulta estruturada), que é uma linguagem usada para a consulta, atualização, criação e gerenciamento de banco de dados relacionais. É um método para selecionar determinados registros de um banco de dados, seguindo um critério especificado pelo usuário ou por uma aplicação. A SQL é considerada uma linguagem padrão para o gerenciamento de banco de dados relacionais. Considerando os conceitos sobre Banco de Dados Relacionais e linguagens de manipulação de BD, examine as afirmações a seguir e indique a alternativa incorreta: A) A linguagem SQL é considerada a linguagem padrão ANSI (American National Standards Institute - Instituto Nacional de Padronização Americano) para a operação em bancos de dados relacionais. B) A linguagem SQL realmente tornou-se um padrão na indústria de Banco de Dados relacionais e os fornecedores (empresas desenvolvedores de BD relacionais) garantem esse padrão ao longo do tempo. C) Pode-se afirmar que SQL não é a mesma coisa que SQL Server, pois SQL é a denominação universal para a linguagem de manipulação de BD relacional e SQL Server é o nome de um SGBD específico de um determinado fornecedor de Banco de Dados. D) A linguagem SQL possui dois tipos de comandos fundamentais para que o usuário ou uma determinada aplicação faça uso do BD relacional, os comandos DDL e os comandos chamados de DML. E) Na linguagem SQL, o comando SELECT é o comando mais utilizado, pois é através dele que o BD retorna os dados de uma ou mais tabelas. Como ele não gera nenhuma modificação nos dados é utilizado para a busca de informações de uma tabela ou de um conjunto de tabelas de acordo com as necessidades do usuário ou de uma funcionalidade de uma aplicação. Resolução desta questão na plataforma. 52 Unidade III Unidade III 5 PROJETO DE BANCO DE DADOS Antes de iniciar um projeto de banco de dados, você precisa conhecer como ele funciona e qual a linguagem de comunicação. De modo geral, os Sistemas Gerenciadores de Banco de Dados (SGBD) são compostos de diversos módulos e cada um deles é responsável por um conjunto de funcionalidades. Como existem muitos sistemas, cada um com suas particularidades, é muito raro um profissional dominar o funcionamento de todos. Normalmente, encontramos nas empresas um especialista que conhece profundamente o SGBD que a organização comprou. Por ser um profissional altamente qualificado, somente as grandes organizações costumam mantê-lo como um funcionário de carreira. As pequenas empresas têm o hábito de contratar esses especialistas somente na etapa de concepção e implementação do projeto e manter um contrato de consultoria para os momentos críticos, ou quando necessita de atualização e otimização do ambiente. 5.1 Linguagens de banco de dados A linguagem para acessar um banco de dados depende do tipo de banco de dados. Aqueles do tipo relacional usam a linguagem SQL (Structured Query Language). Essa linguagem originalmente foi criada pela IBM, e de forma muito rápida começaram a surgir diversas variações criadas por outros fabricantes. Para solucionar esse problema, houve a necessidade de se criar uma linguagem-padrão, mantida pela American National Standards Institute (ANSI) desde 1986; aqui no Brasil, pela ISO desde 1987, sendo ambos os órgãos governamentais que cuidam das normas e padrões. Em 1992, o SQL foi revisto e surgiu o SQL-92. Com a revisão em 1999, foi criado o SQL-99 (SQL3) e depois, em 2003, com nova revisão, surgiu o SQL:2003. No entanto, mesmo com a padronização da ANSI e do ISO, o SQL possui muitas variações e extensões produzidas pelos fabricantes de SGBD. A maioria das instruções no SQL funciona da mesma forma nos diversos bancos de dados, mas nem todas as funções têm a mesma característica e forma de escrita. Por exemplo, o comando SELECT funciona igual para todos. Se você executar: SELECT * FROM PRODUTO, esse comando retornará todos os dados de todos os atributos da tabela produto, independentemente se o seu banco de dados é SQL Server, Sybase, MySQL ou Oracle. Mas, se você executar o comando SELECT GETDATE() no banco de dados Oracle, ele não vai funcionar, por se tratar de um comando do SQL Server, que também funciona no Sybase. Para obter a data corrente no Oracle, você deverá executar o comando SELECT SYSDATE FROM DUAL. No caso de banco de dados multidimensionais, a linguagem mais apropriada é a MDX (Multidimensional Expressions), que é semelhante à sintaxe do SQL. O MDX não é uma extensão do SQL. Para criar expressões 53 ADMINISTRAÇÃO DE BANCO DE DADOS MDX usadas para desenhar ou projetar cubos, ou para criar consultas para retornar e formatar dados multidimensionais, você precisa entender os conceitos básicos de modelagem dimensional, pois essa linguagem tem elementos de sintaxe, operadores, instruções e funções próprias diferentes do SQL. 5.2 Tipos de linguagem SQL A linguagem SQL podeser dividida em tipos de acordo com a sua funcionalidade. Os tipos usados nos sistemas gerenciadores de banco de dados são definidos a seguir. 5.2.1 Data Definition Language (DDL) É o tipo de linguagem que interage com os objetos do banco de dados: tabelas, procedures, functions, views, triggers, entre outros. Cada SGBD tem seus manuais técnicos com a lista completa de comandos DDL e suas respectivas sintaxes completas. São exemplos de comandos DDL: • CREATE • ALTER • DROP Para criar uma tabela para armazenar o registro do aluno (RA) e o nome do aluno, a sintaxe do comando é: create table ALUNO ( RA char(7), NOME varchar(100) ) Para incluir uma nova coluna na tabela aluno, que será usada para armazenar a data de nascimento, precisamos alterar a tabela criada anteriormente por meio do comando ALTER TABLE: alter table ALUNO add DATA_NASCIMENTO date Caso você precise alterar a propriedade do campo RA para NULL, o comando a ser executado é: alter table ALUNO alter column RA char(7) NULL Observação Alguns SGBD, quando não informamos a nulidade do atributo, o padrão do gerenciador é considerar como nulo. Recomendamos ler os manuais de referência do SGBD com que você for trabalhar. Importante: é altamente recomendado que você conheça o SGBD de que você está cuidando, pois, no caso de criar um atributo nulo, mas depois precisar alterá-lo para não nulo, nem todos os 54 Unidade III gerenciadores permitem esse tipo de alteração sem a definição de um valor default de preenchimento do atributo na execução do comando ALTER TABLE. Caso não exista um valor-padrão para todas as linhas, você não conseguirá executar o comando e terá que recriar a tabela novamente. Para definir, isto é, criar a chave primária na tabela aluno, caso você não tenha usado o comando completo do CREATE TABLE, você pode fazer uma nova alteração na tabela, por meio do comando: alter table ALUNO add constraint PK_ALUNO primary key(RA) Se você precisar excluir a tabela aluno do seu banco de dados, basta executar o comando: drop table ALUNO Para excluir apenas uma coluna da tabela, o comando é: alter table ALUNO drop column DT_NASCIMENTO 5.2.2 Data Manipulation Language (DML) É o tipo de linguagem que interage com os dados armazenados dentro das tabelas do banco de dados. São comandos DML: • INSERT • UPDATE • DELETE • TRUNCATE Depois de criar a tabela aluno, precisamos cadastrar os dados dos alunos, ou seja, inserir dados na tabela por meio do comando INSERT: insert into ALUNO (RA, NOME, DT_NASCIMENTO) values (‘1234567’, ’LUIZ FERNANDO’, ’1978-08-28’) Caso você precise alterar algum dado na tabela, o comando a ser executado é o UPDATE: update ALUNO set NOME = ‘LUIS FERNANDO’ where RA = ‘1234567’ O comando update ALUNO set NOME = ‘LUIS FERNANDO’ sem a informação da cláusula where RA = ‘12345671’ fará a alteração do nome de todos os alunos cadastrados na tabela para “LUIS FERNANDO”. 55 ADMINISTRAÇÃO DE BANCO DE DADOS Lembrete Para realizar alterações nos dados da tabela, você precisa realizar a operação de UPDATE com muita atenção e cautela. Se você não informar a chave primária na cláusula where do comando, a alteração será realizada para todos os registros da tabela. Para excluir dados de uma tabela, o comando utilizado é: delete from ALUNO where RA = ‘1234567’ Se você quiser excluir todos os dados de uma tabela, é só executar o comando delete from ALUNO. O comando DELETE deve ser usado com atenção, pois, se você não informar o valor da chave primária na cláusula where, todos os dados da tabela serão excluídos. Para efetuar alterações e exclusões em dados, no caso de as tabelas se relacionarem com outras, você só poderá efetuar as alterações respeitando a hierarquia desses relacionamentos. Portanto, antes de executar os comandos de DML, você deve conhecer o modelo de dados que está implementado. Para excluir todos os dados, você também pode usar o comando TRUNCATE. A diferença entre ele e o comando DELETE é que a ação de truncate não é gravada no log de transações. truncate table ALUNO Observação Como a ação de truncate não é uma transação gravada no log do banco de dados, ela não é recomendada para ser usada nas aplicações. Por questões de segurança, as transações que modificam os dados (insert, delete e update) são auditadas, ou seja, o administrador de banco de dados consegue identificar e rastrear essas ações. Mas se a transação de exclusão de dados for executada por meio do comando TRUNCATE, não deixará nenhum rastro. 5.2.3 Data Control Language (DCL) É o tipo de linguagem que interage com a parte de segurança do banco de dados. Baseado na política de segurança definida para o sistema desenvolvido, é com esses comandos que podemos garantir quais dados serão acessados, que tipo de ações poderão ser realizadas por uma pessoa ou um grupo de pessoas. São comandos DCL: 56 Unidade III • GRANT (select, insert, delete, update) • GRANT EXECUTE • REVOKE (select, insert, delete, update) • REVOKE EXECUTE O comando para permissão de execução em todas as procedures do banco de dados é: grant execute to usuario Lembrete A sintaxe sempre vai depender do SGBD que você está usando. No caso de um SGBD da Sybase, por exemplo, não é possível executar o GRANT EXECUTE para todas as procedures num único comando. Você terá que escrever um script contendo o GRANT EXECUTE para cada uma delas e depois executar esse script, que fará a execução do comando linha a linha. Para garantir a permissão de execução da procedure SPalterarMeuNome para uma determinada pessoa, o comando é: grant execute on SPalterarMeuNome to usuario Para dar permissão de execução na procedure para um grupo de pessoas, o comando é: grant execute on SPalterarMeuNome to grupoRH Quando criamos as tabelas no banco de dados, precisamos aplicar as permissões adequadas para os tipos de operações que a tabela pode sofrer. Por exemplo, os dados da tabela aluno podem ser vistos por todos os alunos e funcionários da Seção de Alunos, mas somente alguns funcionários dela e o próprio aluno poderão alterar os dados da tabela. Para garantir essas ações, usamos o comando GRANT, conforme sintaxe a seguir: grant select on ALUNO to grupo_alunos grant select on ALUNO to secao-alunos grant update on ALUNO to aluno grant delete on ALUNO to funcionário 57 ADMINISTRAÇÃO DE BANCO DE DADOS Observação Podemos aplicar todas as permissões (select, insert, delete, update) em uma tabela com a execução do comando grant all on TABELA to usuário. No caso de necessitar retirar a permissão de algum objeto do banco de dados, você deve executar o comando REVOKE. Por exemplo, para remover a permissão de execução em todas as procedures do banco de dados, você deve executar o comando: revoke execute to usuário Para remover a permissão de execução de apenas uma procedure de um determinado usuário ou grupo de usuários, o comando é: revoke execute on SPminhaProcedure to usuario Como você pode ter notado, o comando REVOKE é o oposto do comando de GRANT, e as mesmas recomendações e observações feitas para o comando de GRANT se aplicam para o comando REVOKE. 5.2.4 Data Transaction Language (DTL) É o tipo de linguagem que controla as transações que são executadas em um banco de dados. Transação é uma unidade de execução de programa que acessa e atualiza os dados. A transação consiste em todas as operações executadas entre o começo (BEGIN TRANSACTION) e o fim (END TRANSACTION) da transação. Quando executamos qualquer um dos comandos DML (INSERT, DELETE, UPDATE) ou de DDL (CREATE, ALTER, DROP), também estamos realizando uma transação dentro do banco de dados. Durante o tempo em que a transação estiver em aberto, os comandos DML estão sendo realizados em memória. Assim que a transação for confirmada pela instrução denominada commit, todas as operações serão efetuadas fisicamente no banco de dados. No caso de falha de alguma das operações, a transação será desfeita pela instruçãode rollback, e nenhuma operação será realizada no banco de dados. O comando COMMIT efetiva todas as alterações realizadas no banco de dados. A operação de commit aplica-se a todos os comandos SQL, incluindo comandos DDL. As transações que estão bloqueadas (lock), aguardando o término de uma transação, são sempre liberadas depois do commit na transação que está causando o bloqueio. 58 Unidade III O comando ROLLBACK finaliza uma transação atual. Quando ele é executado, o SQL aborta a transação atual. Isso restaura o banco de dados ou até o estado em que ele estava antes do último commit ou rollback. Lembrete Enquanto nenhuma das instruções, seja de commit ou de rollback, não for processada, as alterações ficam esperando e consumindo recursos de memória, por exemplo. Os comandos DTL são normalmente utilizados dentro de procedimentos (procedures) ou triggers, pois esses objetos costumam ter diversas ações de alterações nos bancos de dados. Os comandos da DTL são os seguintes: • BEGIN TRANSACTION • COMMIT TRANSACTION • ROLLBACK TRANSACTION • END TRANSACTION 5.2.5 Data Query Language (DQL) É o tipo de linguagem que cuida da parte de queries (consultas) aos dados. Apesar de interagir com os dados como a DML, ela não produz alterações neles, serve apenas para consulta. O formato-padrão para consulta é: SELECT atributo FROM relação WHERE condição Observação Relação pode ser uma tabela física no banco ou várias tabelas relacionadas. Atributo é a coluna da tabela. Em algumas bibliografias, o comando SQL está dentro de DML. Exemplos de instrução DQL: Consideramos a seguinte relação (tabela) Aluno e seus respectivos atributos, assim definidos: 59 ADMINISTRAÇÃO DE BANCO DE DADOS • Aluno (nome, idade, curso, ra_aluno) Para obter a lista de todos os atributos de todos os alunos da tabela aluno, você deve executar o comando: SELECT * FROM aluno ou SELECT nome, idade, curso, ra_aluno FROM aluno Quando usamos asterisco (*), queremos dizer que todas as colunas da tabela devem ser retornadas. Para obter todas as informações do aluno cujo RA é 1234567, o comando é: SELECT * FROM aluno WHERE ra_aluno = ‘1234567’ Para selecionar o nome dos alunos que cursam Gestão de Tecnologia da Informação, o comando é: SELECT nome FROM aluno WHERE curso = ‘Gestão de Tecnologia da Informação’ Para saber quais os alunos que têm mais de 25 anos: SELECT nome FROM aluno WHERE idade > 25 O comando SELECT é o mais utilizado dentro de um banco de dados. Ele serve para retornar dados de uma ou mais tabelas. Como ele não gera nenhuma modificação nos dados, você pode usá-lo antes de fazer a alteração. Por exemplo, suponha que você fosse alterar alguma informação do aluno cujo RA é 1234567. Antes de executar o comando UPDATE, você deve executar o comando SELECT e analisar o resultado. Isso evita o risco de realizar alterações indevidas. Para retornar dados de mais de uma tabela, utilizamos o conceito de join. É extremamente importante conhecer o modelo de dados e como as tabelas estão relacionadas, para obter resultados corretos. O comando JOIN ou junção é baseado na teoria dos conjuntos. Considere as tabelas como um conjunto de dados sobre um determinado assunto. 60 Unidade III Observação A sintaxe do comando JOIN entre duas ou mais tabelas relacionadas é diferente entre os diversos dialetos do SQL. Para escrever o comando corretamente, você deverá consultar o manual do gerenciador de banco de dados. Os exemplos de JOIN que serão mostrados a seguir estão usando a sintaxe do SQL padrão ANSI. Caso você queira testar os comandos em um banco de dados, você precisa estar atento se ele é compatível com o SQL ANSI, pois a sintaxe do JOIN difere muito. Exemplo de sintaxe do comando SELECT com mais de uma tabela. Por exemplo, vamos considerar as tabelas: • Turma (id_turma, nome, sala, disciplina) • Disciplina (disciplina, sigla, créditos) Queremos a lista das salas de cada turma, indicando o nome da turma e a sigla de cada disciplina correspondente. O comando SELECT ficará assim: SQL padrão ANSI: SELECT sala, nome, sigla FROM Turma, Disciplina INNER JOIN Disciplina ON Turma.disciplina = Disciplina.disciplina ou Transact-SQL: SELECT sala, nome, sigla FROM Turma, Disciplina WHERE Turma.disciplina = Disciplina.disciplina Para entender como esse JOIN funciona, com base na teoria dos conjuntos, vamos considerar as tabelas como conjuntos da seguinte forma: o conjunto das turmas será denominado conjunto A; o conjunto das disciplinas será o conjunto B, conforme a figura seguinte. 61 ADMINISTRAÇÃO DE BANCO DE DADOS Conjunto/Tabela A Conjunto/Tabela B Figura 27 – Tabelas como diagramas de conjuntos INNER JOIN – é o tipo de JOIN mais usado. Retorna apenas os dados que existem em comum nas duas tabelas. Com base na teoria dos conjuntos, podemos dizer que é a intersecção entre os conjuntos, conforme representado na figura a seguir. Conjunto/Tabela A Conjunto/Tabela B Figura 28 – Representação gráfica do INNER JOIN Sintaxe do INNER JOIN usando o SQL padrão ANSI: select * from A inner join B on A.atributo_chave = B.atributo_chave E agora utilizando o Transact-SQL: select * from A, B where A.atributo_chave = B.atributo_chave LEFT JOIN – usado quando é necessário retornar todos os dados de uma tabela, mesmo que não exista na outra tabela. O LEFT JOIN retorna os dados da tabela da esquerda, conforme a figura a seguir. 62 Unidade III Conjunto/Tabela A Conjunto/Tabela B Figura 29 – Representação gráfica do LEFT JOIN Sintaxe do LEFT JOIN usando o SQL padrão ANSI: select * from A left join B on A.atributo_chave = B.atributo_chave Agora, utilizando o Transact-SQL: select * from A, B where A.atributo_chave *= B.atributo_chave RIGHT JOIN – assim como o LEFT JOIN, é usado quando é necessário retornar todos os dados de uma tabela, mesmo que não existam na outra tabela. O RIGHT JOIN retorna os dados da tabela da direita, conforme a figura a seguir. Conjunto/Tabela A Conjunto/Tabela B Figura 30 – Representação gráfica do RIGHT JOIN Sintaxe do RIGHT JOIN usando o SQL padrão ANSI: 63 ADMINISTRAÇÃO DE BANCO DE DADOS select * from A right join B on A.atributo_chave = B.atributo_chave Agora, utilizando o Transact-SQL: select * from A, B where A.atributo_chave =* B.atributo_chave 5.3 Módulos de funcionamento do SGBD O núcleo de um SGBD é composto pelo módulo central, que é o módulo gerenciador do banco de dados, responsável pela transparência do acesso físico aos dados armazenados, seja para aplicações, seja para os usuários especializados e o DBA. O SGBD apenas solicita os dados a esse módulo, que se encarrega de localizar os registros fisicamente em disco e transferi-los para as estruturas de dados. Esse módulo realiza a comunicação com o sistema operacional do equipamento onde se encontram os dados, por meio do mapeamento de registros em memória para as páginas de disco onde se encontram, ou vice-versa. Em outras palavras, esse módulo é responsável pelo atendimento das requisições de dados e metadados feitas pelos módulos que interagem com os agentes. Atende também às solicitações de operações sobre dados enviados pelo código objeto das aplicações. Retornam dados e/ou status que indicam situações como execução realizada com sucesso, erros de acesso, violações de integridade ou permissão etc. É o único módulo que se comunica com o módulo gerenciador de arquivos. Os controles de segurança e concorrência são de responsabilidade desse módulo central. O módulo gerenciador de arquivos gerencia o acesso aos dispositivos de armazenamento. Recebe e realiza requisições para leitura e gravação de dados, metadados e dados de segurança do módulo gerenciador do banco de dados. Responsável pela tradução de comandos DML, temos o módulo compilador DML. No caso em que os comandos DML são embutidos em um programa de aplicação, esse módulo realiza a pré-compilação e a geração do código objeto para esses comandos, criandoum programa pré-compilado que é remetido para o compilador do ambiente de desenvolvimento utilizado pelo programador. Já no caso em que os comandos DML são enviados de forma ad hoc por usuários especializados, o módulo traduz e já executa o comando, caso esteja correto. Em ambos os casos, o módulo compilador DML solicita metadados ao módulo gerenciador do banco de dados, para poder traduzir os comandos; caso a solicitação seja uma consulta, ele a remete ao módulo processador de consultas, recebendo-a modificada. 64 Unidade III O módulo processador de consultas recebe um comando de consulta do módulo pré-compilador DML e define a melhor estratégia de acesso para processá-la. Para tanto, esse módulo necessita solicitar metadados ao módulo gerenciador do bando de dados, com o objetivo de analisar o tamanho dos arquivos envolvidos na consulta, os relacionamentos existentes, a estimativa de valores distintos de atributos, visando determinar um procedimento que processe a consulta mais rapidamente. Esse procedimento, uma vez determinado, é enviado ao módulo compilador DML para ser traduzido. Para traduzir o programa-fonte da aplicação, escrito em alguma das linguagens de programação suportadas pelo SGBD, temos o módulo compilador do utilitário. Esse módulo retorna um código de status à ferramenta de desenvolvimento e gera, no caso de uma tradução bem-sucedida, o código objeto da aplicação. Já o módulo compilador DDL traduz comandos DDL e gera os esquemas conceitual e físico, ou seja, solicita a criação do banco de dados da aplicação para o módulo gerenciador do banco de dados, que por sua vez solicita ao módulo gerenciador de arquivos a criação de arquivos de dados e metadados. O módulo compilador DCL e de autorização gera procedimentos para verificação de integridade e permissão de acesso. Esses procedimentos são remetidos ao módulo gerenciador do banco de dados, que por sua vez solicita ao módulo gerenciador de arquivos o armazenamento deles no dicionário de dados. Os procedimentos para monitoramento de performance e configuração do banco de dados, e também recuperação de falhas, são funcionalidades do módulo de administração. A primeira classe de procedimentos solicita e/ou modifica dados de configuração e solicita estimativas sobre performance ao módulo gerenciador do banco de dados, que os obtém no dicionário de dados e/ou nos dispositivos que mantêm dados de segurança. A segunda classe de procedimentos solicita dados ao banco de dados de recovery para restaurar os dados do banco de dados na ocorrência de uma falha. 5.4 Etapas do projeto de banco de dados O desenvolvimento de um sistema de informação envolve a análise e o projeto de dois componentes importantes: os dados e os processos. O projeto de dados é considerado a parte estática do sistema, uma vez que diz respeito a um universo persistente de características que dificilmente sofre modificações após a sua definição. O projeto de processos, por sua vez, é chamado de parte dinâmica, uma vez que as tarefas a serem realizadas sobre os dados podem variar, conforme ocorre a evolução do sistema. Consideram-se projeto de um banco de dados a análise, o projeto e a implementação dos dados persistentes de uma aplicação, levando em conta a determinação da sua semântica (abstração dos dados de uma realidade) e, posteriormente, o modelo de dados e o SGBD a serem adotados. O projeto de um banco de dados é composto de quatro etapas, descritas a seguir. 65 ADMINISTRAÇÃO DE BANCO DE DADOS 5.4.1 Levantamento de requisitos É a fase principal de todo o projeto de banco de dados, em que é necessário entender do que o usuário realmente necessita. Nessa etapa, são coletadas informações sobre os dados de interesse da aplicação, o seu uso e as suas operações de manipulação sobre os dados, e suas relações. Para a realização dessa etapa, são necessárias tarefas como: • entrevistas com os futuros usuários do sistema; • análise de documentações disponíveis (arquivos, relatórios etc.). O resultado dessa etapa normalmente é uma descrição dos requisitos da aplicação, o mais detalhado e claro possível. Caso nenhuma metodologia de engenharia de software esteja sendo empregada, essa descrição de requisitos é informal, no formato de um texto, por exemplo, que narra as informações comentadas anteriormente. 5.4.2 Projeto conceitual Pode ser considerada a fase de análise dos dados e dos requisitos capturados na etapa anterior. Nessa etapa, é realizado o que se chama de desenho da solução ou modelagem conceitual, momento em que são analisados os fatos (entidades ou conjunto de ocorrências de dados) de interesse e seus relacionamentos, juntamente com seus atributos (propriedades ou características), e é construída uma notação gráfica (abstrata, uma representação de alto nível) para facilitar o entendimento dos dados e suas relações, tanto para os analistas quanto para os futuros usuários. Essa etapa resulta em um modelo conceitual, em que a semântica da realidade deve estar correta. A ferramenta mais empregada nessa etapa é o Diagrama Entidade-Relacionamento (DER). Ainda nessa fase, as reuniões com o usuário são constantes, para mais entendimentos sobre o projeto e validação do modelo conceitual. 5.4.3 Projeto lógico Nessa etapa, o desenvolvimento do banco de dados começa a se voltar para o ambiente de implementação, uma vez que é feita a conversão do modelo de dados de um banco de dados (modelo lógico). Esse modelo de dados pode ser o modelo relacional, orientado a objetos, multidimensional etc. Essa etapa se baseia no uso de regras de mapeamento de um DER para o modelo de dados escolhido. O resultado é uma estrutura lógica, como um conjunto de tabelas relacionadas, caso o modelo de dados escolhido seja o relacional. Aqui, definimos efetivamente a chave primária, bem como refinamos os relacionamentos que vêm do diagrama construído na etapa anterior. Nessa etapa, realizamos o processo de normalização das tabelas, a fim de remover as redundâncias e inconsistências. 66 Unidade III 5.4.4 Projeto físico Essa última etapa realiza a adequação do modelo lógico gerado na etapa anterior ao formato de representação de dados do SGBD escolhido para a implementação. Para a realização dessa etapa, devem-se conhecer a DDL e a DCL do SGBD, para realizar a descrição do modelo lógico. O resultado é a especificação do esquema da aplicação, juntamente com a implementação de restrições de integridade e visões. Observação Nessa etapa do projeto, criamos um “mapa” do banco de dados, da forma como ele será criado em SQL. Aqui, definimos os tipos de dados de cada atributo e, quando necessário, alteremos os nomes dos campos e das tabelas para que se ajustem ao padrão da organização. 5.4.5 Criação do banco de dados Essa é a etapa da programação propriamente dita. Aqui, seguindo o que foi definido no modelo físico, serão criados todos os objetos dentro do banco de dados, utilizando a linguagem SQL. 5.4.6 Exemplo de projeto de banco de dados 1ª. etapa: levantamento de requisitos Seu usuário pede que você crie um cadastro de pessoas. Durante a entrevista, você fará diversas perguntas para saber o que ele pretende com esse cadastro de pessoas. Além do nome e do CPF, ele quer ter o cadastro do telefone. No final dessa etapa, você terá um documento descrevendo da forma mais detalhada possível todas as operações que envolvem esse cadastro de pessoas. 2ª. etapa: projeto conceitual Nessa etapa, você criará o modelo conceitual, identificando e analisando os fatos ou as entidades, e construirá uma representação gráfica para facilitar o entendimento do usuário, conforme por ser visto na figura a seguir. CPF NOME TEL PESSOA Figura 31 – Representação gráfica do modelo conceitual 67 ADMINISTRAÇÃO DE BANCO DE DADOS 3ª. etapa: projeto lógico Nessa etapa, com o modelo conceitual analisado e aprovado pelo usuário, você começará a fazer a conversão para um modelo de dados adequado com as especificações realizadasnas etapas anteriores. Em nosso exemplo, podemos usar o modelo relacional, pois, no caso de o usuário querer incluir no seu cadastro de pessoas outra informação – como dados do endereço residencial, dados sobre as características dessa pessoa dentro do sistema –, você terá que alterar o seu modelo e incluir mais tabelas e seus respectivos relacionamentos. Por enquanto, a estrutura lógica que temos está representada na figura a seguir. Até aqui, sabemos que já temos uma tabela denominada pessoa, com os atributos CPF, nome e tel, e o atributo que irá garantir a identificação de uma única pessoa será o CPF, ou seja, o atributo candidato a ser considerado como chave primária já está definido. Pessoa PK CPF NOME TEL Figura 32 – Modelo lógico de uma entidade 4ª. etapa: projeto físico Nessa etapa, estamos prontos para criar a tabela no banco de dados, e, se já existir um arquivo com os dados, também poderemos providenciar a carga da primeira massa de dados. Tudo será realizado no banco de dados escolhido e com a utilização dos comandos DDL e DCL. Para facilitar o trabalho, podermos gerar um arquivo (script) com a sequência dos comandos de criação da tabela, os comandos de permissão de acesso e manipulação e também os comandos para inserir a primeira massa de dados. Pessoa PK CPF CHAR(11) NOME TEL VARCHAR(100) CHAR(10) Figura 33 – Modelo físico de uma entidade Exemplo do arquivo (script) de criação dos objetos de banco de dados: create table PESSOA ( CPF char(11) not null, NOME varchar(100) not null, TEL char(10) null, constraint PK_PESSOA primary key (CPF) ) grant select on PESSOA to grupo_usario grant insert on PESSOA to usuario1 grant update on PESSOA to usuario1 68 Unidade III grant delete on PESSOA to usuario1 BEGIN TRANSACTION insert to PESSOA (CPF, NOME, TEL) values (‘13515794-22’, ‘João da Silva’, ‘(011) 2244-56789’ insert to PESSOA (CPF, NOME, TEL) values (‘9995794-22’, ‘Pedro Toledo, ‘(011) 7644-53789’ insert to PESSOA (CPF, NOME, TEL) values (‘5691800-09, ‘Clara Nunes’, ‘(011) 3450-9900’ insert to PESSOA (CPF, NOME, TEL) values (‘09873456-35’, ‘Luis Alves, null) COMMIT TRANSACTION insert to PESSOA (CPF, NOME, TEL) values (‘19565797-02’, ‘Paulo da Silva’) insert to PESSOA (CPF, NOME, TEL) values (‘4569579-12’, ‘Carlos Manuel, ‘(011) 9084-13689’ insert to PESSOA (CPF, NOME, TEL) values (‘7891800-49, ‘Maria Oliveira’, ‘(011) 3400-9000’ insert to PESSOA (CPF, NOME, TEL) values (‘09803454-36’, ‘Ricardo Veiga, null) COMMIT TRANSACTION END TRANSACTION 6 TIPOS DE DADOS (DATA TYPES) Um banco de dados existe para armazenar dados de forma efetiva para posteriormente recuperá-los. Para auxiliar nessa tarefa, existem tipos diferentes de dados para melhor armazená-los. Os bancos de dados possuem vários tipos e subtipos de dados. Recomendados a leitura do manual do banco de dados fornecido pelo fabricante para você conhecer os tipos de dados. É muito comum fazer algumas conversões de um tipo de dados para outro durante uma consulta dos dados armazenados no banco de dados. 69 ADMINISTRAÇÃO DE BANCO DE DADOS Alguns gerenciadores de bancos de dados consegue fazer essas conversões diretamente, sem a necessidade de explicitar por meio de funções próprias de conversão. Os elementos de dados básicos e as estruturas de dados mais comuns, utilizadas em diversas linguagens e bancos de dados, estão a seguir. 6.1 Elementos de dados • Byte, Integer: números inteiros positivos, negativos ou o zero. • Real: números inteiros positivos ou negativos compostos por uma parte inteira e outra fracionada. Exemplo: 8,2. • Char: caractere alfanumérico como letras, algarismos ou símbolos especiais ocupando uma única posição de memória. Na verdade, esse elemento armazena um numero da tabela ASCII. • Boolean: armazena estados de uma operação lógica, podendo receber valores de verdadeiro ou falso, armazenando o bit 0 ou 1 dependendo do resultado. Quando os dados estão organizados de forma coerente, temos uma estrutura de dados. As estruturas também são chamadas tipos de dados compostos e podem ser: • Homogêneos: conjunto de dados formado pelo mesmo elemento de dado. • Heterogêneos: conjunto de dados formado por mais de um elemento de dado. Alguns bancos de dados, além de ter uma vasta coleção de elementos de dados, permitem a criação de novos elementos, por exemplo, o PostgreSQL, que permite a criação por meio do comando CREATE TYPE. Existem elementos de dados nativos de um banco de dados que não existem em outros bancos de dados. 6.1.1 Estrutura de dados As mais comuns serão descritas a seguir. Lembrando que nem todas as estruturas existem nos diferentes bancos de dados. Por exemplo, a estrutura de dados conhecida como vetor não existe no bando de dados Sybase, mas por meio do conceito de cursor podemos lidar com os dados com a mesma funcionalidade dos vetores. • Vetores Também conhecidos como array, são uma estrutura de dados simples linear e estática que mantém uma série finita de elementos de dados do mesmo tamanho e tipo. 70 Unidade III • Lista Cada elemento de dados referencia o seu sucessor. Os tipos de lista são: • Lista encadeada Os elementos são armazenados em sequência, não tendo como acessar um segundo elemento sem acessar o primeiro. • Lista ordenada Os elementos são armazenados seguindo algum critério de ordenação. • Fila Estruturas que se comportam como filas tradicionais e têm como política de funcionamento o FIFO (First in, first out – primeiro que entra, primeiro que sai). As inserções são realizadas no final, e a remoção no início. Existem duas operações nas filas, que são: – Enqueue: adiciona um elemento ao final da fila. – Dequeue: remove um elemento do início da fila. 5 3 7 1 4 Começo Fim Figura 34 – Exemplo de estrutura de dados em fila • Pilha É baseada no princípio LIFO (Last in, first out – último que entra, primeiro que sai). O topo é o único local possível de inserir elementos e a remoção da pilha só ocorre nas extremidades do topo, isto é, os elementos são removidos na ordem inversa da inserção. As funções que se aplicam a pilhas são: – PUSH: insere um dado no topo da pilha. – POP: remove o item no topo da pilha. – TOP: retorna o elemento no topo. 71 ADMINISTRAÇÃO DE BANCO DE DADOS • Árvores Os dados estão dispostos de forma hierárquica, tendo seu elemento principal chamado de raiz, que possui ligação com os outros elementos denominados ramos. Uma árvore binária é aquela em que cada ramo possui mais dois ramos, como na figura a seguir. Figura 35 – Exemplo de estrutura de dados em árvore Saiba mais Para se aprofundar no assunto, recomendamos alguns livros de estrutura de dados, que estão relacionados na bibliografia ao final do livro-texto. 6.1.2 Unidades de medidas Os computadores “entendem” impulsos elétricos, positivos ou negativos, que são representados por 1 ou 0. A cada impulso elétrico, damos o nome de bit (BInary digiT). Um conjunto de 8 bits reunidos como uma única unidade forma um byte. A seguir, apresentamos algumas conversões de medidas. 1 byte = 8 bits 1 kilobyte (KB ou Kbytes) = 1024 bytes 1 megabyte (MB ou Mbytes) = 1024 kilobytes 1 gigabyte (GB ou Gbytes) = 1024 megabytes 1 terabyte (TB ou Tbytes) = 1024 gigabytes 1 petabyte (PB ou Pbytes) = 1024 terabytes 1 exabyte (EB ou Ebytes) = 1024 petabytes 72 Unidade III 1 zettabyte (ZB ou Zbytes) = 1024 exabytes 1 yottabyte (YB ou Ybytes) = 1024 zettabytes É também por meio dos bytes que se determina o comprimento da palavra de um computador, ou seja, a quantidade de bits que o dispositivo utiliza na composição das instruções internas, por exemplo: 8 bits palavra de 1 byte 16 bits palavra de 2 bytes 32 bits palavra de 4 bytes Na transmissão de dados entre dispositivos, geralmente, usam-se medições relacionadas a bits e não a bytes. Assim, há também os seguintes termos: 1 kilobit (Kb ou Kbit) = 1024 bits 1 megabit (Mb ou Mbit) = 1024 kilobits 1 gigabit (Gb ou Gbit) = 1024 megabits 1 terabit(Tb ou Tbit) = 1024 gigabits Observação Quando a medição é baseada em bytes, a letra “b” da sigla é maiúscula (como em GB). Quando a medição é feita em bits, o “b” da sigla fica em minúsculo (como em Gb). Como já dito, a utilização de medições em bits é comum para informar o volume de dados em transmissões. Geralmente, indica-se a quantidade de bits transmitidos por segundo. Assim, quando queremos dizer que um determinado dispositivo é capaz de trabalhar, por exemplo, com 54 megabits por segundo, usa-se a expressão 54 Mb/s: 1 Kb/s = 1 kilobit por segundo 1 Mb/s = 1 megabit por segundo 1 Gb/s = 1 gigabit por segundo 73 ADMINISTRAÇÃO DE BANCO DE DADOS Resumo Vimos nesta unidade que a etapa de projeto conceitual de um banco de dados consiste na elaboração de um modelo conceitual, ou seja, um modelo de representação de categorias de fatos do mundo real (entidades) e os relacionamentos existentes entre eles. É dito um modelo de alto nível, pois não está vinculado a nenhum modelo de banco de dados. Sua intenção é facilitar a real compreensão dos fatos de uma realidade (semântica da realidade). A etapa de projeto conceitual é uma das mais importantes do projeto do banco de dados, pois, se for mal definida, irá gerar uma estruturação de dados ineficiente no esquema implementado em um banco de dados. As principais vantagens da confecção de um modelo conceitual são: • melhor compreensão do modelo por parte de um usuário leigo; • independência de detalhes de implementação, podendo ser facilmente modificado sem comprometer as outras etapas; • tradução para qualquer modelo de dados (relacional, orientado a objetos, multidimensional); • ferramenta indispensável para o processo de engenharia reversa de um banco de dados (isto é, obter o modelo conceitual a partir do modelo lógico de um banco de dados); • maior estabilidade diante das mudanças de implementação; • mais adequado para o exercício da criatividade durante a interpretação da realidade para ser traduzida para o modelo. Exercícios Questão 1. O Modelo Entidade Relacionamento (MER) é baseado na percepção do mundo real. O modelo representa a visão das entidades de dados envolvidas no problema analisado. Pode-se afirmar que ele consiste em um conjunto de objetos básicos chamados entidades e nos relacionamentos entre esses objetos. O objetivo do MER é facilitar o projeto de banco de dados, possibilitando a especificação da estrutura lógica geral do banco de dados. No modelo desenha-se um diagrama chamado de DER (Diagrama Entidade-Relacionamento) que mostra a estrutura lógica geral de um banco de dados. Ele 74 Unidade III serve para checar se todos os pedidos dos usuários estão sendo atendidos e se não há conflitos entre eles. Não há preocupação com armazenamento físico. Considerando os conceitos sobre Projeto de Banco de Dados, examine as afirmações a seguir e indique a alternativa incorreta: A) O modelo de dados é a representação abstrata e simplificada de uma realidade, com o qual se pode explicar ou testar o seu comportamento. B) O modelo de dados é uma coleção de conceitos que podem ser usados para descrever a estrutura de um banco de dados (tipos de dados, relacionamento e restrições entre os mesmos). C) Os modelos de dados não permitem a compreensão da estrutura dos dados armazenados e a sua manipulação. D) Os modelos de dados, para efeito de organização foram dividos em: modelo conceitual (projeto conceitual), modelo de implementação ou baseados em registros (projeto lógico), e modelo físico (projeto físico). E) O modelo conceitual é usado na descrição do banco de dados, sendo independente de implementação e do monitor de banco de dados (SGBD). Resposta correta: alternativa C. Análise das alternativas O modelo de dados (MER) é uma abordagem que foi criada por Peter Chen em 1976 e que permitiu a análise dos dados a serem armazenados independentes da solução de banco de dados oferecidos pelos fornecedores. É até hoje considerada como um padrão para a modelagem conceitual. A) Alternativa correta. Justificativa: o modelo de dados (MER) tem por base que o mundo real é formado por um conjunto de objetos chamados de entidades e pelo conjunto dos relacionamentos entre esses objetos. B) Alternativa correta. Justificativa: o objetivo do MER é representar a estrutura lógica do banco de dados de uma empresa, especificando o esquema da empresa, quais as entidades e como elas serelacionam entre si. C) Alternativa incorreta. Justificativa: os autores definem que modelos são mentais e que são pressupostos profundamente arraigados, generalizações ou mesmo imagens que influenciam a forma de ver o mundo e de nele agir. 75 ADMINISTRAÇÃO DE BANCO DE DADOS Muitas vezes, não estamos conscientes de nossos modelos mentais ou de seus efeitos sobre nosso comportamento. Essa definição na Engenharia de Software cobre todos os modelos previstos, inclusive a modelagem dos dados de um Sistema de Informação. D) Alternativa correta. Justificativa: a abordagem da modelagem de dados é uma visão do assunto que normalmente atende a três perspectivas: modelagem conceitual, modelagem lógica e modelagem física. A primeira é usada como representação de alto nível e considera exclusivamente o ponto de vista do usuário criador do dado ou proprietário, a segunda já agrega alguns detalhes de implementação e a terceira demonstra como os dados são fisicamente armazenados. E) Alternativa correta. Justificativa: o modelo conceitual é uma descrição mais abstrata do banco de dados e é o ponto de partida para o projeto do banco de dados. Questão 2. Durante o projeto de um banco de dados é fundamental o estudo e aplicação da normalização de dados. A normalização é um conjunto de passos que são aplicados e que permitem um armazenamento consistente e um eficiente acesso aos dados em bancos de dados relacionais. Esses passos reduzem a redundância de dados e as chances de se tornarem inconsistentes. No entanto, muitos monitores de banco de dados relacionais (SGBDs) não permitem uma abstração suficiente entre o projeto lógico da base de dados e a implementação física do banco de dados, e isso tem como consequência um desempenho fraco nas consultas mais complexas efetuadas no banco de dados. Nestes casos, usa-se por vezes a desnormalização para melhorar o desempenho, com o custo de menores garantias de consistência. Considerando os conceitos sobre projeto de banco de dados, examine as afirmações a seguir e indique a alternativa incorreta: A) Na normalização de um banco de dados relacional, a primeira Forma Normal (ou 1FN) requer que todos os valores de colunas em uma tabela sejam atômicos. B) Na normalização de um banco de dados relacional, a segunda Forma Normal (ou 2FN) requer que não haja dependência funcional não trivial de um atributo que não seja a chave, em parte da chave candidata. C) Na normalização de um banco de dados relacional, a terceira Forma Normal (ou 3FN) requer não haver dependências funcionais não triviais de atributos que não sejam chave, em qualquer coisa exceto um superconjunto de uma chave candidata. D) Existem outras formas de normalização de banco de dados relacional, mas que raramente são aplicados a banco de dados comerciais e nem sempre os SGBDs dão suporte a elas, como a quarta e quinta forma normal. 76 Unidade III E) Os bancos de dados hierárquicos e em redes também necessitam que os dados sejam normalizados com o uso de chaves primárias e chaves estrangeiras. Resolução desta questão na plataforma. 77 ADMINISTRAÇÃO DE BANCO DE DADOS Unidade IV 7 ADMINISTRAÇÃO DE BANCO DE DADOS Nas unidades anteriores, apresentamos os conceitos fundamentais necessários para o entendimento e a criação de um banco de dados. Na fase de concepção e criação, o administrador de banco de dados está mais próximo do administrador de dados. Após a implementação física do projeto de banco de dados, isso não significa que o trabalho acabou, muito pelo contrário, é agoraque as habilidades e experiência do DBA serão colocadas em prática, pois o trabalho de ajustes de desempenho (tuning) e a manutenção e a garantia de que tudo funcione da maneira desejada vão depender de ações contínuas desse profissional. Os conceitos descritos a seguir serão apresentados de forma genérica, pois o ideal é seguir as recomendações oferecidas pelos fornecedores de banco de dados. Parece estranho, mas não é. Não adianta você comprar uma Ferrari, por exemplo, e estudar o manual do Gol. Se você quer tirar o máximo de proveito de todas as funcionalidades da Ferrari, terá que se tornar um especialista. A analogia parece absurda, mas funciona para banco de dados. De modo geral, os SGBD costumam armazenar os dados e as estruturas de bancos de dados em locais e arquivos diferentes de onde são armazenadas as informações sobre as operações efetuadas sobre os dados e as estruturas. Por exemplo, o SGBD Microsoft SQL Server armazena os dados em dois arquivos distintos: • Um arquivo com a extensão mdf – Arquivo principal do banco de dados. – Nesse arquivo são gravados os dados e a estrutura do banco de dados. • Um arquivo com a extenção ldf – Arquivo de log do banco de dados. Grava todas as operações realizadas dentro do banco de dados. Funciona como um diário de tudo o que acontece lá dentro. Observação Os fornecedores de banco de dados oferecem cursos específicos para capacitar os profissionais de administração de banco de dados. Nem sempre é uma tarefa trivial, em que basta ler um manual e seguir. 78 Unidade IV A escolha do banco de dados da empresa é uma decisão muito delicada, na medida em que está irá acarretar troca de aplicativos e de hardware. Os investimentos diretamente aplicados no banco de dados costumam ser infinitamente menores do que aqueles a serem aplicados na empresa, visando sua perfeita adequação ao novo SGBD. Essa decisão, sempre que possível, deve ser tomada por especialistas em banco de dados, com profundos conhecimentos de análise de sistemas, de banco de dados e de software de gerenciamento de banco de dados, de forma a evitar que a empresa escolha um banco de dados inadequado aos seus propósitos e, pouco tempo depois, seja obrigada a perder todos os investimentos realizados em software e hardware. 7.1 Backup O backup é considerado como uma das atividades mais importantes e críticas de administração de banco de dados. Consiste em fazer uma cópia de segurança (dump) dos dados e da estrutura do banco de dados, e das operações realizadas na linha do tempo, entre uma cópia e outra. O backup em tempo de execução é uma característica sempre disponível em todos os tipos de SGBD, porém temos aplicações que invariavelmente são comprometidas por falhas de hardware e outras cujo mesmo tipo de falha não causa perda alguma de dados ou de integridade. Novamente, cada SGBD tem essa característica melhor ou pior implementada, cabendo ao administrador de banco de dados escolher aquele que lhe oferecer mais segurança. Normalmente, as falhas podem ser de dois tipos: soft crach e hard crash. A primeira são falhas do sistema (por exemplo, queda de energia) que afetam todas as transações em curso no momento, mas não danificam fisicamente o banco de dados. A segunda são falhas da mídia (por exemplo, queda da cabeça de gravação sobre o disco) que causam danos ao banco de dados ou a uma parte dele e afetam pelo menos todas as transações que, no momento, estão usando essa parte. 7.1.1 Recuperação e concorrência Os problemas de recuperação e concorrência de dados estão ligados a processamento de transação. Lembrete Transação é uma unidade de trabalho lógica, ou seja, é uma sequência de operações que transforma um estado consistente de banco de dados em outro estado consistente, sem que os pontos de consistência intermediários sejam preservados. O sistema não deve permitir que transações sejam executadas em parte (ou seja, o programa pode terminar de forma anormal durante as atualizações), pois isso levaria o banco a um estado inconsistente. Por isso, sistemas que suportam o processamento de transação têm uma melhor forma de segurança. 79 ADMINISTRAÇÃO DE BANCO DE DADOS Essa segurança é resumida em quatro tópicos, a saber: • Atomicidade: ter a certeza de que uma transação foi totalmente executada ou totalmente cancelada. Nunca uma execução pode ficar pela metade. • Consistência: não permanecer com estágio intermediário, deve ir de um estágio consistente a outro. • Isolamento: uma transação, quando executada, tem que ser executada independente de outra. Não importa se elas estejam sendo processadas separadas ou de forma concorrente, o resultado terá que ser o mesmo. Existe um sistema gerenciador de transação que permite isso. • Durabilidade: garantir que todas as transações não realizadas permaneçam no banco e sejam realizadas assim que o computador for reinicializado. Se, por algum problema, o computador desligar e o disco não for danificado, a durabilidade tem que estar funcionando. Observação A atomicidade é proporcionada por meio das operações COMMIT e ROLLBACK. 7.1.2 Pontos de sincronização O ponto de sincronização representa a ligação entre duas transações consecutivas, mostrando onde o banco de dados está (ou deveria estar) em estado de consistência. As únicas operações que apresentam este ponto são COMMIT e ROLLBACK. • COMMIT: garante que a transação foi finalizada com êxito. O banco de dados (depois do término da transação) encontra-se em estado de consistência, e todas as suas atualizações são permanentes. • ROLLBACK: assinala que a transação foi malsucedida. O sistema informa que algo saiu errado e que todas as atualizações devem ser refeitas, ou seja, elimina vestígios do que foi feito. Observação As operações COMMIT e ROLLBACK terminam a transação e não o programa. Todas as transações são acumuladas em um buffer, que, de tempo em tempo, atualiza o banco; caso ocorra uma queda de energia, as operações efetuadas até então são perdidas. Assim, para melhor segurança, é necessário que esteja presente sempre um arquivo de log. A finalidade desse arquivo é registrar cronologicamente todas as transações realizadas, assim, quando houver uma falha, é possível fazer recuperação. O log, por sua vez, não pode ficar no buffer, já que assim que é desligado o computador, tudo o que está na memória é perdido. 80 Unidade IV 7.2 Meios de recuperação (restore) O sistema deve ser preparado para se recuperar não só das falhas locais (danos causados apenas na área em que estas ocorreram), mas também das falhas globais (danos em diversas áreas, havendo implicações expressivas no sistema). Há duas categorias de falhas, descritas a seguir. 7.2.1 Falhas do sistema Normalmente, são causadas por queda de energia ou desligamento do computador sem finalização correta, que não danificam fisicamente o banco de dados. Assim, não se terá mais conhecimento do momento exato da transação que estava processando, consequentemente, ela será desfeita. Ainda há as transações que foram realizadas com sucesso, mas que não tiveram tempo de ser transferidas da memória intermediária do banco de dados para o banco de dados físico. Uma maneira de se controlar é utilizando um método conhecido como check point (ponto de controle), de tempo em tempo o sistema faz as anotações cronológicas. Tem como objetivo: • passar fisicamente o conteúdo das memórias intermediárias do banco de dados para o banco de dados físico; • passar fisicamente o registro especial do ponto de controle para outra parte que não a anotação cronológica física. Ponto de checagem (Tempo, tc) Falha no sistema (Tempo, tf) Tempo T5 T4 T3 T2 I1 tftc Figura 36 – Linha do tempo de uma transação RED Nesse exemplo da figura 36, o ponto de checagem foi feito quando as transações T1 e T5 já tinham começado e a transação T4 já tinha acabado. A T3 começou e terminou depois do ponto de checagem, e a T2 começou depois e não terminou a sua execução. Neste caso,algumas terão que ser refeitas e outras desfeitas. 81 ADMINISTRAÇÃO DE BANCO DE DADOS Tabela 1 Refeitas Desfeitas T3 T1 T5 T2 As transações T3 e T5 terão que ser refeitas, pois, antes de acontecer a falha do sistema, elas já tinham sido finalizadas. Então, o conteúdo concluído até o ponto de checagem precisa ser confirmado e, assim, finalizar de forma correta a transação. Já T1 e T2 precisam ser desfeitas, pois, quando a falha ocorreu, a sua execução não havia terminado. É necessário que apague tudo o que foi feito, ou seja, desfazer, para que seja reiniciada a transação. 7.2.2 Falhas dos meios físicos São as falhas que ocorrem danificando o disco rígido, ou seja, certa parte dos dados é destruída. Exemplo: colapso de uma cabeça de disco ou falha no controlador de disco. É importante sempre ter cópia do banco (backup), pois, em uma falha dos meios, se podem perder inúmeras informações, o que irá trazer prejuízo ou danos ao usuário. Nesse caso, o sistema precisa ser recriado em outra máquina. Para que o impacto dessas ações de reconstrução do ambiente seja o menor possível, na visão do usuário, existem diversas soluções que envolvem não só a substituição do disco danificado, mas todo um projeto de contingência e alta disponibilidade do seu ambiente como um todo. A arquitetura do seu ambiente deve ser projetada em conjunto com a equipe de analistas de suporte e de redes. Projetos desse tipo costumam envolver a alta administração da organização, pois o investimento é alto e às vezes significa a contração de serviços de data center especializados. Tudo vai depender do valor dos dados da empresa e de quanto vale o risco de perder os dados. 7.3 Concorrência Em um sistema em que existe a possibilidade de se ter inúmeras transações ocorrendo ao mesmo tempo, há a necessidade de um mecanismo de controle de concorrência, que assegure que uma transação não interfira em outra. Alguns problemas que podem surgir com a ausência deste mecanismo são: perda de atualização, dependência de uma transação não confirmada, análise inconsistente. Para evitar tamanho transtorno, é utilizado um mecanismo chamado bloqueio (lock), que permite segurança e consistência no banco de dados. Para entender melhor o que significa a perda de atualizações, vamos considerar a seguinte situação: duas pessoas editam o mesmo registro, uma altera o telefone e outra, o endereço; ao confirmarem, será gravada a última atualização. Isso ocorre por não haver nenhum tipo de controle no banco, mas essa situação pode ser contornada configurando-se o sistema para que não libere o registro quando ele estiver sendo usado por outro usuário. 82 Unidade IV O problema da dependência de uma transação não confirmada é que isso pode retornar para o usuário informações erradas, comprometendo muito a utilização do banco. Suponha que ocorra a seguinte situação: uma transação A faz um update, logo em seguida, uma transação B faz uma leitura no mesmo dado. Se, por algum motivo, houver um rollback na transação A, a transação B terá visto um dado que não mais existe, ou seja, o rollback desfez tudo da transação A, e a transação B fica desatualizada, oferecendo ao usuário informações inconsistentes. No exemplo a seguir, fica clara essa situação: a transação A teve sua alteração e, antes mesmo de ela ser confirmada, houve um rollback, resultando na desatualização dos dados fornecidos na transação B. Tabela 2 Transação A Tempo Transação B UPDATE T1 - - T2 READ ROLLBACK T3 - O problema da análise inconsistente: consideremos a seguinte situação em uma conta bancária: Tabela 3 Transação A Tempo Transação B Soma 50 T1 - Soma 20 T2 - - T3 READ - T4 Transferência (20) - T5 COMMIT Total 70 T6 - Como pode ser observado, as transações A e B estão utilizando a mesma conta bancária. A primeira faz a soma, e a segunda realiza uma transferência de dinheiro. O total da transação A retornará um resultado inconsistente, pois os dados alterados pela transação B não foram atualizados, e como ocorreu o commit (confirmação da transferência), a conta não teve o devido débito. 7.4 Bloqueio (Lock) Havendo duas transações, com ambas precisando do mesmo dado, elas deverão ser executadas uma após a outra; isso é possível quando se utiliza a técnica do bloqueio. Existem dois tipos de bloqueios: • Bloqueio compartilhado: pode haver inúmeras pessoas utilizando o mesmo dado. Quando uma transação B solicita um dado que está sendo utilizado pela transação A, B fica em estado de espera até que A libere o bloqueio. 83 ADMINISTRAÇÃO DE BANCO DE DADOS • Bloqueio exclusivo: ninguém mais tem acesso àquele dado. Todas as operações de banco de dados geram bloqueios, até mesma a leitura. Observação Não pode haver dois bloqueios exclusivos nem um compartilhado e exclusivo, senão não é exclusivo. A técnica do bloqueio pode resolver os problemas encontrados na concorrência. Como foi visto, se um mesmo registro estiver sendo utilizado ao mesmo tempo por usuários diferentes, e estes, por sua vez, fizerem alterações nele, permanecerá a última mudança feita. Com o bloqueio, as transações A e B podem utilizar o mesmo registro, sendo que o último a solicitar os dados permanece em estado de espera, embora haja desta forma um conflito entre os bloqueios gerado pelas transações. Por razões análogas, a transação que primeiro utilizava o registro entra em estado de espera, e a outra transação é executada. E assim temos um problema que o bloqueio traz: o impasse, em que as duas transações são incapazes de prosseguir, eliminando desta forma a perda de atualização. Outro cenário possível é quando a transação B solicita um registro que está sendo utilizado pela transação A, nesse caso, a transação B entra em estado de espera. Enquanto A não alcançar o ponto de sincronismo (ROLLBACK ou COMMIT), B não é liberado para prosseguir. Assim que A terminar sua execução, B é liberado e, neste ponto, ele já pode obter um valor confirmado pela transação anterior, seja por ROLLBACK ou por COMMIT, mas, de qualquer maneira, B não dependerá de uma atualização não confirmada. Se uma transação A está em bloqueio compartilhado, e B solicita implicitamente um bloqueio exclusivo no mesmo registro, B fica em estado de espera até que A libere. Assim que liberado, a transação A não consegue mais ser executada, pois a solicitação implícita de bloqueio compartilhado entra em conflito com o bloqueio exclusivo feito por B, forçando um impasse no qual ambos ficam na espera. Observação Impasse é uma situação em que as transações ficam paradas à espera da outra para liberar bloqueio. Isso pode acontecer com várias transações, não necessariamente com duas. Quando houver um impasse, é necessário que o sistema detecte, liberando os bloqueios, permitindo assim que continue a transação. A maneira como será feito isso, o programador resolverá, mas é importante que o usuário não tenha conhecimento disso. 84 Unidade IV 7.5 Arquitetura básica do ambiente de banco de dados Você pode ter um ambiente de alta disponibilidade e desempenho por meio da arquitetura de hardware combinada com os recursos de software. As técnicas básicas envolvem dois conceitos: cluster e replicação. Cluster é nome dado a um conjunto de computadores ligados em rede que funcionam como se fossem um único computador, compartilhando recursos de memória, armazenamento e processamento. Essa técnica faz parte do plano de contingência e alta disponibilidade, pois você pode desenvolver o seu projeto de banco de dados distribuídos. 7.5.1 Cluster de alto desempenho Também conhecido como cluster de alta performance, ele funciona permitindo que ocorra uma grande carga de processamento com um volume alto de gigaflops em computadores comuns. 7.5.2 Cluster de alta disponibilidade São clusters cujos sistemas conseguem permanecer ativos por um longo período de tempo e em plena condição de uso. Pode-se dizer que eles nunca param seu funcionamento, além disso, conseguem detectar erros,protegendo-se de possíveis falhas. 7.5.3 Cluster para balanceamento de carga Esse tipo de cluster tem como função controlar a distribuição equilibrada do processamento. Requer um monitoramento constante na sua comunicação e em seus mecanismos de redundância, pois, se ocorrer alguma falha, haverá uma interrupção no seu funcionamento. Figura 37 – Exemplo de esquema de um cluster 85 ADMINISTRAÇÃO DE BANCO DE DADOS 7.6 Replicação Replicação de banco de dados é a cópia dos dados do banco de dados original para outro banco de dados. São vantagens da replicação em banco de dados: • sistema menos sensível a falhas, por causa da redundância; • trabalho com balanceamento da carga; • backup on-line dos dados. A replicação de banco de dados também pode ser usada para garantir a integração e a integridade entre os bancos de dados de sistemas com modelo de dados relacional distribuídos. Nesse caso, o sistema gerenciador de replicação de dados precisa ser capaz de replicar as transações em tempo real. Geralmente, os servidores de replicação só conseguem replicar uma imagem do banco (snapshot), portanto, não dá para implementar uma arquitetura desse tipo. Saiba mais Para conhecer essa solução, recomendamos a leitura do case de sucesso da USP, que está disponível no site da Sybase por meio do link <http:// www.sybase.com.br/files/Success_Stories/USP_Replication_Server.pdf>. Acesso em: 14 jun. 2012. 7.6.1 Replicação síncrona (eager) A transação só é concluída após todos os servidores fazerem commit. É conhecida como phase 2 commit, ou seja, o commit é realizado em duas fases. Apesar de garantir consistência de transação entre servidores, é de baixa escalabilidade. Outra característica dessa arquiteta é a indisponibilidade em caso de queda de rede. Foi muito pesquisada nos últimos dez anos, várias implementações foram realizadas, mas é considerada impraticável para a maioria dos ambientes de produção por ser de altíssimo custo e de difícil manutenção. 7.6.2 Replicação assíncrona (lazy) A transação é concluída localmente e depois replicada, portanto, com alta escalabilidade. Não garante consistência de transação direta entre os servidores. Para ter essa consistência, a implementação deve ser modelada e implementada de tal forma que garanta essa consistência. É de baixo custo e resistente a quedas de rede. Esse tipo de replicação foi implementado na USP e é usado até hoje. 86 Unidade IV 7.6.3 Replicação unidirecional (master-slave) A replicação é realizada sempre no mesmo e único sentido, de um banco de dados A para um banco de dados B. É usado normalmente para hot-backup de servidores de banco de dados e também utilizado para melhoria de desempenho de consultas em sites remotos. Apenas a base master recebe atualizações. Pouco sujeito a inconsistências, mesmo no modelo lazy. 7.6.4 Replicação multidirecional (multi-master) A replicação é realizada em vários sentidos. Usada para garantir alta disponibilidade e garantir melhor desempenho tanto em consultas quanto em atualizações. Todas as bases podem receber atualizações. Sujeito a inconsistências no modelo lazy. 7.6.5 Exemplo de funcionamento de um cluster com replicação Na figura a seguir, temos uma estrutura em cluster de alta disponibilidade, em que os servidores de banco de dados estão em uma estrutura de replicação master-slave. Aplicação Leitura e gravação Replicação Master_db Slave_db Figura 38 – Estrutura de cluster Suponha que o servidor principal (master) de banco de dados apresente alguma falha e o torne indisponível. Existem diversos softwares por meio dos quais você consegue configurar o monitoramento da comunicação entre os servidores. Assim que for detectada a falha de comunicação, ela deve ser redirecionada automaticamente para conectar com o servidor replicado; em alguns minutos, a aplicação começará a funcionar a partir do servidor (slave). Leitura e gravação Aplicação Replicação Master_db Slave_db Figura 39 87 ADMINISTRAÇÃO DE BANCO DE DADOS 8 MODELO DIMENSIONAL A modelagem dimensional é uma técnica voltada especialmente para a implementação de um modelo que permita a visualização de dados de forma intuitiva e com altos índices de performance na extração de dados. É a técnica de projeto mais utilizada para a construção de data warehouses (DW), que busca um padrão de apresentação dos dados de fácil visualização pelo usuário final e bom desempenho para consultas. O modelo dimensional, ou multidimensional, detecta os relacionamentos inerentes aos dados para armazená-los em matrizes multidimensionais conhecidas como cubo de dados ou hipercubo, caso o cubo possua mais de três dimensões, conforme a figura a seguir: Figura 40 – Representação gráfica de um cubo de dados Permite que os dados sejam consultados diretamente em qualquer combinação de dimensões, sem a necessidade de consultas complexas no banco de dados. Ferramentas próprias proporcionam a visualização dos dados de acordo com as dimensões escolhidas pelo usuário. 88 Unidade IV O modelo dimensional é composto por uma tabela dominante, com múltiplas junções, chamada de tabela de fatos, e de um conjunto de tabelas conhecidas como tabelas de dimensão. Tipos de esquema do modelo dimendisional: • Esquema estrela (star schema): é um dos mais usados na modelagem dimensional e consiste em uma tabela de fatos central e uma tabela para cada dimensão. • Esquema floco de neve (snowflake): é uma variação do esquema estrela em que algumas tabelas de dimensão são normalizadas, criando-se uma tabela de dimensão secundária cuja chave se torna estrangeira na tabela de dimensão primária. Essa técnica interfere no entendimento dos dados pelo usuário e na performance de algumas consultas, portanto, não deve ser usada como regra geral, embora às vezes possa ser interessante ou até necessária. 8.1 Fatos Os fatos são os atributos do comportamento. São medidas de ações que ocorrem entre diferentes objetos ou dimensões. Em geral, são numéricos ou aditivos (podem ser somados) e raramente textuais. A tabela de fatos é a tabela principal de um modelo dimensional. É formada por uma chave, composta pelas chaves das dimensões relacionadas e de um ou mais fatos mensuráveis, ou medidas, em geral numéricas, para cada conjunto das dimensões. Observe-se que muitas vezes não existe um valor associado para um cruzamento de dimensões. O fato representa uma medição do negócio, isto é, fato é tudo aquilo que pode ser medido. A lista de dimensões define a granularidade da tabela de fatos (qual é o escopo da medição). As características básicas de um fato são: • variam ao longo do tempo; • tem valores numéricos; • seu histórico cresce com o passar do tempo. Uma linha da tabela de fato corresponde a uma medição. Uma medição é uma linha da tabela de fatos. Todas as tabelas de fatos estão alinhadas com a mesma granularidade. As medições dos fatos devem ser numéricas e aditivas. As tabelas de fato representam relações N:N. As medidas podem ser classificadas em: • Valores aditivos: medidas em que podem ser aplicados os operadores, tais como soma, porcentagem etc. Faz sentido adicioná-los continuamente e sobre todas as dimensões, por exemplo, vendas em R$ e vendas em unidades. 89 ADMINISTRAÇÃO DE BANCO DE DADOS • Valores não aditivos: medidas que não podem ser manipuladas livremente, como porcentagtem ou valores relativos, tais como temperatura e condição do tempo. 8.2 Dimensão As dimensões descrevem pessoas, lugares e coisas relacionadas a um negócio. As tabelas de dimensão são formadas por uma chave primária e por atributos que a descrevem. Quanto maior o tempo dedicado à descrição dos atributos, ao preenchimento dos seus valores e à garantia da qualidade dos dados, melhor será o DW. Cada dimensão tem sua própria granularidade, que não pode ser menor que da tabela de fatos, mas pode ser maior. Dimensões determinam o contexto em que ocorreram os fatos. No modelo dimensional, cada dimensão está associada a um oumais fatos, sendo estas usualmente mapeadas em entidades não numéricas e informativas. As dimensões contêm descritores textuais da empresa. As tabelas de dimensão são pontos de entrada para a tabela de fatos. Atributos de dimensões eficazes produzem recursos analíticos eficientes. As dimensões implementam a interface de usuário para o DW. • maioria dos fatos envolve pelo menos quatro dimensões básicas: onde, quando, quem e o quê: • dimensão onde determina o local em que o fato ocorreu (local geográfico, filial); • dimensão quando é a própria dimensão tempo; • dimensão quem determina quais entidades participaram do fato (cliente, fornecedor, funcionário); • dimensão o quê determina qual é o objeto do fato (produto, serviço). Observação Existem casos em que algumas dimensões podem conter milhões de entradas, por exemplo, a dimensão cliente em uma companhia telefônica; neste caso, a navegação por essa dimensão pode tornar-se demorada. Pode- se, neste caso, utilizar índices nos atributos que sejam objetos de navegação. Frequentemente, os campos mais utilizados em uma dimensão grande possuem um domínio pequeno, ou seja, assumem uma pequena quantidade de valores. Em uma dimensão cliente, esses atributos podem ser atributos demográficos, como sexo, faixa etária e classe social. Neste caso, pode-se optar pela criação de uma minidimensão separada da dimensão cliente para aumentar a eficiência da navegação. Atributos como o número da nota fiscal de venda, aparentemente, deveriam fazer parte da tabela de fatos. Em um banco de dados relacional, ele seria o atributo determinante do cabeçalho da nota fiscal. Em um banco de dados dimensional, normalmente todos os atributos determinados pelo número da nota 90 Unidade IV foram armazenados em dimensões próprias e fariam parte da chave primária dos itens da nota. Ainda assim, pode-se utilizar esse atributo para agrupar os fatos pelo documento original. Atributos desse tipo são representados como dimensões degeneradas (descaracterizadas), isto é, chaves de dimensão sem uma dimensão correspondente. 8.2.1 Chave artificial (surrogate key) Utilizar uma chave candidata como chave primária de uma dimensão pode causar problemas caso esta chave não seja absolutamente estável ao longo do tempo. Uma modificação em uma chave de uma dimensão pode ocasionar um grande volume de mudanças nas tabelas de fato relacionadas a essa dimensão. A solução para esse problema é utilizar chaves artificiais absolutamente estáveis ao longo do tempo. Uma chave artificial é um campo inteiro e autoincremental, que aumenta a cada novo registro incluído na tabela de dimensão. 8.3 Medidas Medidas são atributos que quantificam um determinado fato, representando o desempenho de um indicador em relação às dimensões que fazem parte do fato. O contexto de uma medida é determinado em função das dimensões do fato (MACHADO, 2000). 8.4 Granularidade A granularidade é o nível de detalhe de um banco de dados dimensional. É um dos pontos mais importantes no projeto de um DW porque: • refere-se ao nível de detalhe em que serão armazenados os dados no DW, quanto maior o detalhamento, mais baixo o nível de granularidade; • afeta o volume de dados do DW e, portanto, a performance na extração de informações. Um DW pode ser implementado em níveis duais de granularidade ao longo do tempo. É possível manter as informações mais recentes em um baixo nível de granularidade, aumentando assim as possibilidades de extração de informações. À medida que os dados vão ficando obsoletos, é possível resumi-los em um alto nível de granularidade de forma a manter a performance. Observação A granularidade define o nível de detalhe dos dados existentes no DW. Quanto maior o nível de detalhes, mais baixo o nível de granularidade e vice-versa. Ela determina o volume de dados do DW e o tipo de consulta que pode ser atendida. 91 ADMINISTRAÇÃO DE BANCO DE DADOS Granularidade alta: • Economia de espaço em disco. • Redução na capacidade de atender consultas. Granularidade baixa: • Grande quantidade de espaço em disco. • Aumento na capacidade de responder a qualquer questão. Quadro 1 Fatos Dimensões Medidas Representam um item, transação ou evento de negócio. Determinam o contexto de um assunto de negócios, como uma análise de vendas de produtos. São os atributos numéricos que representam um fato e são determinadas pela combinação das dimensões que participam dele. Refletem a evolução dos negócios. São os balizadores de análise de dados. Representam o desempenho de um indicador de negócios relativo às dimensões que participam de um fato. São representados por conjuntos de valores numéricos (medidas) que variam ao longo do tempo. Normalmente não possuem atributos numéricos, pois são somente descritivas e classificatórias dos elementos que participam de um fato. Podem possuir uma hierarquia de composição de seu valor. 8.5 Agregados Agregados são resumos construídos a partir de fatos individuais, inicialmente por questões de performance, ou quando o ambiente dos fatos é inexpressivo na menor granularidade. Agregados permitem que as aplicações antecipem os resultados a serem pesquisados pelo usuário, eliminando a necessidade de se repetirem cálculos comumente realizados. Múltiplos agregados podem ser construídos, representando os agrupamentos mais comuns dentro das dimensões do DW a fim de aumentar a performance. A contrapartida ao aumento da performance é a elevação do consumo de espaço de armazenamento. Observação Resumos armazenados com o objetivo de melhorar o desempenho de consultas, o agregado é composto por registros na tabela de fatos que representam o resumo do registro de nível básico da tabela de fatos, associados a registros agregados das dimensões. 92 Unidade IV 8.6 Passos do projeto de DW 1) Decidir qual(is) processo(s) do negócio devemos modelar, por meio da combinação do conhecimento do negócio com o conhecimento dos dados que estão disponíveis. 2) Definir o grão do processo do negócio. O grão é o nível fundamental atômico de dados que representará o processo na tabela de fatos. 3) Escolher as dimensões que serão aplicadas a cada registro da tabela de fatos. Para cada dimensão escolhida, descrever todos os diferentes atributos de dimensão (campos) que preencham cada tabela dimensional. 4) Escolher os fatos mensuráveis que irão popular cada registro da tabela de fatos. Fatos mensuráveis são quantidades numéricas aditivas, como quantidade vendida e vendas (em espécie). Funcionalmente, o processo de data warehousing engloba três etapas: • extração dos dados operacionais de diversas fontes (banco de dados, planilhas, arquivos convencionais etc.); • organização e integração dos dados em um banco de dados, o DW; • acesso aos dados integrados de forma eficiente e flexível pelo usuário final. Fontes de dados: dados extraídos, em geral, do ambiente operacional da empresa para o ambiente de tomada de decisões. Podem estar armazenados em bancos de dados de vários modelos, planilhas eletrônicas (Excel, por exemplo), arquivos convencionais ou até em documentos e textos. Podem ser inclusive externos à organização, por exemplo, indicadores econômicos. Área de transporte de dados (data staging area): representa a área intermediária de armazenamento entre as fontes de dados e o DW, onde é implementado o processo de ETL (Extract, Transform and Load – extração, transformação e carga/atualização). Os dados são extraídos do ambiente operacional para a área de transporte. São transformados quando necessário, para uniformizar formatos e conteúdos como: dados iguais com nomes diferentes, duplicação de dados, codificações distintas para o mesmo dado etc. A transformação inclui o processo de limpeza, que elimina erros nos dados. Em seguida, são carregados no DW. Existem ferramentas ETL (back-end) para implementar esses processos, tanto gratuitas quanto pagas. 93 ADMINISTRAÇÃO DE BANCO DE DADOS Figura 41 – Ferramentade ETL Pentaho Saiba mais Para conhecer mais sobre a ferramenta Open Source Pentaho, recomendamos os sites: <www.pentaho.com> <kettle.pentaho.com> <community.pentaho.com/projects/bi_platform> <softwarelivre.org/pentaho> <pentahobrasil.org> Servidor de apresentação: máquina física de destino onde os dados do DW são organizados e armazenados para acesso direto pelos usuários finais, geradores de relatório e outras aplicações. Três sistemas bem distintos são necessários para o funcionamento de um DW: o sistema fonte, a área de transporte de dados e o servidor de apresentação. Se esse servidor for um banco de dados relacional, as tabelas serão organizadas em esquemas estrela. Como a maioria das grandes implementações tem sido em bancos relacionais, a maior parte das discussões específicas do servidor de apresentação é direcionada nesse sentido. Processo de negócio: conjunto coerente de atividades de negócio que fazem sentido aos usuários dos nossos DW. Essa definição é propositalmente um pouco vaga. Neste contexto, assumimos que um 94 Unidade IV processo de negócio é um agrupamento útil de recursos de informação com um tema coerente. Em muitos casos, implementaremos um ou mais datamarts para cada processo de negócio. Armazenamento de dados operacionais – ODS (Operational Data Store): esse conceito tem tido muitas definições para ser útil. Essencialmente, pode representar um sistema operacional separado servindo como ponto de integração entre diversos sistemas operacionais ou contendo dados integrados em nível detalhado, que seria na verdade parte do DW. Olap (On-line Analytic Processing): processamento analítico on-line é um conjunto de princípios vagamente definidos que fornecem uma estrutura dimensional de suporte à tomada de decisões (consulta e apresentação de textos e dados numéricos). O termo OLAP também é usado para definir um grupo de fornecedores que oferecem produtos de bancos de dados multidimensionais e não relacionais orientados ao suporte à tomada de decisões. Saiba mais Rolap: Relational-Olap (implementada em banco de dados relacional). Molap: Multidimensional-Olap (implementada sem depender de banco de dados relacional). Dolap: Desktop-Olap (utiliza os recursos da máquina cliente, portanto, é extremamente limitada). 8.7 Data mart (DM) O data mart é uma parte do DW. Dentro de uma empresa, enquanto o DW armazena os dados da empresa inteira, o DM armazena os dados de um único departamento, por exemplo. É um subconjunto lógico de um DW. Tem escopo limitado, para atender a uma determinada área ou processo do negócio. Representa um projeto que pode vir a ser completado e não um empreendimento galático. Um DW é composto pela união de todos os seus DM. Estabelecemos certos requisitos específicos para cada DM: deve ser representado por um modelo dimensional e dentro de um mesmo DW. Todos esses DM devem ser construídos a partir de dimensões e fatos conformes, que têm o mesmo significado em todas as tabelas. 8.8 Ferramentas de acesso aos dados Possibilitam a exploração do DW pelo usuário final. Variam de simples ferramentas de consultas ad hoc e geradores de relatórios, aplicações para usuários finais que acessem os dados do DW, a ferramentas de análises sofisticadas para Olap e mineração de dados. 95 ADMINISTRAÇÃO DE BANCO DE DADOS Ferramentas de consultas ad hoc permitem ao usuário formular suas próprias consultas, manipulando diretamente os dados cadastrados. EIS – Executive Information Systems: sistemas que examinam uma perspectiva ampla dos dados e oferecem informações comparativas e claras para tomada de decisões. Mineração de dados (data mining): técnicas e ferramentas de análise de dados com a função de descobrir e entender tendências, comportamentos, anomalias e outras relações entre os dados. Olap – On-line Analytical Processing: é uma “categoria da tecnologia de software que permite que os analistas, gerentes e executivos obtenham, de maneira rápida, consistente e interativa, o acesso a uma variedade de visualizações possíveis da informação” (INMOM et al., 2005). Key performance: indicador-chave de desempenho. Serve para acompanhar o desempenho de uma métrica. Para isso, necessita de outra métrica para servir de base, por exemplo, meta VS realizado. São exibidos para os usuários na forma de semáforos, conta-giros, termômetros ou figuras que sirvam para chamar bem a atenção, conforme a figura a seguir. Figura 42 Dashboard é uma página que combina diversas informações a respeito de um mesmo tema. Essas informações são apresentadas de formas diferentes. Em um mesmo dashboard, podem coexistir relatórios, gráficos e KPis. A seguir, um exemplo de dashboard. 96 Unidade IV Figura 43 Esse dashboard, para quem gosta de acompanhar a Champions League, o campeonato de futebol europeu, fornece, além de resultados de jogos, classificação de times e várias outras estatisticas sobre os times e seus jogadores. Resumo A importância dos sistemas de bancos de dados nas organizações é vista pela crescente valorização dos bancos de dados e dos sistemas gerenciadores de bancos de dados, o que gera consequentes investimentos em técnicas de gerenciamento, monitoramento, backup e restauração de dados e em todo o processo que envolve a importância financeira de manter a integridade dos bancos de dados. Um problema muito real refere-se ao gerenciamento de todas as contas bancárias em sistemas de arquivos permanentes de um determinado banco. Esse sistema possui uma série de programas aplicativos necessários para a manipulação por parte dos usuários, que permitem: • débito e crédito em outra conta; • um programa para adicionar uma nova conta; • fazer pagamentos e depósitos; • calcular aplicações; • inserir novas alíquotas. 97 ADMINISTRAÇÃO DE BANCO DE DADOS Esses aplicativos só foram desenvolvidos porque surgiram problemas e necessidades da organização bancária, e isso significa um processo contínuo, pois as aplicações são desenvolvidas conforme vão surgindo as necessidades. O ambiente de data warehouses (DW) integra informações provenientes de uma grande variedade de bancos de dados operacionais em um único banco de dados lógico, que pode ser visto como um repositório central desenvolvido para facilitar o processo de suporte à decisão. Segundo Inmom et al. (2005), DW é uma coleção de dados orientados por assuntos, integrados, não voláteis e variáveis com o tempo, para suporte ao processo gerencial de tomada de decisão. Como se trata de uma implementação estratégica, o DW deve utilizar equipamentos de tecnologia aberta, para não deixar a empresa atrelada a um único fornecedor, isso para não criar uma dependência tanto no caso de implementação tecnológica como na manutenção e suporte. Um DW corporativo constitui a modalidade mais robusta. São soluções geralmente adotadas por grandes corporações que justifiquem o porte desse tipo de solução (maiores que 100 Gb), dois a três anos para a implementação e investimentos na ordem de seis a sete milhões de dólares. Atualmente, esse custo pode ser reduzido de forma substancial com a adoção de soluções open source. A escolha da modalidade de DW deve considerar outros aspectos, como: custo, tempo de desenvolvimento, ferramenta e consultoria. Exercícios Questão 1. A Administração de Banco de Dados é um conjunto de atividades responsáveis pela manutenção e gerenciamento de um banco de dados. O profissional que executa essas atividades é chamado de DBA (DataBase Administrator). O DBA é responsável também pela criação de backups, que servem para a recuperação de dados, caso ocorram problemas no hardware ou nos sistemas SGBDs. Todos os arquivos que contêm os bancos de dados são de responsabilidade do DBA que, além de guardar os arquivos, visa zelar pelas condições dos mesmos, pela segurança dos dados, acessibilidade, desempenho das máquinas e processos e no desenvolvimento de equipe de testes de todo o planejamento de banco de dados. Na prática,busca a melhor maneira de organizar, selecionar e armazenar todos os dados, avaliando não somente a parte técnica, mas as pessoas que irão utilizá-los. Considerando os conceitos sobre a Administração de Banco de Dados, examine as afirmações a seguir e indique a alternativa incorreta: A) O DBA altera e testa todos os procedimentos antes de abrir acesso dos dados aos seus usuários ou aplicativos, bem como gerenciar o direito de acesso de cada setor e pessoa. 98 Unidade IV B) O banco de dados deve ser simples e eficaz, para isso é necessário o trabalho de um administrador de dados que saiba projetar, instalar, atualizar, modificar, proteger e consertar erros na plataforma e nos bancos de dados. C) Na Administração de Banco de Dados há o trabalho de personalização e suporte de todo conteúdo de um determinado banco de dados. D) Na área comercial, institucional e social há grande demanda por profissionais de Banco de Dados que atuam em sistemas de lojas, catálogos, serviços de comunicação, finanças, educacional e demais áreas. E) As áreas de TI mais modernas utilizam ferramentas de automação em BD e vêm eliminando a necessidade de pessoas especializadas em Banco de Dados, tal como os profissionais denominados de DBAs. Resposta correta: alternativa E. Análise das alternativas De acordo com os autores e especialistas em TI, nos dias de hoje, é praticamente impossível imaginar um cenário no qual uma aplicação ou sistema de aplicações não precise em ao menos uma de suas etapas consultar, manipular ou armazenar as informações resultantes dos seus processos lógicos. De nada adiantaria todo o poder de processamento dos computadores atuais, as redes de altíssima velocidade e os softwares desenvolvidos com tecnologia de ponta se não fosse possível armazenar os dados de forma eficiente e segura. Os dados precisam estar disponíveis, consistentes, íntegros, definidos, confiáveis, compartilhados e em segurança para que as decisões gerenciais sejam ágeis, precisas e oportunas. Dentro desse contexto é que entra o Administrador de Banco de Dados. A) Alternativa correta. Justificativa: o DBA é responsável por auxiliar na modelagem de dados, na validação dos modelos de dados e na integração dos modelos com modelos corporativos. B) Alternativa correta. Justificativa: o DBA é responsável por definir e manter padrões e normas de segurança, instalar e manter SGBDs e criar e manter instâncias de banco de dados. C) Alternativa correta. Justificativa: na Administração de Banco de Dados é necessário que o DBA acompanhe os tempos das consultas e administre os backups e espaços utilizados pelas aplicações usuárias do Banco de Dados da empresa. 99 ADMINISTRAÇÃO DE BANCO DE DADOS D) Alternativa correta. Justificativa: como as bases de dados corporativas estão crescendo intensamente e tornando-se cada vez mais importantes como fontes de informações necessárias à operacionalização das empresas e também como fontes de informações para o processo de tomada de decisão, torna-se necessário o papel do Administrador de Banco de Dados, que deve ser um profissional especialista, capacitado para entender e prestar suporte técnico em cada SGBD utilizado pela organização. E) Alternativa incorreta. Justificativa: o DBA é o responsável pela “saúde física” dos dados, isto é, pela manutenção e refinamento dos bancos de dados corporativos. Não existe, na atualidade, sistemas de Banco de Dados que prescidem de um Administrador de Banco de Dados. Questão 2. Gerentes e executivos das organizações nacionais e internacionais necessitam de recursos computacionais que forneçam subsídios para apoio ao processo de decisão, sobretudo nos níveis tático e estratégico das organizações. A tecnologia Data Warehouse (DW) surgiu em meio às dificuldades que as organizações passaram a sentir pela quantidade de dados que suas aplicações estavam gerando e à dificuldade de reunir estes dados de forma organizada e consolidada para uma análise mais eficiente. A idéia do DW é reunir em um único local somente os dados considerados úteis para as tomadas de decisão. Diante desta necessidade, empresas têm utilizado os DWs para auxiliar nos processos corporativos de tomada de decisão. Considerando os conceitos sobre DWe, examine as afirmações a seguir e indique a alternativa incorreta: A) Conceitualmente, um DW é um conjunto de dados baseado em assuntos, integrado, não volátil, variável em relação ao tempo, e destinado a auxiliar em decisões de negócios. B) Um DW, quando é orientado a um assunto, aliado ao aspecto de integração permite reunir dados corporativos em um mesmo ambiente de forma a consolidar e apresentar informações sobre um determinado tema. C) Cada conjunto de dados, ao ser carregado em um DW, fica vinculado a um rótulo temporal que o identifica dentre os demais. D) Na medida em que um DW vai sendo carregado com as visões sumarizadas dos dados operacionais em um determinado período, podem-se realizar análises de tendências a partir dos dados. E) As diferenças entre um DW e bases de dados operacionais está no fato de que uma base de dados operacional é um banco de dados clássico que contém informações detalhadas e consolidadas a respeito do negócio em nível transacional. Resolução desta questão na plataforma. 100 FIGURAS E ILUSTRAÇÕES Figura 1 PETERCHEN.JPG. Disponível em: <http://www.csc.lsu.edu/~chen/>. Acesso em: 5 jul. 2012. Figura 43 DASHBOARD.JSP. Disponível em: <http://www.tablerochampions.com/site/champions/dashboard.jsp>. Acesso em: 15 jul. 2012. REFERÊNCIAS Textuais BEAULIEU, A. Aprendendo SQL. 1. ed. São Paulo: Novatec, 2010. BOOCH, G.; RUMBAUGH, J. JACOBSON, I. UML – Guia do usuário. 13. ed. Rio de Janeiro: Elsevier, 2000. CHU, S. Y. Banco de dados: organização, sistemas e administração. São Paulo: Atlas, 1983. DATE, C. J. Introdução a sistemas de bancos de dados. Tradução da 7. ed. americana de Vandenberg Dantas de Souza. Rio de Janeiro: Campus, 2000. ELMASRI, R.; NAVATHE, S. B. Sistemas de banco de dados: fundamentos e aplicações. 4. ed. São Paulo: Pearson, 2005. HERRENO, E. Balanced scorecard e a gestão estratégica: uma abordagem prática. Rio de Janeiro: Elsevier, 2005. HUBBARD, D. W. Como mensurar qualquer coisa encontrando o valor do que é intangível nos negócios. Tradução de Ebréia de Castro Alves. Rio de Janeiro: Qualitymark, 2008. INMON, W. Building the DataWarehouse, 4. ed. New Jersey, USA: John Wiley and Sons, 2005. KIMBALL, R.; CASERTA, J. The Datawarehouse ETL toolkit. Boulder Creek, USA: Kimball Group, 2004. KIMBALL, R.; ROSS, M. The DataWarehouse Toolkit. New Jersey, USA: John Wiley and Sons, 2002. LEME FILHO, T. BI – Business Intelligence no Excel. Rio de Janeiro: Novaterra, 2012. MACHADO, F. N. R. Projeto de Data Warehouse. São Paulo: Érica, 2000. ___. Banco de dados: projeto e implementação. São Paulo: Érica, 2004. 101 ROLDÁN, M. C. Pentaho 3.2 Data Integration Beginner´s Guide. Birmingham, UK: Packt Publishing, 2010. SILBERSCHATZHENRY, A.; KORTHS, H. F.; SUDARSHAN, S. Sistema de banco de dados. 5. ed. Rio de Janeiro: Campus, 2006. SIMCSIK, T.; POLLONI, E. G. F. Tecnologia da informação automatizada. São Paulo: Berkeley, 2002. Sites <http://certificacaobd.com.br> <http://silasmendes.com/dba> <http://www.mcdbabrasil.com.br> <http://www.sybase.com/resources/blogs> <http://dbaforums.org/oracle> <www.kimballgroup.com> <education.oracle.com> <www.prometric.com> <www.microsoft.com/learning> <http://demo.phpmyadmin.net/master-config> <http://nosql-database.org> <http://softwarelivre.org> <http://www.softwarelivre.gov.br> 102 103 104 105 106 107 108 Informações: www.sepi.unip.br ou 0800 010 9000