Banco de Dados Desmistificado Andrew J. Oppel Banco de Dados Desmistificado Copyright © 2004 da Editora Alta Books Ltda. Todos os direitos reservados e protegidos pela Lei 5988 de 14/12/73. Nenhuma parte deste livro, sem autorização prévia por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônico, mecânico, fotográfico, gravação ou quaisquer outros. Todo o esforço foi feito para fornecer a mais completa e adequada informação, contudo a editora e o(s) autor(es) não assumem responsabilidade pelos resultados e usos da informação fornecida. Recomendamos aos leitores testar a informação, bem como tomar todos os cuidados necessários (como o backup), antes da efetiva utilização. Este livro não contém CD-ROM, disquete ou qualquer outra mídia. Erratas e atualizações: Sempre nos esforçamos para entregar a você, leitor, um livro livre de erros técnicos ou de conteúdo; porém, nem sempre isso é conseguido, seja por motivo de alteração de software, interpretação ou mesmo quando alguns deslizes constam na versão original de alguns livros que traduzimos. Sendo assim, criamos em nosso site, www.altabooks.com.br, a seção Erratas, onde relataremos, com a devida correção, qualquer erro encontrado em nossos livros. Avisos e Renúncia de Direitos: Este livro é vendido como está, sem garantia de qualquer tipo, seja expressa ou implícita. Marcas Registradas: Todos os termos mencionados e reconhecidos como Marca Registrada e/ ou comercial são de responsabilidade de seus proprietários. A Editora informa não estar associada a nenhum produto e/ou fornecedor apresentado no livro. No decorrer da obra, imagens, nomes de produtos e fabricantes podem ter sido utilizados, e desde já a Editora informa que o uso é apenas ilustrativo e/ou educativo, não visando ao lucro, favorecimento ou desmerecimento do produto/ fabricante. Produção: Editorial Editora Alta Books Tradução: Andreza Cardoso Revisão: Shirley Lima Diagramação: Leandro Zuhlke O código de propriedade intelectual de 1º de Julho de 1992 proíbe expressamente o uso coletivo sem autorização dos detentores do direito autoral da obra, bem como a cópia ilegal do original. Esta prática generalizada nos estabelecimentos de ensino, provoca uma brutal baixa nas vendas dos livros a ponto de impossibilitar os autores de criarem novas obras. Av. Nilo Peçanha, 155, cjs. 1101 a 1106 - Castelo Rio de Janeiro – RJ. CEP: 20020-100 Tel: 21 2532-6556/ Fax: 2215-0225 www.altabooks.com.br e-mail: [email protected] Para todos aqueles com quem aprendi muito sobre diversas coisas, incluindo muitos professores, alunos e co-autores que tive o prazer de conhecer. Sobre o autor Andrew J. (Andy) Oppel formou-se na The Boy’s Latin School of Maryland and of Transylvania University (Lexington, KY) em ciência da computação, em 1974. Desde então, atuou em várias áreas ligadas à ciência da computação, incluindo programador, programador/analista, arquiteto de sistemas, gerente de projetos, administrador sênior de bancos de dados, gerente de grupo de bancos de dados, consultor, designer de bancos de dados e arquiteto de dados. Há mais de 20 anos é professor no curso de extensão da Universidade da Califórnia (Berkeley) e, em 2000, recebeu o prêmio Honored Instructor Award. Seu trabalho como professor inclui o desenvolvimento de dois cursos de extensão na Universidade da Califórnia: “Conceitos de sistemas de gerenciamento de bancos de dados” e “Introdução a sistemas relacionais de gerenciamento de bancos de dados”. Ele também recebeu seu certificado Oracle 9i Database Associate em 2003. Atualmente, trabalha como o principal arquiteto de dados da Ceridian, empresa líder no fornecimento de soluções em recursos humanos. Além de sistemas de computação, Andy gosta de música (guitarra e vocal), rádio amador (vice-diretor da Pacific Division, American Radio Relay League) e futebol (juiz). Andy criou e implementou centenas de bancos de dados para uma grande variedade de aplicações, incluindo pesquisa médica, banco, seguro, fabricação de roupas, telecomunicações, comunicações sem fio e recursos humanos. Sua experiência com bancos de dados inclui IMS, DB2, Sybase, Microsoft SQL Server, Microsoft Access, MySQL e Oracle (versões 7, 8, 8i e 9i). Sumário Capítulo 1 .............................................................................. 1 Conceitos básicos do banco de dados ............................................................................................... 1 Propriedades de um banco de dados ................................................................................................. 1 A camada física ................................................................................................................................. 3 A camada lógica ................................................................................................................................ 4 A camada externa .............................................................................................................................. 4 Modelos predominantes de banco de dados ...................................................................................... 5 Um breve histórico dos bancos de dados ........................................................................................ 14 Por que se concentrar no modelo relacional? .................................................................................. 16 Capítulo 2 ........................................................................... 21 Explorando componentes do banco de dados relacional ................................................................ 21 Componentes conceituais do design de banco de dados ................................................................. 21 Relacionamentos um-para-um ......................................................................................................... 23 Relacionamento um-para-muitos .................................................................................................... 24 Relacionamentos muitos-para-muitos ............................................................................................. 25 Relacionamentos recursivoas .......................................................................................................... 26 Componentes lógicos/físicos do design do banco de dados ........................................................... 27 Restrições de chave primária ........................................................................................................... 30 Restrições referenciais ..................................................................................................................... 31 Tabelas de intersecção ..................................................................................................................... 34 Restrições NÃO NULO ................................................................................................................... 35 Restrições VERIFICAR .................................................................................................................. 35 Imposição de restrições usando ativadores ..................................................................................... 36 Capítulo 3 ........................................................................... 41 Consultas a bancos de dados baseadas em formulários .................................................................. 41 QBE: As raízes das consultas baseadas em formulários ................................................................. 41 Introdução ao Microsoft Access ...................................................................................................... 42 O painel de relações do Microsoft Access ...................................................................................... 44 O Modo Eestrutura de tabela do Microsoft Access ......................................................................... 45 Criando consultas no Microsoft Access .......................................................................................... 47 Capítulo 4 ........................................................................... 71 Introdução ao SQL .......................................................................................................................... 71 A história do SQL ............................................................................................................................ 72 Introdução ao Oracle SQL ............................................................................................................... 73 Onde estão os dados? ...................................................................................................................... 76 Data Query Language (DQL): O comando SELECT ..................................................................... 78 Associando tabelas .......................................................................................................................... 85 Funções Agregadas ......................................................................................................................... 88 Data Manipulation Language (DML) ............................................................................................... 90 O comando UPDATE ....................................................................................................................... 92 O comando DELETE ........................................................................................................................ 92 Comandos Data Definition Language (DDL) ................................................................................... 93 Restrições referenciais ..................................................................................................................... 94 Restrições únicas ............................................................................................................................. 95 Restrições de verificação ................................................................................................................. 95 Comandos Data Control Language (DCL) ....................................................................................... 97 Capítulo 5 ......................................................................... 101 O ciclo de vida do banco de dados ................................................................................................ 101 O método tradicional ..................................................................................................................... 101 Conduzir entrevistas ...................................................................................................................... 104 Conduzir uma pesquisa ................................................................................................................. 104 Observação .................................................................................................................................... 105 Análise de documentos .................................................................................................................. 105 Métodos não-tradicionais .............................................................................................................. 108 Capítulo 6 .......................................................................... 113 Design lógico do banco de dados usando a normalização ............................................................ 113 A necessidade de normalização ..................................................................................................... 114 Aplicando o processo de normalização ......................................................................................... 116 Formulário normal Boyce-Codd ................................................................................................... 124 Quarto formulário normal ............................................................................................................. 126 Quinto formulário normal ............................................................................................................. 126 Formulário normal de domínio e chave (DKNF, Domain-key Normal Form) ............................. 127 Desnormalização ........................................................................................................................... 127 Problemas práticos ........................................................................................................................ 127 Os modos de exibição do usuário .................................................................................................. 128 Solução do autor ............................................................................................................................ 130 Os modos do usuário ..................................................................................................................... 133 Solução do autor ............................................................................................................................ 135 Capítulo 7 ......................................................................... 139 Modelagem de dados e processos ................................................................................................. 139 Modelagem do relacionamento com entidades ............................................................................. 139 Formato de Chen ........................................................................................................................... 140 O formato IDEF1X ........................................................................................................................ 141 Modelo de processo ....................................................................................................................... 146 Relacionando entidades e processos ............................................................................................. 152 Capítulo 8 .......................................................................... 157 Design físico do banco de dados ................................................................................................... 157 Desenvolvendo tabelas .................................................................................................................. 157 Implementando os subtipos como são ........................................................................................... 160 Implementando cada subtipo como uma tabela discreta ............................................................... 161 Transformando subtipos na tabela de supertipos .......................................................................... 162 Convenções de nomenclatura de tabelas ....................................................................................... 163 Convenções de nomenclatura de colunas ...................................................................................... 163 Convenções de nomenclatura de restrições ................................................................................... 164 Convenção de nomenclatura de índices ........................................................................................ 164 Convenções de nomenclatura de modos de exibição .................................................................... 164 Integrando regras da empresa e integridade de dados ................................................................... 165 Desenvolvendo modos de exibição ............................................................................................... 169 Adicionando índices para o desempenho ...................................................................................... 170 Capítulo 9 ......................................................................... 175 Conectando bancos de dados ao mundo externo .......................................................................... 175 Modelos de distribuição ................................................................................................................ 175 Modelo servidor/cliente de três camadas ...................................................................................... 179 O modelo cliente/servidor de N camadas (computação de Internet) ............................................ 180 Conectando bancos de dados à Web ............................................................................................. 182 CGI (Common Gateway Interface) ............................................................................................... 184 Server-Side Includes ..................................................................................................................... 184 Gateways não-CGI ........................................................................................................................ 185 Conectando bancos de dados a aplicativos ................................................................................... 185 JDBC (Java Database Connectivity) ............................................................................................. 186 Capítulo 10 ....................................................................... 191 Segurança do banco de dados ....................................................................................................... 191 Por que a segurança é necessária? ................................................................................................. 191 Segurança do servidor do banco de dados .................................................................................... 192 Isolar a rede da empresa da Internet .............................................................................................. 193 Proteger todo acesso à rede sem fio .............................................................................................. 195 Cliente do banco de dados e segurança de aplicativo ................................................................... 197 Segurança de acesso ao banco de dados ....................................................................................... 199 Segurança do banco de dados no Microsoft SQL Server e no Sybase ......................................... 200 Segurança do banco de dados no Oracle ....................................................................................... 202 Exemplos de privilégio do sistema do Microsoft SQL Server (servidor e comando) .................. 204 Exemplos de privilégio do sistema do Oracle ............................................................................... 204 Privilégios de objeto ...................................................................................................................... 205 Monitoramente e auditoria de segurança ...................................................................................... 206 Capítulo 11 ........................................................................ 211 Implementação do banco de dados ................................................................................................ 211 Processamento de cursos ............................................................................................................... 211 Gerenciamento de transações ........................................................................................................ 213 Suporte para transações no Microsoft SQL Server ....................................................................... 214 Suporte para transações no Oracle ................................................................................................ 215 Bloqueio e impasse do banco de dados ......................................................................................... 215 Ajuste de desempenho ................................................................................................................... 219 Ajuste de consultas ao banco de dados ......................................................................................... 219 Controle de alterações ................................................................................................................... 222 Capítulo 12 ....................................................................... 227 Bancos de dados para processamento analítico online ................................................................. 227 Armazenamentos de dados ............................................................................................................ 227 Arquitetura da tabela de resumo .................................................................................................... 229 Arquitetura de armazenamento de dados do esquema de estrela .................................................. 230 Bancos de dados multidimensionais .............................................................................................. 232 Mineração de dados ....................................................................................................................... 234 Exame final....................................................................... 239 Respostas dos Testes e do Exame final .......................... 255 Agradecimentos Devo muito a meus pais por terem me dado uma edução excelente e por terem me ensinado e gostar tanto de aprender como de ensinar. Agradeço à Boy’s Lation School of Maryland e ao diretor Jack H. Williams por terem me ensinado a escrever direito. Meus agradecimentos à Transylvania University e ao Dr. James E. Miller por terem me introduzido ao mundo fascinante dos sistemas de informação e por terem me dado as ferramentas para continuar aprendendo. Gostaria de agradecer as pessoas maravilhosas da Mc Graw-Hill/Osborne pela oportunidade de escrever meu primeiro livro e por seu suporte excelente durante o processo de escrita. Por fim, agradeço minha esposa Laurie e nossos filhos Keith e Luke pelo apoio, paciência e compreensão durante as longas horas que passei produzindo este livro. Introdução Trinta anos atrás, os bancos de dados eram encontrados apenas em laboratórios especiais de pesquisa, onde os cientistas da área de computação buscavam maneiras de torná-los eficientes e úteis, e publicavam suas descobertas em inúmeras pesquisas. Hoje, os bancos de dados são uma parte ubíqua da indústria da tecnologia da informação (TI) e dos negócios em geral. Usamos os bancos de dados de maneira direta e indireta todos os dias – transações bancárias, reservas de viagem, relações de emprego, buscas em sites da Web, compras e a maioria das outras transações são registradas e feitas por meio de bancos de dados. Assim como acontece com muitas tecnologias de crescimento rápido, os padrões da indústria ficaram para trás do desenvolvimento da tecnologia de banco de dados, resultando em um miríade de produtos comerciais, cada um seguindo a visão de um determinado fornecedor de software. Além disso, surgiu uma série de modelos diferentes de bancos de dados, sendo o modelo relacional o mais comum. Desmistificando Banco de Dados examina todos os principais modelos relacionais, incluindo hierárquico, rede, voltado ao objeto e relacional de objeto. No entanto, Desmistificando Banco de Dados se concentra mais nos modelos de banco de dados relacionais e relacionais de objeto porque eles são os mais usados na indústria de TI e devem permanecer assim por um bom tempo. O desafio mais significativo ao implementar um banco de dados é desenvolver sua estrutura corretamente, sem entender completamente o problema que o banco de dados precisa solucionar e sem conhecer as melhores práticas para organizar os dados necessários, o banco de dados se torna difícil de lidar e requer atenção constante. Desmistificando Banco de Dados se concentra na transformação dos requisitos em um modelo de banco de dados funcional com ênfase especial em um processo chamado de normalização, que é uma técnica comprovadamente eficaz para desenvolver bancos de dados relacionais. Na verdade, a normalização pode ser aplicada com sucesso em outros modelos de banco de dados. E, mantendo a noção de que você não pode projetar um carro se nunca tiver dirigido um, a linguagem SQL é introduzida para que o leitor possa “dirigir” um banco de dados antes de conhecer os detalhes de como projetá-lo. Usei minha longa experiência como designer, administrador e instrutor de banco de dados para escrever este guia auto-didático sobre o mundo fascinante e complexo da tecnologia dos bancos de dados. Há exemplos incluídos que usam o Microsoft Access e o Oracle. Bancos de dados de exemplo que são fornecidos por esses fornecedores (o banco de dados Northwind do Microsoft Access e o esquema de banco de dados Human Resources do Oracle) são usados nos exemplos sempre que possível, para que você possa experimentá-los diretamente em seu sistema. Um teste de revisão é fornecido no final de cada capítulo juntamente com um amplo exame no final do livro. Se você tiver comentários, entre em contato. Andrew J. (Andy) Oppel [email protected] Professor do curso de extensão da Universidade da Califórnia Berkeley Principal arquiteto de dados da Ceridian Certificado pelo Oracle9i Database Associate