Este livro, uma introduo bastante ampla a agora muito
extensa rea dos sistemas de bancos de dados, oferece uma base slida sobre os fundamentos da tecnologia de bancos de dados e apresenta algumas idias a respeito da forma provvel como essa rea se desenvolver no futuro. O livro se destina principalmente a ser utilizado como livro-texto, e no como uma obra de referncia (embora eu acredite que ele tambm possa ser til, at certo ponto, como manual de referncia). A nfase, em todo o livro, est nas idias e na compreenso, e no apenas em formalismos. PR-REQUISITOS O livro como um todo se destina a qualquer pessoa que tenha algum tipo de interesse profissional em informtica e queira adquirir uma compreenso do assunto de sistemas de bancos de dados. Suponho que o leitor tenha pelo menos um conhecimento bsico de: Recursos de armazenamento e gerenciamento de arquivos (indexao etc.) de um moderno sistema de computador; Caractersticas de uma ou mais linguagens de programao em alto nvel (por exemplo, C, Java, Pascal, PL/I etc). ESTRUTURA O livro se divide em seis partes principais: 1. Conceitos bsicos II. O modelo relacional III. Projeto de bancos de dados IV. Gerenciamento de transaes V. Temas avanados VI. Bancos de dados de objetos e relacional/objeto Cada parte, por sua vez, se divide em vrios captulos: A Parte 1 (quatro captulos) fornece uma ampla introduo aos conceitos de sistemas de bancos de dados em geral e sistemas relacionais em particular. E tambm apresenta a linguagem padro de bancos de dados SQL. A Parte II (cinco captulos) consiste em uma descrio detalhada e muito cuidadosa do modelo relacional, que no somente o alicerce terico subjacente aos sistemas relacionais, como tambm a base terica da rea de bancos de dados como um todo. A Parte III (quatro captulos) discute a questo geral do projeto de bancos de dados; trs captulos so dedicados teoria do projeto; o quarto tece consideraes a respeito da modelagem semntica e do modelo de entidades e relacionamentos. A Parte IV (dois captulos) se ocupa de vrios aspectos do gerenciamento de transaes (isto , a recuperao e controle da concorrncia). XIX
A Parte V (oito captulos) uma espcie de miscelnea. Em
geral, porm, ela mostra como os conceitos do modelo relacional so relevantes para uma variedade de aspectos complementares da tecnologia de bancos de dados segurana, bancos de dados distribudos, dados temporais, apoio deciso, e assim por diante. Finalmente, a Parte VI (dois captulos) descreve o impacto da tecnologia de objetos sobre os sistemas de bancos de dados. Em particular, o Captulo 25 (o ltimo) considera a possibilidade de uma aproximao entre as tecnologias orientada a objeto e relacional, alm de examinar os sistemas relacional/objeto. Alm disso, h trs apndices um deles fornecendo mais detalhes sobre a SQL, um sobre a SQL3 (uma nova verso de SQL que provavelmente ser ratificada como padro na poca em que este livro estiver impresso) e um que contm uma lista com algumas abreviaturas e siglas importantes. Nota: Tambm se encontra disponvel um Manual do Professor on-line, que fornece orientao sobre a maneira de utilizar o livro como uma base para se ministrar um curso sobre bancos de dados. Ele consiste em uma srie de anotaes, dicas e sugestes a respeito de cada parte, captulo e apndice, bem como respostas para exerccios no resolvidos no prprio livro e outros materiais de apoio. Para obter instrues sobre como conseguir acesso ao Manual, visite o Web site da editora que publicou a verso original deste livro, em http://hepg.awl.com/rep-locator. COMO LER ESTE LIVRO De modo geral, o livro deve ser lido mais ou menos na mesma seqncia em que foi escrito mas, se preferir, voc poder saltar os ltimos captulos e as ltimas sees dentro dos captulos. Um plano sugerido para uma primeira leitura seria:
Ler os Captulos 1 e 2 superficialmente.
Ler os Captulos 3 e 4 com todo o cuidado. Ler os Captulos 5, 6, 8 e 9, mas ignorar o Captulo 7, exceto talvez pela Seo 7.7. Ler o Captulo 10 superficialmente. Ler os Captulos 11 e 13 com cuidado e saltar o Captulo 12. Ler os Captulos 14 e 15 cuidadosamente. Ler os captulos subseqentes de maneira seletiva, de acordo com seu gosto e interesse. Cada captulo se inicia com uma introduo e termina com um resumo. Alm disso, a maioria dos captulos inclui uma srie de exerccios, normalmente com respostas (com freqncia, as respostas fornecem informaes adicionais sobre o assunto do exerccio). A maioria dos captulos inclui tambm uma extensa lista de referncias, muitas delas com anotaes. Essa estrutura permite que o assunto seja tratado em vrios nveis, com os conceitos e resultados mais importantes sendo apresentados em linha no corpo principal do texto, enquanto diversas questes subsidirias e aspectos mais complexos so adiados para a seo Exerccios, Respostas ou Referncias, conforme apropriado. Nota: as referncias so identificadas no texto por nmeros em duas partes entre colchetes. Por exemplo, a referncia [3. 1] diz respeito ao primeiro item da lista de referncias encontrada no final do Captulo 3: especificamente, um artigo de E. F. Codd publicado em CACM, Vol. 25, N2 2, em fevereiro de 1982. (Para ver uma explicao das abreviaturas usadas nas referncias por exemplo, CACM consulte o Apndice C.) xx
COMPARAO COM EDIES ANTERIORES
As principais diferenas entre esta edio e sua predecessora esto resumidas a seguir: Parte 1: os Captulos de 1 a 3 cobrem de modo geral os mesmos assuntos dos Captulos de 1 a 3 da edio anterior, mas eles foram reescritos, e o tratamento de diversos tpicos foi melhorado e ampliado. O Captulo 4, novo (embora se baseie parcialmente no antigo Captulo 8), oferece uma introduo SQL, focalizando aspectos que no pertencem logicamente a nenhuma outra parte do livro (em particular, exemplos de linguagem hospedeira e SQL embutida). Parte II: os Captulos de 5 a 9 (sobre o modelo relacional) representam uma verso completamente reescrita, bastante expandida e muito melhorada dos Captulos de 4 a 7 e 17 de edio anterior. Em particular, as sees sobre tipos (domnios), valores de relaes versus variveis de relaes, integridade, predicados e vises foram todas drasticamente revisadas. Nota: nesse ponto, so necessrias algumas palavras de explicao. Edies anteriores deste livro usaram a SQL para ilustrar idias relacionais, na crena de que seria mais fcil para o estudante mostrar-se o concreto antes do abstrato. Entretanto, infelizmente, o abismo entre a SQL e o modelo relacional cresceu tanto que agora considero que seria um equvoco usar a SQL para tal finalidade. De fato, a SQL em sua forma atual est to longe de ser uma incorporao verdadeira de princpios relacionais ela sofre de muitos pecados de omisso e comisso que teria sido prefervel releg-la a um apndice; porm, a linguagem to importante do ponto de vista comercial (e todo profissional de bancos de dados precisa ter uma certa familiaridade com ela) que simplesmente no seria adequado trat-la de forma to desleixada. Por essa razo, preferi ficar em um meio-termo um captulo sobre fundamentos de SQL na Parte 1 do livro e sees individuais em outros captulos (onde aplicveis) descrevendo os aspectos de SQL especficos para o assunto do captulo em questo. Parte III: os Captulos de 10 a 13 so uma reviso significativa dos antigos Captulos de 9 a 12, com novo material sobre atributos valorados de relaes, desnormalizao, projeto ortogonal e abordagens alternativas para modelagem semntica (inclusive regras de negcio). Nota: novamente, necessria uma explicao. Alguns revisores de edies anteriores reclamaram que as questes de projeto de bancos de dados estavam sendo tratadas muito tarde. Porm, tenho a impresso de que os alunos no esto preparados para projetar bancos de dados de forma apropriada ou para apreciar totalmente as questes relacionadas com o projeto at terem uma certa compreenso do que so os bancos de dados e de como eles so empregados; em outras palavras, acredito que importante dedicar algum tempo ao modelo relacional e s questes que ele envolve antes de expor o aluno a questes de projeto. Desse modo, ainda creio que a Parte III est no lugar correto do livro. Parte IV: os dois captulos dessa parte so verses ligeiramente revisadas e expandidas dos Captulos 13 e 14 da edio anterior. Parte V: os Captulos 19 (sobre herana de tipo), 21 (sobre apoio deciso) e 22 (sobre bancos de dados temporais) so totalmente novos. Os Captulos 16 (sobre segurana), 17 (sobre otimizao), 18 (sobre perda de informaes) e 20 (sobre bancos de dados distribudos) so verses expandidas e bastante revisadas dos antigos Captulos 15, 18, 20 e 21, respectivamente. O Captulo 23 (sobre bancos de dados baseados na lgica ou dedutivos) uma verso revisada do antigo Apndice C. Parte VI: o Captulo 24 uma verso completamente reescrita e muito melhorada dos antigos Captulos de 22 a 24. O Captulo 25 quase todo novo. Por fim, o Apndice A se baseia em uma parte do antigo Captulo 8, o Apndice B novo, e o Apndice C uma verso atualizada do antigo Apndice D. xx
Alm das mudanas descritas anteriormente, os tpicos a
seguir foram retirados desta edio: Estruturas de armazenamento e mtodos de acesso (antigo Apndice A). Estudo detalhado de DB2 (antigo Apndice B). O QUE TORNA ESTE LIVRO DIFERENTE? Cada livro sobre bancos de dados existente no mercado tem seus prprios pontos fortes e suas deficincias, e todo escritor possui seu prprio estilo. Um autor se concentra nos temas relacionados ao gerenciamento de transaes, outro esgota o tema da modelagem de entidades/relacionamentos, outro ainda observa tudo atravs das lentes da SQL, um outro escritor adota apenas um ponto de vista de objetos, outro v a rea de bancos de dados exclusivamente em termos de produtos comerciais, e assim por diante. claro que no sou exceo a essa regra tambm tenho minhas preferncias pessoais: aquilo que poderia ser chamado de alicerce. Acredito que devemos ter a base correta e compreend-la de forma apropriada antes de tentarmos construir algo sobre essa base. De minha parte, essa convico explica a nfase pesada deste livro no modelo relacional; em particular, explica a extenso da Parte II a parte mais importante do livro em que apresento minha prpria maneira de entender o modelo relacional da forma mais cuidadosa possvel. Estou interessado em fundaes, no em modismos passageiros. Nesse contexto, devo dizer que estou bastante ciente de que o tom geral deste livro mudou ao longo dos anos. As primeiras edies tinham uma natureza mais descritiva. Elas mostravam a rea como ela era na prtica, sem retoques. Em contraste, esta edio muito mais prescritiva; ela trata do modo como a rea devia ser e sobre a maneira como ela dever se desenvolver no futuro, se fizermos as coisas certas (em outras palavras, este um livro-texto com uma postura!). Alm disso, a primeira parte do fazer as coisas certas educar a si mesmo de modo seguro sobre quais so realmente essas coisas certas. Espero que esta edio possa ajudar nesse empreendimento educacional. Existe ainda outro ponto (relacionado): alguns dos leitores devem saber que, junto com meu colega Hugh Darwen, publiquei recentemente outro livro prescritivo a respeito da tecnologia de bancos de dados, cujo ttulo (abreviado) The ThirdManifesto [3.3j. Esse livro foi elaborado sobre os fundamentos do modelo relacional com o objetivo de oferecer uma proposta tcnica detalhada para o futuro dos sistemas de bancos de dados (ele o resultado de muitos anos de ensino e meditao sobre tais assuntos por parte de Hugh e de mim mesmo). Assim, no surpreendente que as idias do Manifesto alimentem todo este volume. Isso no quer dizer que o Manifesto seja um pr-requisito para este livro no o caso; porm, ele diretamente relevante para grande parte daquilo que veremos neste livro e contm informaes adicionais pertinentes que voc poder encontrar com freqncia. UM COMENTRIO FINAL Gostaria de encerrar este prefcio com o seguinte texto extrado de outro prefcio, o de Bertrand Russeli para The Bertrand Russeli Dictionary of Mi, Matter and Morais (ed. Lester E. Denonn), Citadel Press, 1993, reproduzido aqui com permisso: Tenho sido acusado do hbito de mudar minhas opinies... Eu prprio no tenho nenhuma vergonha [desse hbito]. Que fsico que estivesse em atividade no ano de 1900 sonharia em se vangloriar de que suas opinies no mudaram durante o ltimo meio sculo?... A espcie de filosofia a que dou valor e tenho tentado perseguir cientfica, no sentido de haver algum conhecimento definido a ser obtido e de que novas descobertas podem tornar inevitvel a qualquer mente sincera o reconhecimento de erros anteriores. Pelo que tenha dito, seja cedo, seja tarde, no afirmo a espcie de verdade que os telogos afirmam para seus credos. Afirmo apenas, na melhor das hipteses, que a opinio expressa era sensata em seu tempo... Ficaria muito surpreso se a pesquisa subseqente no mostrasse que precisava ser modificada. [Tais opinies] no pretendiam ser pronunciamentos pontificais, apenas eram o melhor que eu podia dizer na ocasio para a promoo do pensamento claro e preciso. Clareza, acima de tudo, tem sido meu alvo. XXII
Au comparar edies anteriores deste livro com esta edio,
voc descobrir que tambm mudei de opinio sobre muitas questes (e sem dvida continuarei a faz-lo). Espero que aceitem as observaes citadas anteriormente como justificativa razovel para esse estado de coisas. Compartilho da percepo de Bertrand Russell do que seja o campo da pesquisa cientfica, mas ele exprime essa percepo de modo muito mais eloqente do que eu poderia fazer. AGRADECIMENTOS Mais uma vez, um prazer reconhecer minha dvida para com as muitas pessoas envolvidas, direta ou indiretamente, na produo deste livro. Primeiro, devo agradecer a meus amigos David McGoveran e Hugh Darwen por sua importante participao nesta edio. David colaborou com o primeiro esboo do Captulo 21 sobre apoio deciso, e Hugh contribuiu com o rascunho inicial do Captulo 22, sobre bancos de dados temporais. Hugh tambm empreendeu um trabalho de reviso muito cuidadoso sobre grandes partes do original, incluindo em particular todos os captulos sobre o modelo relacional e o apndice sobre SQL3. Em segundo lugar, o texto se beneficiou dos comentrios dos alunos dos seminrios que venho ministrando nos ltimos anos. Ele tambm se beneficiou enormemente dos comentrios e da discusso com numerosos amigos e revisores, incluindo Charley Bontempo, Declan Brady, Hugh Darwen (novamente), Tim Hartley, Adrian Larner, Chung Lee, David Livingstone, Nikos Lorentzos, Huizha Lu, Ramon Mata-Toledo, Nelson Mattos, David McGoveran (novamente), Fabian Pascal, Sudha Ram, Rick van der Lans, Yongdong Wang, Colin White e Qiang Zhu. Cada uma dessas pessoas revisou pelo menos uma parte do original desta edio ou ps disposio algum material tcnico, ou me ajudou de algum modo a encontrar respostas para minhas muitas dvidas tcnicas. Sou muito grato a todos. Em particular, gostaria tambm de agradecer a minha esposa Lindy por colaborar mais uma vez no trabalho de arte da capa. Por fim, sou grato (como sempre) a todo o pessoal da Addison-Wesley especialmente a Maite Suarez-Rivas e Katherine Harutunian por todo o incentivo e apoio durante este projeto, e ainda minha editora Elydia Davis por seu trabalho sempre perfeito. C. J. Date Healdsburg, Califrnia 1999 AAIII