Você está na página 1de 40

Sistema de

Banco de Dados

Sist_Banco_Dados_Livro.indb 1

01/08/2012 17:39:21

Preencha a ficha de cadastro no final deste livro


e receba gratuitamente informaes
sobre os lanamentos e as promoes da Elsevier.
Consulte tambm nosso catlogo completo,
ltimos lanamentos e servios exclusivos no site
www.elsevier.com.br

Sist_Banco_Dados_Livro.indb 2

01/08/2012 17:39:21

Sistema de
Banco de Dados

Sist_Banco_Dados_Livro.indb 3

01/08/2012 17:39:21

Do original: Database System Concepts, 6th edition


Traduo autorizada do idioma ingls da edio publicada por McGraw-Hill McGraw-Hill Companies, Inc.
Copyright 2011 by Mc-Graw-Hill Companies, Inc. All rights reserved.
2012, Elsevier Editora Ltda.
Todos os direitos reservados e protegidos pela Lei no 9.610, de 19/02/1998.
Nenhuma parte deste livro, sem autorizao prvia por escrito da editora, poder ser reproduzida ou
transmitida sejam quais forem os meios empregados: eletrnicos, mecnicos, fotogrficos, gravao ou
quaisquer outros.
Copidesque: Ivone Teixeira
Reviso: Wilton Rocha
Editorao Eletrnica: SBNIGRI Artes e Textos Ltda.
Elsevier Editora Ltda.
Conhecimento sem Fronteiras
Rua Sete de Setembro, 111 16o andar
20050-006 Centro Rio de Janeiro RJ Brasil
Rua Quintana, 753 8o andar
04569-011 Brooklin So Paulo SP Brasil
Servio de Atendimento ao Cliente
0800-0265340
sac@elsevier.com.br
ISBN 978-85-352-4535-6
Edio original: 0-07-295886-3
Nota: Muito zelo e tcnica foram empregados na edio desta obra. No entanto, podem ocorrer erros
de digitao, impresso ou dvida conceitual. Em qualquer das hipteses, solicitamos a comunicao
ao nosso Servio de Atendimento ao Cliente, para que possamos esclarecer ou encaminhar a questo.
Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos ou perdas a
pessoas ou bens, originados do uso desta publicao.

CIP-Brasil. Catalogao-na-fonte.
Sindicato Nacional dos Editores de Livros, RJ
_________________________________________________________________________
S576s
Silberschatz, Abraham
Sistema de Bancos de Dados / Avi Silberschatz, Henry F. Korth, S.
Sudarshan; traduo Daniel Vieira. Rio de Janeiro: Elsevier, 2012.
Traduo de: Database System Concepts, 6th ed.
Inclui bibliografia e ndice
ISBN 978-85-352-4535-6
1. Banco de dados Gerncia. I. Korth, Henry F. II. Sudarshan, S.
III. Ttulo.
11-5992.
CDD: 005.74
CDU: 004.65
_________________________________________________________________________

Sist_Banco_Dados_Livro.indb 4

01/08/2012 17:39:21

Obrigado por adquirir o livro

Sistema de banco de dados, 6a ed.


Nesta pgina voc tem o cdigo de acesso on-line e gratuito a:
Apndices em ingls

Risque o adesivo com cuidado! No use objetos


pontiagudos. Se possvel, utilize uma extremidade
plstica (em vez de uma moeda) e no risque com muita
fora a fim de evitar danificar o cdigo de identificao.
Observao importante: a compra deste livro inclui acesso
a materiais complementares on-line para o uso exclusivo
do comprador. Essa licena e esse acesso funcionam
apenas para um usurio por cdigo de acesso.
O compartilhamento de senhas rigorosamente proibido
e qualquer tentativa dessa natureza invalidar a senha.
O acesso no pode ser compartilhado, revendido ou
divulgado e ser encerrado quando a prxima edio
deste livro for lanada.
Os detalhes completos e os termos de uso esto
disponveis no momento do registro e o acesso estar
sujeito aceitao dos termos de uso.

O material complementar on-line ser constantemente atualizado.

Sist_Banco_Dados_Livro.indb 5

01/08/2012 17:39:21

Sist_Banco_Dados_Livro.indb 6

01/08/2012 17:39:21

Em memria de meu pai Joseph Silberschatz,


minha me Vera Silberschatz
e meus avs Stepha e Aaron Rosenblum.
Avi Silberschatz

Para minha esposa, Joan,


meus filhos Abigail e Joseph
e meus pais, Henry e Frances.
Hank Korth

Para minha esposa Sita,


meus filhos Madhur e Advaith,
e minha me, Indira.
S. Sudarshan

Sist_Banco_Dados_Livro.indb 7

01/08/2012 17:39:21

Sist_Banco_Dados_Livro.indb 8

01/08/2012 17:39:21

Prefcio

O gerenciamento de banco de dados evoluiu de uma


aplicao de computador especializada para um componente central do ambiente de computao moderno e, como
resultado, o conhecimento a respeito dos sistemas de banco
de dados se tornou parte essencial de um curso de cincia da computao. Neste texto, apresentamos os conceitos
fundamentais do gerenciamento de banco de dados. Esses
conceitos incluem aspectos de projeto de banco de dados,
linguagens de banco de dados e implementao de sistemas
de banco de dados.
Este texto voltado para a disciplina de banco de dados
em cursos de graduao e ps-graduao. Alm do material bsico para um curso inicial, o texto contm material
avanado que pode ser usado para suplementos de curso ou
como material introdutrio para um curso avanado.
Consideramos apenas uma familiaridade com as estruturas de dados bsicas, organizao de computador e
linguagem de programao de alto nvel, como Java, C ou
Pascal. Apresentamos os conceitos como descries intuitivas, muitas delas baseadas em nosso exemplo comum de
uma universidade. Abordamos resultados tericos importantes, mas as provas formais so omitidas. No lugar das
provas, figuras e exemplos so usados para sugerir por que
um resultado verdadeiro. Descries formais e provas
dos resultados tericos podero ser encontradas nos trabalhos de pesquisa e textos avanados referenciados nas
notas bibliogrficas.
Os conceitos e algoritmos fundamentais abordados no
livro frequentemente so baseados naqueles utilizados nos
sistemas de banco de dados existentes, tanto comerciais
quanto experimentais. Nosso objetivo apresentar esses
conceitos e algoritmos em um ambiente geral, que no esteja ligado a um sistema de banco de dados em particular.

Sist_Banco_Dados_Livro.indb 9

Os detalhes dos sistemas de banco de dados em particular


so discutidos na Parte 9, Estudos de caso.
Neste livro, a sexta edio do original de Sistemas de
Banco de Dados, mantivemos o estilo geral das edies anteriores, enquanto evolumos o contedo e a organizao,
a fim de refletir as mudanas que esto ocorrendo na forma como os bancos de Dados so projetados, gerenciados e
utilizados. Tambm levamos em considerao as tendncias
no ensino dos conceitos de banco de dados e fizemos adaptaes para facilitar essas tendncias, onde for apropriado.

Organizao
O texto est organizado em nove partes principais, mais
cinco apndices.
Viso geral (Captulo 1). O Captulo 1 oferece uma viso geral da natureza e propsito dos sistemas de banco
de dados. Explicamos como o conceito de um sistema
de banco de dados se desenvolveu, quais so os recursos
comuns dos sistemas de banco de dados, o que um sistema de banco de dados faz para o usurio e como um
sistema de banco de dados realiza sua interface com os
sistemas operacionais. Tambm introduzimos uma aplicao de banco de dados de exemplo: uma instituio
universitria consistindo em vrios departamentos, alunos e cursos. Esse exemplo utilizado por professores
todo o livro. O captulo motivador, histrico e explicativo por natureza.
Parte 1: Bancos de dados relacionais (Captulos 2 a 5).
O Captulo 2 introduz o modelo relacional de dados, incluindo conceitos bsicos e tambm a estrutura dos bancos de dados relacionais, esquemas de banco de dados,
chaves, diagramas de esquema, linguagens de consulta
relacionais e operaes relacionais. Os Captulos 3, 4 e 5

01/08/2012 17:39:21

Sistema de Banco de Dados

focalizam a mais influente das linguagens relacionais orientadas ao usurio: SQL. O Captulo 6 aborda as linguagens
formais de consulta relacionais: lgebra relacional, clculo
relacional de tupla e clculo relacional de domnio.
Os captulos dessa parte descrevem a manipulao
de dados: consultas, atualizaes, inseres e excluses,
assumindo que um projeto de esquema foi oferecido.
As questes de projeto de esquema so deixadas para
a Parte 2.
Parte 2: Projeto de banco de dados (Captulos 7 a 9).
O Captulo 7 oferece uma viso geral do processo de
projeto de banco de dados, com a nfase principal no
projeto de banco de dados usando o modelo de dados
entidade-relacionamento. O modelo de dados entidade-relacionamento oferece uma viso de alto nvel das
questes de projeto de banco de dados e dos problemas
que encontramos na captura da semntica de aplicaes
realistas dentro das restries de um modelo de dados. A
notao de diagrama de classes da UML tambm abordada nesse captulo.
O Captulo 8 apresenta a teoria do projeto de banco
de dados relacional. A teoria das dependncias funcionais e da normalizao abordada, enfatizando a motivao e o conhecimento intuitivo de cada forma normal.
Esse captulo comea com uma viso geral do projeto
relacional e conta com um conhecimento intuitivo da
implicao lgica das dependncias funcionais. Isso permite que o conceito de normalizao seja introduzido
antes da cobertura completa da teoria da dependncia
funcional, que apresentada mais adiante no captulo.
Os professores podem decidir usar apenas essa cobertura inicial nas Sees 8.1 a 8.3, sem perda da continuidade. Os professores que utilizam o captulo inteiro
se beneficiaro com os alunos tendo um bom conhecimento dos conceitos de normalizao, a fim de motivar
alguns dos conceitos desafiadores da teoria da dependncia funcional.
O Captulo 9 aborda o projeto e o desenvolvimento de aplicaes. Esse captulo enfatiza a construo de
aplicaes de banco de dados com interfaces baseadas
na Web. Alm disso, o captulo aborda a segurana da
aplicao.
Parte 3: Armazenamento e consulta de dados (Captu
los 10 a 13). O Captulo 10 trata de dispositivos de armazenamento, arquivos e estruturas de armazenamento de dados. Diversas tcnicas de acesso aos dados so apresentadas
no Captulo 11, incluindo ndices de rvore B+ e hashing.
Os Captulos 12 e 13 enfatizam algoritmos de avaliao de
consulta e otimizao de consulta. Esses captulos oferecem
um conhecimento dos detalhes internos dos componentes
de armazenamento e recuperao de um banco de dados.

Sist_Banco_Dados_Livro.indb 10

ELSEVIER

Parte 4: Gerenciamento de transao (Captulos 14 a


16). O Captulo 14 focaliza os fundamentos do sistema
de processamento de transaes, incluindo atomicidade, consistncia, isolamento e durabilidade. Ele oferece
uma viso geral dos mtodos usados para garantir essas
propriedades, incluindo bloqueio e isolamento de instantneo (snapshot).
O Captulo 15 focaliza o controle de concorrncia
e apresenta diversas tcnicas para garantir a serializabilidade, incluindo bloqueio, timestamping e tcnicas otimistas (validao). O captulo tambm aborda questes
de impasse (deadlock). So analisadas alternativas serializabilidade, principalmente o isolamento de instantneo (snapshot) bastante utilizado, que discutimos em
detalhes.
O Captulo 16 aborda as principais tcnicas para garantir a execuo correta da transao, apesar de panes
do sistema e falhas de armazenamento. Essas tcnicas
incluem logs, pontos de verificao (checkpoints) e dumps
de banco de dados. O algoritmo ARIES, bastante utilizado, tambm apresentado.
Parte 5: Arquitetura do sistema (Captulos 17 a 19). O
Captulo 17 aborda a arquitetura de sistemas de computador e descreve a influncia do sistema de computador
bsico sobre o sistema de banco de dados. Discutimos
sistemas centralizados, sistemas cliente-servidor e arquiteturas paralela e distribuda nesse captulo.
O Captulo 18, sobre bancos de dados paralelos, explora as diversas tcnicas de paralelismo, incluindo paralelismo de E/S, paralelismo interconsulta e intraconsulta,
e paralelismo interoperao e intraoperao. O captulo
tambm descreve o projeto de sistema paralelo.
O Captulo 19 aborda os sistemas de bancos de dados distribudos, retornando s questes de projeto de
banco de dados, gerenciamento de transaes e avaliao e otimizao de consulta, no contexto dos bancos de
dados distribudos. O captulo tambm aborda questes
de disponibilidade de sistema durante falhas, bancos de
dados heterogneos distribudos, bancos de dados baseados em nuvem e sistemas de diretrio distribudos.
Parte 6: Depsito de dados, minerao de dados
e recuperao de informaes (Captulos 20 e 21).
O Captulo 20 apresenta os conceitos de depsito de
dados (data warehouse) e minerao de dados (data
mining). O Captulo 21 descreve tcnicas de recuperao de informaes para consulta de dados textuais,
incluindo tcnicas baseadas em hiperlink utilizadas nos
mecanismos de pesquisa da Web.
A Parte 6 utiliza os conceitos de modelagem e linguagem das Partes 1 e 2, mas no depende das Partes 3, 4
ou 5. Portanto, ela pode ser facilmente incorporada em
um curso que focaliza SQL e projeto de banco de dados.

01/08/2012 17:39:21

Prefcioxi
Parte 7: Bancos de dados especiais (Captulos 22 e
23). O Captulo 22 aborda os bancos de dados baseados
em objeto. O captulo descreve o modelo de dados objeto-relacional, que estende o modelo de dados relacional
para dar suporte a tipos de dados complexos, herana de
tipo e identidade de objeto. O captulo tambm descreve
o acesso ao banco de dados a partir de linguagens de
programao orientadas a objeto.
O Captulo 23 aborda o padro XML para representao de dados, que est sendo cada vez mais usado para
troca e armazenamento de dados complexos. O captulo
tambm descreve as linguagens de consulta para XML.
Parte 8: Tpicos avanados (Captulos 24 a 26). O
Captulo 24 aborda questes avanadas no desenvolvimento de aplicaes, incluindo ajuste de desempenho,
benchmarks de desempenho, teste de aplicaes de banco de dados e padronizao.
O Captulo 25 aborda os dados espaciais e geogrficos, dados temporais, dados de multimdia e questes
de gerenciamento de bancos de dados mveis e pessoais.
Finalmente, o Captulo 26 trata do processamento
avanado de transaes. Os tpicos abordados no captulo incluem monitores de processamento de transao,
fluxos de trabalho transacionais, comrcio eletrnico,
sistemas de transao de alto desempenho, sistemas de
transao em tempo real e transaes de longa durao.
Parte 9: Estudos de caso (Captulos 27 a 30). Nessa
parte, apresentamos estudos de caso de quatro dos principais sistemas de banco de dados: PostgreSQL, Oracle,
IBM DB2 e Microsoft SQL Server. Esses captulos esboam os recursos exclusivos de cada um desses sistemas,
descrevendo sua estrutura interna. Eles oferecem diversas informaes interessantes sobre os respectivos produtos, ajudando o leitor a ver como as diversas tcnicas
de implementao descritas nas partes anteriores so
usadas em sistemas reais. Eles tambm abordam vrios
aspectos prticos interessantes no projeto de sistemas
reais.
Apndices. Oferecemos cinco apndices que abordam o
material de natureza histrica ou avanada; esses apndices esto disponveis apenas on-line no site do livro
www.elsevier.com.br/silberschatz. Uma
exceo o Apndice A, que apresenta detalhes do nosso
esquema de universidade, incluindo o esquema completo, a DDL e todas as tabelas. Esse apndice aparece no
texto impresso.
O Apndice B descreve o projeto avanado de banco
de dados relacional, incluindo a teoria de dependncias
de mltiplos valores, dependncias de juno e as formas normais de juno de projeto e chave de domnio.
Esse apndice beneficia aqueles indivduos que desejam
estudar a teoria do projeto de banco de dados relacional
com mais detalhes, e professores que queiram fazer isso

Sist_Banco_Dados_Livro.indb 11

em seus cursos. Esse apndice tambm est disponvel


apenas on-line, no Web site do livro.
O Apndice C descreve outras linguagens de consulta relacionais, incluindo QBE do Microsoft Access e
Datalog.
Embora a maioria das novas aplicaes de banco de
dados utilize o modelo relacional ou o modelo objeto-relacional, os modelos de dados de rede e hierrquico
ainda so usados em algumas aplicaes legadas. Para
o benefcio dos leitores que desejam aprender sobre
esses modelos de dados, oferecemos apndices descrevendo os modelos de dados de rede e hierrquico, nos
Apndice D e E, respectivamente.

A sexta edio
A produo desta sexta edio levou em considerao os
muitos comentrios e sugestes que recebemos com relao
s edies anteriores, nossas prprias observaes enquanto
lecionvamos na Yale University, Lehigh University e IIT de
Bombaim, e nossa anlise das direes para onde a tecnologia de banco de dados est evoluindo.
Substitumos o exemplo utilizado em todo o livro sobre
um estabelecimento bancrio por um exemplo de universidade. Esse exemplo tem uma conexo intuitiva imediata
para os alunos, que auxilia no apenas a lembrar do exemplo, porm, mais importante, a obter discernimento mais
profundo para as diversas decises de projeto que precisam
ser feitas.
Reorganizamos o livro de modo que rena toda a nossa cobertura de SQL e a coloque mais no incio do livro.
Os Captulos 3, 4 e 5 apresentam a cobertura completa da
SQL. O Captulo 3 apresenta os fundamentos da linguagem,
com recursos mais avanados no Captulo 4. No Captulo
5, apresentamos a JDBC junto com outros meios de acesso
SQL a partir de uma linguagem de programao de uso
geral. Apresentamos triggers e recurso, e depois conclumos com a cobertura do processamento analtico on-line
(OLAP). Os cursos introdutrios podero cobrir apenas certas sees do Captulo 5 ou adiar as sees para depois da
cobertura sobre projeto de banco de dados, sem prejudicar
a continuidade.
Alm dessas duas mudanas importantes, revisamos o
material em cada captulo, atualizando o material mais antigo, acrescentando discusses sobre desenvolvimentos recentes na tecnologia de banco de dados e melhorando as
descries dos tpicos que os alunos julgaram difceis de
entender. Tambm acrescentamos novos exerccios e referncias atualizadas. A seguir, veja a lista das mudanas especficas:
Cobertura da SQL mais cedo. Muitos professores utilizam SQL como um componente-chave dos projetos finais
do semestre (veja alguns exemplos de projetos finais no

01/08/2012 17:39:21

xii

ELSEVIER

Sistema de Banco de Dados

site dos autores: www.db-book.com). Para dar aos


alunos bastante tempo para os projetos, principalmente
para universidades e colgios em sistema de trimestre,
essencial ensinar SQL o mais cedo possvel. Com isso
em mente, realizamos vrias mudanas na organizao:
Um novo captulo sobre o modelo relacional
(Captulo 2) vem antes da SQL, estabelecendo a base
conceitual, sem se perder nos detalhes da lgebra relacional.
Os Captulos 3, 4 e 5 oferecem cobertura detalhada
da SQL. Esses captulos tambm discutem variantes
apoiadas por diferentes sistemas de banco de dados,
para minimizar problemas que os alunos enfrentam
quando executam consultas em sistemas de banco
de dados reais. Esses captulos abrangem todos os
aspectos da SQL, incluindo consultas, definio de
dados, especificao de restrio, OLAP e o uso da
SQL de dentro de diversas linguagens, incluindo
Java/JDBC.
Linguagens formais (Captulo 6) foram adiadas para
depois da SQL, e podem ser omitidas sem afetar a
sequncia de outros captulos. Somente nossa discusso de otimizao da consulta, no Captulo 13,
depende da cobertura sobre lgebra relacional do
Captulo 6.
Novo esquema de banco de dados. Adotamos um
novo esquema, que baseado em dados de universidade, como um exemplo em andamento no decorrer do
livro. Esse esquema mais intuitivo e motivador para os
alunos do que o esquema anterior de banco, ilustrando
escolhas de projeto mais complexas nos captulos sobre
projeto de banco de dados.
Mais suporte para uma experincia prtica do leitor.
Para facilitar o acompanhamento do nosso exemplo, listamos de forma conjunta o esquema de banco de dados
e as instncias de relao de exemplo para nosso banco
de dados de universidade no Apndice A, alm de onde
eles so usados nos diversos captulos normais. Alm
disso, oferecemos, em nosso site Web (http://www.
db-book.com) instrues de definio de dados da
SQL para o exemplo inteiro, junto com instrues SQL
para criar nossas instncias de relao de exemplo. Isso
encoraja os alunos a utilizarem consultas de exemplo
diretamente em um sistema de banco de dados e experimentar a modificao dessas consultas.
Cobertura revisada do modelo E-R. A notao do diagrama E-R no Captulo 7 foi modificada para torn-la
mais compatvel com UML. O captulo tambm faz bom
uso do novo esquema de banco de dados de universidade para ilustrar escolhas de projeto mais complexas.
Cobertura revisada do projeto relacional. O Captulo 8
agora tem estilo mais legvel, oferecendo um conhecimento intuitivo das dependncias funcionais e normali-

Sist_Banco_Dados_Livro.indb 12

zao, antes de cobrir a teoria da dependncia funcional;


como resultado, a teoria muito mais bem motivada.
Material expandido sobre desenvolvimento de aplicaes e segurana. O Captulo 9 contm material novo
sobre desenvolvimento de aplicao, espelhando as rpidas mudanas no campo. Em particular, a cobertura sobre segurana foi expandida, considerando seu aspecto
crtico no mundo interconectado de hoje, com maior nfase em questes prticas do que em conceitos abstratos.
Cobertura revista e atualizada do armazenamento
de dados, indexao e otimizao de consulta. O
Captulo 10 foi atualizado com nova tecnologia, incluindo cobertura expandida sobre memria flash.
A cobertura de rvores B+ no Captulo 11 foi revisada
para refletir implementaes prticas, incluindo a cobertura da carga em massa, e a apresentao foi melhorada.
Os exemplos de rvore B+ no Captulo 11 foram revisados com n = 4, para evitar o caso especial de ns vazios
que surgem com o valor (no realista) de n = 3.
O Captulo 13 possui material novo sobre tcnicas
avanadas de otimizao de consulta.
Cobertura revisada do gerenciamento de transao.
O Captulo 14 oferece cobertura completa dos fundamentos para um curso introdutrio, com detalhes avanados acompanhando os Captulos 15 e 16. O Captulo
14 foi expandido para cobrir as questes prticas no
gerenciamento de transaes, enfrentadas por usurios
de banco de dados e desenvolvedores de aplicao de
banco de dados. O captulo tambm inclui viso geral
expandida dos assuntos abordados nos Captulos 15 e
16, garantindo que, mesmo na omisso dos Captulos
15 e 16, os alunos tenham um conhecimento bsico dos
conceitos do controle de concorrncia e recuperao.
Os Captulos 14 e 15 agora incluem cobertura detalhada do isolamento de snapshot, que bastante aceito e
usado atualmente, incluindo a cobertura dos riscos potenciais decorrentes do seu uso.
O Captulo 16 agora tem uma descrio simplificada
da recuperao bsica baseada em log, levando at a cobertura do algoritmo ARIES.
Cobertura revista e expandida dos bancos de dados
distribudos. Agora, cobrimos o armazenamento de dados em nuvem, que est recebendo bastante interesse
para aplicaes empresariais. O armazenamento em nuvem oferece s empresas oportunidades para gerenciamento de custo melhorado e maior escalabilidade de armazenamento, principalmente para aplicaes baseadas
na Web. Examinamos essas vantagens junto com suas
desvantagens e riscos.
Bancos de dados mltiplos (multidatabases), que anteriormente estavam no captulo sobre processamento avanado de transaes, agora so explicados mais cedo, como
parte do captulo sobre bancos de dados distribudos.

01/08/2012 17:39:22

Prefcioxiii
Cobertura adiada dos bancos de dados de objeto e
XML. Embora as linguagens orientadas a objeto e XML
sejam muito usadas fora dos bancos de dados, seu uso
nos bancos de dados ainda limitado, tornando-as apropriadas para cursos mais avanados ou como material
suplementar para um curso introdutrio. Esses assuntos,
portanto, foram movidos mais para o final do livro, nos
Captulos 22 e 23.
QBE, Microsoft Access e Datalog em um apndice
on-line. Esses tpicos, que anteriormente faziam parte
de um captulo sobre outras linguagens relacionais,
agora so abordados no Apndice B on-line.
Todos os tpicos no listados foram atualizados a
partir da quinta edio, embora sua organizao geral
seja relativamente inalterada.

Material de reviso e exerccios


Cada captulo tem uma lista de termos de reviso, alm
de um sumrio, que pode ajudar os leitores a revisarem os
principais tpicos abordados no captulo.
Os exerccios so divididos em dois conjuntos: exerccios prticos e exerccios. As solues para os exerccios
prticos esto disponveis publicamente no site dos autores:
www.db-book.com. Os alunos so encorajados a resolver
os exerccios prticos por conta prpria, e mais tarde usar as
solues no site Web para verificar suas prprias solues.
Muitos captulos possuem uma seo de ferramentas ao
final, que oferece informaes sobre ferramentas de software relacionadas ao tpico do captulo; algumas dessas ferramentas podem ser usadas para exerccios de laboratrio.
SQL DDL e dados de amostra para o banco de dados de
universidade e outras relaes usadas nos exerccios esto
disponveis no site Web do livro e podem ser usados para
exerccios de laboratrio.

Nota ao professor
O livro contm material bsico e avanado, que pode
no ser abordado em um nico semestre. Marcamos vrias
sees como avanadas, usando o smbolo **. Essas sees podero ser omitidas, se for desejado, sem perda de
continuidade. Os exerccios que so difceis (e que podem
ser omitidos) tambm esto marcados com o smbolo **.
possvel elaborar cursos usando vrios subconjuntos
dos captulos. Alguns dos captulos tambm podem ser
abordados em uma ordem diferente da ordem indicada no
livro. Esboamos aqui algumas das possibilidades:
O Captulo 5 (SQL avanada) pode ser pulado ou deixado para depois sem perda da continuidade. Esperamos
que a maioria dos cursos cubra pelo menos a Seo 5.1.1
primeiramente, pois JDBC provavelmente ser uma ferramenta til nos projetos do aluno.

Sist_Banco_Dados_Livro.indb 13

O Captulo 6 (Linguagens formais de consulta relacional) pode ser abordado imediatamente aps o Captulo
2, antes da SQL. Como alternativa, esse captulo poder
ser omitido em curso introdutrio.
Recomendamos incluir a Seo 6.1 (lgebra relacional)
se o curso tambm inclui o processamento da consulta.
Porm, as Sees 6.2 e 6.3 podem ser omitidas se os alunos
no usarem o clculo relacional como parte do curso.
O Captulo 7 (Modelo E-R) pode ser includo antes dos
Captulos 3, 4 e 5, se for desejado, pois o Captulo 7 no
tem qualquer dependncia da SQL.
O Captulo 13 (Otimizao da consulta) pode ser omitido de um curso introdutrio sem afetar a cobertura de
qualquer outro captulo.
Nossa abordagem do processamento de transaes
(Captulos 14 a 16) e nossa abordagem da arquitetura
do sistema (Captulos 17 a 19) consiste em um captulo de viso geral (Captulos 14 e 17, respectivamente),
seguido por captulos com detalhes. Voc pode decidir
usar os Captulos 14 e 17, enquanto omite os captulos
15, 16, 18 e 19, se quiser deixar esses captulos para um
curso avanado.
Os Captulos 20 e 21, abordando depsito de dados, minerao de dados e recuperao de informaes, podem
ser usados como material de autoestudo ou omitidos de
um curso introdutrio.
Os Captulos 22 (Bancos de dados orientados a objeto) e
23 (XML) podem ser omitidos de um curso introdutrio.
Os Captulos 24 a 26, cobrindo o desenvolvimento
avanado de aplicaes, dados espaciais, temporais e
mobilidade, e processamento avanado de transaes,
so adequados para um curso avanado ou para autoestudo pelos alunos.
Os Captulos 27 a 30, que so estudos de caso, so adequados para autoestudo pelos alunos. Como alternativa,
eles podem ser usados como ilustrao dos conceitos
quando os captulos anteriores so apresentados em aula.
Exemplos de plano de estudos do curso, baseados no
livro, podem ser encontrados no site de apoio.

Web Site e suplementos de ensino


Um site para o livro est disponvel no URL http://
www.db-book.com. O site contm (em ingls):




Slides cobrindo todos os captulos do livro.


Respostas para os exerccios prticos.
Os cinco apndices.
Uma lista de errata atualizada.
Material de laboratrio, incluindo SQL DDL e dados de
exemplo para o esquema de universidade e outras relaes usadas nos exerccios, alm de ilustraes para a
montagem e uso de diversos sistemas e ferramentas de
banco de dados.

01/08/2012 17:39:22

xiv

ELSEVIER

Sistema de Banco de Dados

Informaes de contato
Foram feitos todos os esforos para eliminar do texto
erros de digitao, bugs e coisas desse tipo. Porm, como em
novas verses de software, os bugs quase certamente permanecem; uma lista de errata atualizada pode ser encontrada
no site do livro. Agradecemos ao leitor se puder nos informar sobre erros ou omisses no livro que no estejam na
lista atual da errata.
Tambm gostaramos de receber suas sugestes sobre
melhorias no livro. Alm disso, estamos abertos a contribuies para o site do livro que possam ser teis para outros
leitores, como exerccios de programao, sugestes de projetos, laboratrios e tutoriais on-line e dicas de ensino.
O e-mail dever ser endereado para db-book-authors@cs.yale.edu. Qualquer outra correspondncia dever ser enviada para Avi Silberschatz, Department of
Computer Science, Yale University, 51 Prospect Street, P.O.
Box 208285, New Haven, CT 06520-8285 USA.

Agradecimentos
Muitas pessoas nos ajudaram com esta sexta edio, bem
como nas cinco edies anteriores, das quais ela derivada.

Sexta edio
Anastassia Ailamaki, Sailesh Krishnamurthy, Spiros
Papadimitriou e Bianca Schroeder (Carnegie Mellon
University) por escreverem o Captulo 27, que descreve
o sistema de banco de dados PostgreSQL.
Hakan Jakobsson (Oracle), por escrever o Captulo 28,
sobre o sistema de banco de dados Oracle.
Sriram Padmanabhan (IBM), por escrever o Captulo 29,
que descreve o sistema de banco de dados DB2 da IBM.
Sameet Agarwal, Jose A. Blakeley, Thierry DHers, Gerald
Hinson, Dirk Myers, Vaqar Pirzada, Bill Ramos, Balaji
Rathakrishnan, Michael Rys, Florian Waas e Michael
Zwilling (todos da Microsoft) por escreverem o Captulo
30, que descreve o sistema de banco de dados Microsoft
SQL Server, e em particular a Jos Blakeley, por coordenar
e editar o captulo; Csar Galindo-Legaria, Goetz Graefe,
Kalen Delaney e Thomas Casey (todos da Microsoft) por
suas contribuies edio anterior do captulo sobre o
Microsoft SQL Server.
Daniel Abadi, por revisar o sumrio da quinta edio e
ajudar com a nova organizao.
Steve Dolins, University of Florida; Rolando Fernandez,
George Washington University; Frantisek Franek,
McMaster University; Latifur Khan, University of Texas
Dallas; Sanjay Madria, University of Missouri Rolla;
Aris Ouksel, University of Illinois; e Richard Snodgrass,
University of Waterloo; que atuaram como revisores do
livro e cujos comentrios nos ajudaram bastante na formulao desta sexta edio.

Sist_Banco_Dados_Livro.indb 14

Judi Paige por sua ajuda na criao de figuras e slides de


apresentao.
Mark Wogahn, por garantir que o software usado para
produzir o livro, incluindo macros e fontes do LaTeX,
funcionassem corretamente.
N. L. Sarda, pelo feedback que nos ajudou a melhorar
vrios captulos, particularmente o Captulo 11; Vikram
Pudi, por nos motivar a substituir o esquema de banco
anterior; e Shetal Shah, pelo feedback sobre vrios captulos.
Os alunos em Yale, Lehigh e IIT Bombay, por seus comentrios sobre a quinta edio, bem como sobre as cpias iniciais da sexta edio.

Edies anteriores
Chen Li e Sharad Mehrotra, por fornecerem material sobre JDBC e segurana para a quinta edio.
Marilyn Turnamian e Nandprasad Joshi, cujo excelente
auxlio como secretrias foi essencial para o trmino da
quinta edio; Marilyn tambm preparou um esboo inicial do projeto da capa para a quinta edio.
Lyn Dupr revisou a terceira edio e Sara Strandtman
editou o texto da terceira edio.
Nilesh Dalvi, Sumit Sanghai, Gaurav Bhalotia, Arvind
Hulgeri K. V. Raghavan, Prateek Kapadia, Sara Strandtman,
Greg Speegle e Dawn Bezviner ajudarama preparar o contedo complementar para as edies anteriores.
A ideia de usar barcos como parte do conceito da capa
nos foi sugerida inicialmente por Bruce Stephan.
As seguintes pessoas apontaram erros na quinta edio:
Alex Coman, Ravindra Guravannavar, Arvind Hulgeri,
Rohit Kulshreshtha, Sang-Won Lee, Joe H. C. Lu, Alex
N. Napitupulu, H. K. Park, Jian Pei, Fernando Saenz
Perez, Donnie Pinkston, Yma Pinto, Rajarshi Rakshit,
Sandeep Satpal, Amon Seagull, Barry Soroka, Praveen
Ranjan Srivastava, Hans Svensson, Moritz Wiese e Eyob
Delele Yirdaw.
As seguintes pessoas ofereceram sugestes e comentrios para a quinta edio e as edies anteriores
do livro. R. B. Abhyankar, Hani Abu-Salem, Jamel
R. Alsab-bagh, Raj Ashar, Don Batory, Phil Bernhard,
Christian Breimann, Gavin M. Bierman, Janek
Bogucki, Haran Boral, Paul Bourgeois, Phil Bohannon,
Robert Brazile, Yuri Breitbart, Ramzi Bualuan, Michael
Carey, Soumen Chakrabarti, Tom Chappell, Zhengxin
Chen, Y. C. Chin, Jan Chomicki, Laurens Damen,
Prasanna Dhandapani, Qin Ding, Valentin Dinu, J.
Edwards, Christos Faloutsos, Homma Farian, Alan
Fekete, Frantisek Franek, Shashi Gadia, Hector
Garcia-Molina, Goetz Graefe, Jim Gray, Le Gruenwald,
Eitan M. Gurari, William Hankley, Bruce Hillyer,
Ron Hitchens, Chad Hogg, Arvind Hulgeri, Yannis
Ioannidis, Zheng Jiaping, Randy M. Kaplan, Graham

01/08/2012 17:39:22

Prefcioxv
J. L. Kemp, Rami Khouri, Hyoung-Joo Kim, Won
Kim, Henry Korth (pai de Henry F.), Carol Kroll, Hae
Choon Lee, Sang-Won Lee, Irwin Levinstein, Mark
Llewellyn, Gary Lindstrom, Ling Liu, Dave Maier,
Keith Marzullo, Marty Maskarinec, Fletcher Mattox,
Sharad Mehrotra, Jim Melton, Alberto Mendelzon,
Ami Motro, Bhagirath Narahari, Yiu-Kai Dennis Ng,
Thanh-Duy Nguyen, Anil Nigam, Cyril Orji, Meral
Ozsoyoglu, D. B. Phatak, Juan Altmayer Pizzorno,
Bruce Porter, Sunil Prabhakar, Jim Peterson, K. V.
Raghavan, Nahid Rahman, Rajarshi Rakshit, Krithi
Ramamritham, Mike Reiter, Greg Riccardi, Odinaldo
Rodriguez, Mark Roth, Marek Rusinkiewicz, Michael
Rys, Sunita Sarawagi, N. L. Sarda, Patrick Schmid,
Nikhil Sethi, S. Seshadri, Stewart Shen, Shashi
Shekhar, Amit Sheth, Max Smolens, Nandit Soparkar,
Greg Speegle, Jeff Storey, Dilys Thomas, Prem Thomas,
Tim Wahls, Anita Whitehall, Christopher Wilson,
Marianne Winslett, Weining Zhang e Liu Zhenming.

Sist_Banco_Dados_Livro.indb 15

Produo do livro original


O editor foi Raghu Srinivasan. A editora de desenvolvimento foi Melinda D. Bilecki. A gerente de projeto foi
Melissa Leick. O gerente de marketing foi Curt Reynolds.
A supervisora de produo foi Laura Fuller. A projetista do
livro foi Brenda Rolwes. O projeto da capa foi criado pelo
Studio Montage, St. Louis, Missouri. O editor de textos foi
George Watson. O revisor de provas foi Kevin Campbell. O
indexador autnomo foi Tobiah Waldron. A equipe Aptara
consistiu em Raman Arora e Sudeshna Nandy.

Notas pessoais
Sudarshan gostaria de agradecer sua esposa, Sita, por
seu amor e apoio, e a seus filhos Madhur e Advaith por seu
amor e alegria de viver. Hank gostaria de agradecer sua
esposa, Joan, e a seus filhos, Abby e Joe, por seu amor e
compreenso. Avi gostaria de agradecer a Valerie por seu
amor, pacincia e apoio durante a reviso deste livro.
A. S.
H. F. K.
S. S.

01/08/2012 17:39:22

Sist_Banco_Dados_Livro.indb 16

01/08/2012 17:39:22

Sumrioxvii

Sumrio

Captulo 1 Introduo....................................................................................................................................... 1
1.1. Aplicaes do sistema de banco de dados.................................................................................................................1
1.2. Finalidade dos sistemas de banco de dados..............................................................................................................2
1.3. Viso dos dados........................................................................................................................................................4
1.3.1.
Abstrao de dados..................................................................................................................................4
1.3.2.
Instncias e esquemas..............................................................................................................................5
1.3.3.
Modelos de dados....................................................................................................................................5
1.4. Linguagens de banco de dados.................................................................................................................................6
1.4.1.
Linguagem de manipulao de dados.......................................................................................................6
1.4.2.
Linguagem de definio de dados............................................................................................................7
1.5. Bancos de dados relacionais......................................................................................................................................7
1.5.1. Tabelas.....................................................................................................................................................7
1.5.2.
Linguagem de manipulao de dados.......................................................................................................8
1.5.3.
Linguagem de definio de dados............................................................................................................9
1.5.4.
Acesso ao banco de dados pelos programas de aplicao..........................................................................9
1.6. Projeto de banco de dados........................................................................................................................................9
1.6.1.
Processo de projeto..................................................................................................................................9
1.6.2.
Projeto de banco de dados para uma organizao universitria..............................................................10
1.6.3.
O modelo entidade-relacionomento.......................................................................................................10
1.6.4. Normalizao.........................................................................................................................................11
1.7. Armazenamento e consulta de dados......................................................................................................................12
1.7.1.
Gerenciador de armazenamento.............................................................................................................13
1.7.2.
O processador de consulta.....................................................................................................................13
1.8. Gerenciamento de transao...................................................................................................................................13
1.9. Arquitetura do banco de dados...............................................................................................................................14
1.10. Minerao de dados e recuperao de informaes.................................................................................................16
1.11. Bancos de dados especializados..............................................................................................................................16
1.11.1. Modelos de dados baseados em objeto...................................................................................................16
1.11.2. Modelos de dados semiestruturados.......................................................................................................17
1.12. Usurios e administradores de banco de dados.......................................................................................................17
1.12.1. Usurios de banco de dados e interfaces do usurio...............................................................................17
1.12.2. Administrador de banco de dados..........................................................................................................17
1.13. Histria dos sistemas de banco de dados................................................................................................................18
1.14. Resumo..................................................................................................................................................................19

Sist_Banco_Dados_Livro.indb 17

01/08/2012 17:39:22

xviii Sistema de Banco de Dados

ELSEVIER


Termos de reviso...................................................................................................................................................19

Exerccios prticos..................................................................................................................................................20
Exerccios...............................................................................................................................................................21
Ferramentas...........................................................................................................................................................21

Notas bibliogrficas................................................................................................................................................21
PARTE 1
BANCOS DE DADOS RELACIONAIS
Captulo 2 Introduo ao modelo relacional................................................................................................. 25
2.1. Estrutura dos bancos de dados relacionais..............................................................................................................25
2.2. Esquema de banco de dados...................................................................................................................................27
2.3. Chaves...................................................................................................................................................................29
2.4. Diagramas de esquema...........................................................................................................................................30
2.5. Linguagens de consulta relacional..........................................................................................................................31
2.6. Operaes relacionais.............................................................................................................................................31
2.7. Resumo..................................................................................................................................................................34

Termos de reviso...................................................................................................................................................34

Exerccios prticos..................................................................................................................................................34
Exerccios...............................................................................................................................................................35

Notas bibliogrficas................................................................................................................................................35
Captulo 3 Introduo SQL........................................................................................................................... 37
3.1. Viso geral da linguagem de consulta SQL..............................................................................................................37
3.2. Definio de dados da SQL.....................................................................................................................................38
3.2.1.
Tipos bsicos..........................................................................................................................................38
3.2.2.
Definio bsica de esquema..................................................................................................................38
3.3. Estrutura bsica das consultas SQL.........................................................................................................................41
3.3.1.
Consultas sobre uma nica relao.........................................................................................................41
3.3.2.
Consultas sobre mltiplas relaes.........................................................................................................42
3.3.3.
A juno natural....................................................................................................................................46
3.4. Operaes bsicas adicionais..................................................................................................................................47
3.4.1.
A operao renomeao.........................................................................................................................47
3.4.2.
Operaes de string...............................................................................................................................48
3.4.3.
Especificao de atributo na clusula select.............................................................................................49
3.4.4.
Ordem de classificao na exibio de tuplas.........................................................................................49
3.4.5.
Predicados da clusula where..................................................................................................................49
3.5. Operaes de conjunto...........................................................................................................................................50
3.5.1.
A operao unio ..................................................................................................................................50
3.5.2.
A operao interseo............................................................................................................................51
3.5.3.
A operao excluso...............................................................................................................................51
3.6. Valores nulos..........................................................................................................................................................52
3.7. Funes agregadas..................................................................................................................................................53
3.7.1.
Agregao bsica....................................................................................................................................53
3.7.2.
Agregao com agrupamento.................................................................................................................53
3.7.3.
A clusula having....................................................................................................................................55
3.7.4.
Agregao com valores nulos e booleanos..............................................................................................56
3.8. Subconsultas aninhadas..........................................................................................................................................56
3.8.1.
Membros de conjunto............................................................................................................................56
3.8.2.
Comparao de conjunto.......................................................................................................................57
3.8.3.
Teste de relaes vazias..........................................................................................................................57
3.8.4.
Teste da ausncia de tuplas duplicadas...................................................................................................58
3.8.5.
Subconsultas na clusula from................................................................................................................59

Sist_Banco_Dados_Livro.indb 18

01/08/2012 17:39:22

Sumrioxix
3.8.6.
A clusula with.......................................................................................................................................59
3.8.7.
Subconsultas escalares...........................................................................................................................60
3.9. Modificao do banco de dados..............................................................................................................................60
3.9.1. Excluso................................................................................................................................................60
3.9.2. Insero.................................................................................................................................................61
3.9.3. Atualizaes...........................................................................................................................................62
3.10. Resumo..................................................................................................................................................................63

Termos de reviso...................................................................................................................................................63

Exerccios prticos..................................................................................................................................................64
Exerccios...............................................................................................................................................................65
Ferramentas...........................................................................................................................................................67

Notas bibliogrficas................................................................................................................................................67
Captulo 4 SQL intermediria......................................................................................................................... 69
4.1. Expresses join.......................................................................................................................................................69
4.1.1.
Condies de join..................................................................................................................................70
4.1.2.
Outer joins.............................................................................................................................................71
4.1.3.
Tipos e condies de join.......................................................................................................................74
4.2. Views......................................................................................................................................................................74
4.2.1.
Definio da view...................................................................................................................................75
4.2.2. Usando views em consultas SQL.............................................................................................................75
4.2.3.
Views materializadas...............................................................................................................................76
4.2.4.
Atualizao de uma view........................................................................................................................76
4.3. Transaes..............................................................................................................................................................78
4.4. Restries de integridade........................................................................................................................................79
4.4.1.
Restries sobre uma nica relao........................................................................................................79
4.4.2. Restrio not null....................................................................................................................................79
4.4.3. Restrio unique.....................................................................................................................................79
4.4.4.
A clusula check.....................................................................................................................................80
4.4.5.
Integridade referencial...........................................................................................................................80
4.4.6.
Violao de restrio de integridade durante uma transao...................................................................82
4.4.7. Condies check complexas e assertivas (assertions)................................................................................82
4.5. Tipos de dados e esquemas da SQL........................................................................................................................83
4.5.1.
Tipos de data e hora na SQL..................................................................................................................83
4.5.2.
Valores padro.......................................................................................................................................84
4.5.3.
Criao de ndice...................................................................................................................................84
4.5.4.
Tipos de objeto grande...........................................................................................................................85
4.5.5.
Tipos definidos pelo usurio..................................................................................................................85
4.5.6.
Extenses de create table.........................................................................................................................86
4.5.7.
Esquemas, catlogos e ambientes...........................................................................................................87
4.6. Autorizao............................................................................................................................................................87
4.6.1.
Concedendo e revogando privilgios......................................................................................................88
4.6.2.
Roles.......................................................................................................................................................89
4.6.3.
Autorizao sobre views..........................................................................................................................89
4.6.4.
Autorizaes sobre esquemas.................................................................................................................90
4.6.5.
Transferncia de privilgios....................................................................................................................90
4.6.6.
Revogao de privilgios........................................................................................................................91
4.7. Resumo..................................................................................................................................................................92

Termos de reviso...................................................................................................................................................92

Exerccios prticos..................................................................................................................................................92
Exerccios...............................................................................................................................................................94

Notas bibliogrficas................................................................................................................................................94

Sist_Banco_Dados_Livro.indb 19

01/08/2012 17:39:22

xx

Sistema de Banco de Dados

ELSEVIER

Captulo 5 SQL avanada................................................................................................................................ 95


5.1. Acessando a SQL por uma linguagem de programao...........................................................................................95
5.1.1. JDBC......................................................................................................................................................96
5.1.1.1. Conectando ao banco de dados.............................................................................................97
5.1.1.2. Enviando comandos SQL ao sistema de banco de dados.......................................................97
5.1.1.3. Recuperando o resultado de uma consulta............................................................................97
5.1.1.4. Comandos preparados...........................................................................................................98
5.1.1.5. Comandos chamveis (callable statements).............................................................................99
5.1.1.6. Recursos de metadados.........................................................................................................99
5.1.1.7. Outros recursos...................................................................................................................100
5.1.2. ODBC..................................................................................................................................................101
5.1.3.
SQL embutida......................................................................................................................................102
5.2. Funes e procedimentos.....................................................................................................................................105
5.2.1.
Declarando e chamando funes e procedimentos SQL.......................................................................105
5.2.2.
Construes da linguagem para procedimentos e funes....................................................................106
5.2.3.
Rotinas na linguagem externa..............................................................................................................108
5.3. Triggers.................................................................................................................................................................109
5.3.1.
Necessidade de triggers.........................................................................................................................109
5.3.2.
Triggers em SQL...................................................................................................................................109
5.3.3.
Quando no usar triggers......................................................................................................................113
5.4. Consultas recursivas**.........................................................................................................................................114
5.4.1.
Fecho transitivo usando iterao..........................................................................................................114
5.4.2.
Recurso em SQL.................................................................................................................................116
5.5. Recursos de agregao avanados**.....................................................................................................................117
5.5.1.
Posicionamento (Ranking)....................................................................................................................117
5.5.2.
Janelas (Windowing)..............................................................................................................................119
5.6. OLAP**...............................................................................................................................................................120
5.6.1.
Processamento analtico on-line...........................................................................................................120
5.6.2.
Tabulao cruzada e tabelas relacionais................................................................................................124
5.6.3.
OLAP na SQL......................................................................................................................................125
5.7. Resumo................................................................................................................................................................128

Termos de reviso.................................................................................................................................................129

Exerccios prticos................................................................................................................................................129
Exerccios.............................................................................................................................................................130
Ferramentas.........................................................................................................................................................132

Notas bibliogrficas..............................................................................................................................................132
Captulo 6 Linguagens formais de consulta relacional............................................................................... 133
6.1. A lgebra relacional..............................................................................................................................................133
6.1.1.
Operaes fundamentais......................................................................................................................133
6.1.1.1. A operao seleo..............................................................................................................133
6.1.1.2. A operao projeo............................................................................................................134
6.1.1.3. Composio das operaes relacionais.................................................................................134
6.1.1.4. A operao unio.................................................................................................................135
6.1.1.5. A operao diferena de conjuntos......................................................................................136
6.1.1.6. A operao produto cartesiano............................................................................................136
6.1.1.7. A operao renomeao....................................................................................................................139
6.1.2.
Definio formal da lgebra relacional..................................................................................................140
6.1.3.
Outras operaes da lgebra relacional.................................................................................................140
6.1.3.1. A operao interseo de conjuntos.....................................................................................140
6.1.3.2. A operao juno natural...................................................................................................140
6.1.3.3. A operao atribuio..........................................................................................................142
6.1.3.4. Operaes outer join............................................................................................................142

Sist_Banco_Dados_Livro.indb 20

01/08/2012 17:39:22

Sumrioxxi
6.1.4.

Operaes estendidas da lgebra relacional..........................................................................................144


6.1.4.1. Projeo generalizada..........................................................................................................144
6.1.4.2. Agregao............................................................................................................................144
6.2. O clculo relacional de tupla................................................................................................................................147
6.2.1.
Exemplos de consulta..........................................................................................................................147
6.2.2.
Definio formal..................................................................................................................................148
6.2.3.
Segurana das expresses.....................................................................................................................149
6.2.4.
Poder expressivo das linguagens..........................................................................................................149
6.3. O clculo relacional de domnio...........................................................................................................................149
6.3.1.
Definio formal..................................................................................................................................150
6.3.2.
Exemplos de consulta..........................................................................................................................150
6.3.3.
Segurana das expresses.....................................................................................................................150
6.3.4.
Poder expressivo das linguagens..........................................................................................................151
6.4. Resumo................................................................................................................................................................151

Termos de reviso.................................................................................................................................................152

Exerccios prticos................................................................................................................................................152
Exerccios.............................................................................................................................................................153

Notas bibliogrficas..............................................................................................................................................154
PARTE 2
PROJETO DE BANCO DE DADOS
Captulo 7 Projeto de banco de dados e o modelo E-R.............................................................................. 157
7.1. Viso geral do processo de projeto........................................................................................................................157
7.1.1.
Fases do projeto...................................................................................................................................157
7.1.2.
Alternativas de projeto.........................................................................................................................158
7.2. O modelo entidade-relacionamento......................................................................................................................159
7.2.1.
Conjuntos de entidades........................................................................................................................159
7.2.2.
Conjuntos de relacionamentos.............................................................................................................160
7.2.3. Atributos..............................................................................................................................................162
7.3. Restries.............................................................................................................................................................163
7.3.1.
Cardinalidades de mapeamento...........................................................................................................163
7.3.2.
Restries de participao....................................................................................................................164
7.3.3. Chaves.................................................................................................................................................165
7.4. Removendo atributos redundantes nos conjuntos de entidades............................................................................166
7.5. Diagramas de entidade-relacionamento................................................................................................................167
7.5.1.
Estrutura bsica...................................................................................................................................167
7.5.2.
Cardinalidades de mapeamento...........................................................................................................168
7.5.3.
Atributos complexos ...........................................................................................................................169
7.5.4.
Papis (Roles).......................................................................................................................................170
7.5.5.
Conjuntos de relacionamentos no binrios.........................................................................................170
7.5.6.
Conjunto de entidades fraco................................................................................................................170
7.5.7.
Diagrama E-R para universidade..........................................................................................................172
7.6. Reduo aos esquemas relacionais........................................................................................................................173
7.6.1.
Representao dos conjuntos de entidades fortes.................................................................................173
7.6.2.
Representao de conjuntos de entidades forte com atributos complexos.............................................173
7.6.3.
Representao do conjunto de entidades fraco.....................................................................................174
7.6.4.
Representao de conjunto de relacionamento.....................................................................................175
7.6.4.1. Redundncia de esquemas...................................................................................................176
7.6.4.2. Combinao de esquemas...................................................................................................176
7.7. Aspectos de projeto de entidade-relacionamento..................................................................................................177
7.7.1.
Uso de conjuntos de entidades versus atributos....................................................................................177
7.7.2.
Uso de conjuntos de entidades versus conjuntos de relacionamentos...................................................178

Sist_Banco_Dados_Livro.indb 21

01/08/2012 17:39:22

xxii Sistema de Banco de Dados

ELSEVIER

7.7.3.
Conjuntos de relacionamentos binrios versus n-rios..........................................................................178
7.7.4.
Posicionamento dos atributos de relacionamento.................................................................................179
7.8. Recursos de E-R estendidos..................................................................................................................................180
7.8.1. Especializao......................................................................................................................................180
7.8.2. Generalizao.......................................................................................................................................181
7.8.3.
Herana de atributo.............................................................................................................................182
7.8.4.
Restries sobre generalizaes............................................................................................................183
7.8.5. Agregao............................................................................................................................................184
7.8.6.
Reduo aos esquemas relacionais........................................................................................................185
7.8.6.1. Representao da generalizao...........................................................................................185
7.8.6.2. Representao da agregao.................................................................................................186
7.9. Notaes alternativas para modelagem de dados..................................................................................................186
7.9.1.
Notaes E-R alternativas.....................................................................................................................187
7.9.2.
Unified Modeling Language....................................................................................................................188
7.10. Outros aspectos do projeto de banco de dados.....................................................................................................190
7.10.1. Restries de dados e projeto de banco de dados relacional.................................................................190
7.10.2. Requisitos de uso: consultas, desempenho...........................................................................................191
7.10.3. Requisitos de autorizao.....................................................................................................................191
7.10.4. Fluxo de dados, fluxo de trabalho........................................................................................................191
7.10.5. Outras questes do projeto de banco de dados....................................................................................192
7.11. Resumo................................................................................................................................................................192

Termos de reviso.................................................................................................................................................193

Exerccios prticos................................................................................................................................................193
Exerccios.............................................................................................................................................................195
Ferramentas.........................................................................................................................................................197

Notas bibliogrficas..............................................................................................................................................197
Captulo 8 Projeto de banco de dados relacional....................................................................................... 199
8.1. Caractersticas de um bom projeto relacional........................................................................................................199
8.1.1.
Alternativa de projeto: esquemas maiores.............................................................................................200
8.1.2.
Alternativa de projeto: esquemas menores............................................................................................200
8.2. Domnios atmicos e primeira forma normal........................................................................................................202
8.3. Decomposio usando dependncias funcionais...................................................................................................203
8.3.1.
Chaves e dependncias funcionais.......................................................................................................203
8.3.2.
Forma normal de Boyce-Codd.............................................................................................................205
8.3.3.
FNBC e preservao de dependncia....................................................................................................206
8.3.4.
Terceira forma normal..........................................................................................................................207
8.3.5.
Formas normais mais altas...................................................................................................................207
8.4. Teoria da dependncia funcional..........................................................................................................................208
8.4.1.
Fecho de um conjunto de dependncias funcionais.............................................................................208
8.4.2.
Cobertura cannica..............................................................................................................................210
8.4.3.
Decomposio sem perdas...................................................................................................................212
8.4.4.
Preservao de dependncia.................................................................................................................213
8.5. Algoritmos para decomposio.............................................................................................................................214
8.5.1.
Decomposio FNBC...........................................................................................................................214
8.5.1.1. Teste para FNBC..................................................................................................................214
8.5.1.2. Algoritmo de decomposio da FNBC.................................................................................214
8.5.2.
Decomposio 3FN..............................................................................................................................216
8.5.3.
Corretude do algoritmo da 3FN...........................................................................................................216
8.5.4.
Comparao entre FNBC e 3FN...........................................................................................................217
8.6. Decomposio usando dependncias de valores mltiplos....................................................................................218
8.6.1.
Dependncias de valores mltiplos......................................................................................................218
8.6.2.
Quarta forma normal...........................................................................................................................220

Sist_Banco_Dados_Livro.indb 22

01/08/2012 17:39:22

Sumrioxxiii
8.6.3.
Decomposio 4FN..............................................................................................................................220
Mais formas normais............................................................................................................................................221
Processo de projeto de banco de dados.................................................................................................................221
8.8.1.
Modelo E-R e normalizao..................................................................................................................221
8.8.2.
Nomeao dos atributos e relaes.......................................................................................................222
8.8.3.
Desnormalizao para desempenho.....................................................................................................222
8.8.4.
Outros aspectos de projeto...................................................................................................................223
8.9. Modelando dados temporais.................................................................................................................................223
8.10. Resumo................................................................................................................................................................225

Termos de reviso.................................................................................................................................................225

Exerccios prticos................................................................................................................................................226
Exerccios.............................................................................................................................................................228

Notas bibliogrficas..............................................................................................................................................229
8.7.
8.8.

Captulo 9 Projeto e desenvolvimento de aplicao.................................................................................. 231


9.1. Programas aplicativos e interfaces de usurio........................................................................................................231
9.2. Fundamentos da Web...........................................................................................................................................233
9.2.1.
Uniform Resource Locators.....................................................................................................................233
9.2.2.
Hyper Text Markup Language.................................................................................................................233
9.2.3.
Servidores Web e sesses......................................................................................................................234
9.3. Servlets e JSP.........................................................................................................................................................236
9.3.1.
Um exemplo de servlet.........................................................................................................................236
9.3.2.
Sesses de servlet..................................................................................................................................237
9.3.3.
Ciclo de vida do servlet........................................................................................................................238
9.3.4.
Suporte para servlet..............................................................................................................................238
9.3.5.
Scripting no lado servidor.....................................................................................................................239
9.3.6.
Scripting no lado cliente........................................................................................................................240
9.4. Arquiteturas de aplicao.....................................................................................................................................242
9.4.1.
A camada da lgica de negcio.............................................................................................................242
9.4.2.
A camada de acesso aos dados e o mapeamento objeto-relacional........................................................243
9.4.3.
Web Services.........................................................................................................................................244
9.4.4.
Operao desconectada........................................................................................................................245
9.5. Desenvolvimento rpido de aplicao...................................................................................................................245
9.5.1.
Ferramentas para criar interfaces com o usurio...................................................................................245
9.5.2.
Frameworks de aplicao Web.............................................................................................................246
9.5.3.
Geradores de relatrios........................................................................................................................247
9.6. Desempenho da aplicao....................................................................................................................................247
9.6.1.
Reduzindo o overhead com caching.......................................................................................................247
9.6.2.
Processamento paralelo........................................................................................................................248
9.7. Segurana da aplicao.........................................................................................................................................248
9.7.1. SQL Injection........................................................................................................................................248
9.7.2.
Scripting entre sites e falsa solicitao....................................................................................................249
9.7.3.
Vazamento de senha.............................................................................................................................250
9.7.4.
Autenticao da aplicao....................................................................................................................250
9.7.5.
Autorizao em nvel de aplicao........................................................................................................251
9.7.6.
Trilhas de auditoria..............................................................................................................................253
9.7.7. Privacidade..........................................................................................................................................253
9.8. Criptografia e suas aplicaes...............................................................................................................................254
9.8.1.
Tcnicas de criptografia.......................................................................................................................254
9.8.2.
Suporte para criptografia nos bancos de dados.....................................................................................256
9.8.3.
Criptografia e autenticao...................................................................................................................256
9.8.3.1. Assinaturas digitais..............................................................................................................257
9.8.3.2. Certificados digitais.............................................................................................................257

Sist_Banco_Dados_Livro.indb 23

01/08/2012 17:39:22

xxiv Sistema de Banco de Dados

ELSEVIER

9.9. Resumo................................................................................................................................................................258

Termos de reviso.................................................................................................................................................258

Exerccios prticos................................................................................................................................................259
Exerccios.............................................................................................................................................................259
Ferramentas.........................................................................................................................................................263

Notas bibliogrficas..............................................................................................................................................263
PARTE 3
ARMAZENAMENTO E CONSULTA DE DADOS
Captulo 10 Armazenamento e estrutura de arquivos............................................................................... 267
10.1. Viso geral do meio de armazenamento fsico.......................................................................................................267
10.2. Discos magnticos e armazenamento flash............................................................................................................269
10.2.1. Caractersticas fsicas dos discos...........................................................................................................269
10.2.2. Medidas de desempenho dos discos.....................................................................................................271
10.2.3. Otimizao de acesso ao bloco de disco...............................................................................................272
10.2.4. Armazenamento flash...........................................................................................................................274
10.3. RAID....................................................................................................................................................................275
10.3.1. Melhoria da confiabilidade por meio da redundncia...........................................................................275
10.3.2. Melhoria do desempenho por meio do paralelismo..............................................................................276
10.3.3. Nveis de RAID....................................................................................................................................277
10.3.4. Escolha do nvel de RAID.....................................................................................................................279
10.3.5. Questes de hardware..........................................................................................................................280
10.3.6. Outras aplicaes de RAID...................................................................................................................281
10.4. Armazenamento tercirio......................................................................................................................................281
10.4.1. Discos pticos......................................................................................................................................281
10.4.2. Fitas magnticas...................................................................................................................................281
10.5. Organizao de arquivo........................................................................................................................................282
10.5.1. Registros de tamanho fixo....................................................................................................................283
10.5.2. Registros de tamanho varivel..............................................................................................................284
10.6. Organizao de registros em arquivos...................................................................................................................286
10.6.1. Organizao sequencial de arquivos.....................................................................................................286
10.6.2. Organizao de arquivos com agrupamento de mltiplas tabelas.........................................................288
10.7. Armazenamento em dicionrio de dados..............................................................................................................289
10.8. Buffer de banco de dados......................................................................................................................................290
10.8.1. Gerenciador de buffer...........................................................................................................................291
10.8.2. Polticas de substituio de buffer.........................................................................................................291
10.9. Resumo................................................................................................................................................................293

Termos de reviso.................................................................................................................................................293

Exerccios prticos................................................................................................................................................294
Exerccios.............................................................................................................................................................295

Notas bibliogrficas..............................................................................................................................................295
Captulo 11 Indexao e hashing................................................................................................................. 297
11.1. Conceitos bsicos.................................................................................................................................................297
11.2. ndices ordenados................................................................................................................................................298
11.2.1. ndices densos e esparsos.....................................................................................................................298
11.2.2. ndices multinveis...............................................................................................................................300
11.2.3. Atualizao do ndice...........................................................................................................................301
11.2.4. ndices secundrios..............................................................................................................................302
11.2.5. ndices por mltiplas chaves................................................................................................................303
11.3. Arquivos de ndice de rvore B+............................................................................................................................303
11.3.1. Estrutura de uma rvore B+..................................................................................................................303

Sist_Banco_Dados_Livro.indb 24

01/08/2012 17:39:22

Sumrioxxv
11.3.2.
11.3.3.

Consultas em rvores B+.......................................................................................................................305


Atualizaes em rvores B+...................................................................................................................307
11.3.3.1. Insero...............................................................................................................................308
11.3.3.2. Excluso..............................................................................................................................310
11.3.4. Chaves de busca no exclusivas...........................................................................................................312
11.3.5. Complexidade das atualizaes da rvore B+........................................................................................313
11.4. Extenses de rvore B+..........................................................................................................................................313
11.4.1. Organizao de arquivos por rvore B+.................................................................................................313
11.4.2. ndices secundrios e relocao de registros.........................................................................................315
11.4.3. Indexando strings.................................................................................................................................315
11.4.4. Carregamento em massa de ndices de rvore B+ (Bulk loading).............................................................315
11.4.5. Arquivos de ndice de rvore B.............................................................................................................316
11.4.6. Memria flash......................................................................................................................................318
11.5. Acesso por chave mltipla....................................................................................................................................318
11.5.1. Usando mltiplos ndices de chave nica.................................................................................................. 318
11.5.2. ndices sobre chaves mltiplas.............................................................................................................318
11.5.3. ndices de cobertura.............................................................................................................................319
11.6. Hashing esttico....................................................................................................................................................319
11.6.1. Funes de hash...................................................................................................................................320
11.6.2. Tratamento de estouros de bucket.........................................................................................................321
11.6.3. ndices de hash.....................................................................................................................................322
11.7. Hashing dinmico.................................................................................................................................................323
11.7.1. Estrutura de dados...............................................................................................................................323
11.7.2. Consultas e atualizaes.......................................................................................................................324
11.7.3. Hashing esttico versus hashing dinmico..............................................................................................328
11.8. Comparao de indexao ordenada e hashing......................................................................................................328
11.9. ndices de mapa de bits........................................................................................................................................329
11.9.1. Estrutura de ndice de mapa de bits.....................................................................................................330
11.9.2. Implementao eficiente de operaes de mapa de bits........................................................................331
11.9.3. Mapas de bits e rvores B+....................................................................................................................331
11.10. Definio de ndice na SQL..................................................................................................................................332
11.11. Resumo................................................................................................................................................................332

Termos de reviso.................................................................................................................................................333

Exerccios prticos................................................................................................................................................334
Exerccios.............................................................................................................................................................335

Notas bibliogrficas..............................................................................................................................................336
Captulo 12 Processamento da consulta...................................................................................................... 337
12.1. Viso geral............................................................................................................................................................337
12.2. Medidas de custo da consulta...............................................................................................................................339
12.3. Operao de seleo.............................................................................................................................................340
12.3.1. Selees usando varreduras de arquivo e ndices..................................................................................340
12.3.2. Selees envolvendo comparaes.......................................................................................................342
12.3.3. Implementao de selees complexas.................................................................................................342
12.4. Classificao (sorting)............................................................................................................................................343
12.4.1. Algoritmo sort-merge externo...............................................................................................................343
12.4.2. Anlise de custo do sort-merge externo.................................................................................................344
12.5. Operao de juno..............................................................................................................................................345
12.5.1. Juno por loop aninhado.....................................................................................................................345
12.5.2. Juno por loop aninhado em bloco.....................................................................................................346
12.5.3. Juno por loop aninhado indexado.....................................................................................................347
12.5.4. Juno merge.......................................................................................................................................347
12.5.4.1. Algoritmo de juno merge.................................................................................................347

Sist_Banco_Dados_Livro.indb 25

01/08/2012 17:39:22

xxvi Sistema de Banco de Dados

ELSEVIER

12.5.4.2. Anlise de custo..................................................................................................................349


12.5.4.3. Juno merge hbrido..........................................................................................................350
12.5.5. Juno hash.........................................................................................................................................350
12.5.5.1. Fundamentos......................................................................................................................351
12.5.5.2. Particionamento recursivo...................................................................................................351
12.5.5.3. Tratamento de estouros.......................................................................................................352
12.5.5.4. Custo da juno hash..........................................................................................................352
12.5.5.5. Juno hash hbrida.............................................................................................................353
12.5.6. Junes complexas...............................................................................................................................353
12.6. Outras operaes..................................................................................................................................................354
12.6.1. Eliminao de duplicatas......................................................................................................................354
12.6.2. Projeo...............................................................................................................................................354
12.6.3. Operaes de conjunto........................................................................................................................354
12.6.4. Juno externa.....................................................................................................................................355
12.6.5. Agregao............................................................................................................................................355
12.7. Avaliao de expresses........................................................................................................................................356
12.7.1. Materializao......................................................................................................................................356
12.7.2. Canalizao (pipelining)........................................................................................................................357
12.7.2.1. Implementao da canalizao (pipelining)...........................................................................357
12.7.2.2. Algoritmos de avaliao para a canalizao..........................................................................358
12.8. Resumo................................................................................................................................................................359

Termos de reviso.................................................................................................................................................360

Exerccios prticos................................................................................................................................................360
Exerccios.............................................................................................................................................................361

Notas bibliogrficas..............................................................................................................................................362
Captulo 13 Otimizao da consulta............................................................................................................ 363
13.1. Viso geral............................................................................................................................................................363
13.2. Transformao de expresses relacionais..............................................................................................................365
13.2.1. Regras de equivalncia.........................................................................................................................365
13.2.2. Exemplos de transformaes................................................................................................................367
13.2.3. Ordenao das operaes de juno.....................................................................................................369
13.2.4. Enumerao de expresses equivalentes...............................................................................................369
13.3. Estimando estatsticas de resultados de expresso.................................................................................................370
13.3.1. Informaes de catlogo.......................................................................................................................370
13.3.2. Estimativa de tamanho da seleo........................................................................................................372
13.3.3. Estimativa de tamanho de juno.........................................................................................................373
13.3.4. Estimativa de tamanho para outras operaes......................................................................................374
13.3.5. Estimativa do nmero de valores distintos...........................................................................................374
13.4. Escolha de planos de avaliao.............................................................................................................................374
13.4.1. Seleo de ordem de juno baseada em custo.....................................................................................375
13.4.2. Otimizao baseada em custo com regras de equivalncia....................................................................377
13.4.3. Heurstica na otimizao......................................................................................................................377
13.4.4. Otimizando subconsultas aninhadas**................................................................................................379
13.5. Views materializadas**.........................................................................................................................................380
13.5.1. Manuteno de view.............................................................................................................................381
13.5.2. Manuteno incremental de view..........................................................................................................381
13.5.2.1. Operao de juno.............................................................................................................381
13.5.2.2. Operaes de seleo e projeo..........................................................................................381
13.5.2.3. Operaes de agregao......................................................................................................382
13.5.2.4. Outras operaes.................................................................................................................382
13.5.2.5. Tratamento de expresses....................................................................................................382
13.5.3. Otimizao da consulta e views materializadas......................................................................................383
13.5.4. View materializada e seleo de ndice..................................................................................................383

Sist_Banco_Dados_Livro.indb 26

01/08/2012 17:39:22

Sumrioxxvii
13.6. Tpicos avanados em otimizao da consulta**..................................................................................................383
13.6.1. Otimizao top K.................................................................................................................................383
13.6.2. Minimizao de juno........................................................................................................................384
13.6.3. Otimizao de atualizaes..................................................................................................................384
13.6.4. Otimizao de consultas mltiplas e varreduras compartilhadas..........................................................384
13.6.5. Otimizao de consulta paramtrica.....................................................................................................385
13.7. Resumo................................................................................................................................................................385

Termos de reviso.................................................................................................................................................386

Exerccios prticos................................................................................................................................................386
Exerccios.............................................................................................................................................................388

Notas bibliogrficas..............................................................................................................................................388
PARTE 4
GERENCIAMENTO DE TRANSAO
Captulo 14 Transaes................................................................................................................................. 393
14.1. Conceito de transao..........................................................................................................................................393
14.2. Um modelo de transao simples.........................................................................................................................394
14.3. Estrutura de armazenamento................................................................................................................................396
14.4. Atomicidade e durabilidade da transao.............................................................................................................396
14.5. Isolamento da transao.......................................................................................................................................398
14.6. Serializabilidade...................................................................................................................................................402
14.7. Isolamento e atomicidade da transao.................................................................................................................407
14.7.1. Schedules recuperveis..........................................................................................................................407
14.7.2. Schedules no em cascata......................................................................................................................407
14.8. Nveis de isolamento da transao........................................................................................................................408
14.9. Implementao de nveis de isolamento................................................................................................................409
14.9.1. Bloqueio (Locking)................................................................................................................................410
14.9.2. Timestamps..........................................................................................................................................410
14.9.3. Verses mltiplas e isolamento de instantneo (snapshot).....................................................................410
14.10. Transaes como instrues SQL..........................................................................................................................411
14.11. Resumo................................................................................................................................................................412

Termos de reviso.................................................................................................................................................413

Exerccios prticos................................................................................................................................................413
Exerccios.............................................................................................................................................................414

Notas bibliogrficas..............................................................................................................................................415
Captulo 15 Controle de concorrncia......................................................................................................... 417
15.1. Protocolos baseados em bloqueio.........................................................................................................................417
15.1.1. Bloqueios (Locks).................................................................................................................................417
15.1.2. Concesso de bloqueios (granting of locks)............................................................................................420
15.1.3. O protocolo de bloqueio em duas fases................................................................................................421
15.1.4. Implementao do bloqueio.................................................................................................................423
15.1.5. Protocolos baseados em grafo...............................................................................................................424
15.2. Tratamento de impasse (Deadlock)........................................................................................................................426
15.2.1. Preveno de impasse..........................................................................................................................426
15.2.2. Deteco e recuperao de impasse......................................................................................................427
15.2.2.1. Deteco de impasse............................................................................................................427
15.2.2.2. Recuperao de impasse......................................................................................................428
15.3. Granularidade mltipla........................................................................................................................................429
15.4. Protocolos baseados em timestamp........................................................................................................................431
15.4.1. Timestamps...........................................................................................................................................431
15.4.2. O protocolo de ordenao por timestamp.............................................................................................431

Sist_Banco_Dados_Livro.indb 27

01/08/2012 17:39:22

xxviii Sistema de Banco de Dados

ELSEVIER

15.4.3. Regra do write de Thomas....................................................................................................................432


15.5. Protocolos baseados em validao........................................................................................................................433
15.6. Esquemas de mltipla verso................................................................................................................................435
15.6.1. Ordenao por timestamp em mltipla verso......................................................................................435
15.6.2. Bloqueio de duas fases em mltipla verso...........................................................................................436
15.7. Isolamento de instantneo (snapshot)....................................................................................................................437
15.7.1. Etapas de validao de transaes de atualizao..................................................................................437
15.7.2. Problemas de serializabilidade..............................................................................................................438
15.8. Operaes de insero, operaes de excluso e leituras de predicado..................................................................440
15.8.1. Excluso..............................................................................................................................................440
15.8.2. Insero...............................................................................................................................................440
15.8.3. Leituras de predicato e fenmeno fantasma..........................................................................................441
15.9. Nveis de consistncia fracos na prtica................................................................................................................442
15.9.1. Consistncia de grau dois.....................................................................................................................442
15.9.2. Estabilidade de cursor..........................................................................................................................443
15.9.3. Controle de concorrncia atravs de interaes do usurio...................................................................443
15.10. Concorrncia em estruturas de ndice**...............................................................................................................444
15.11. Resumo................................................................................................................................................................447

Termos de reviso.................................................................................................................................................448

Exerccios prticos................................................................................................................................................449
Exerccios.............................................................................................................................................................451

Notas bibliogrficas..............................................................................................................................................452
Captulo 16 Sistema de recuperao............................................................................................................ 453
16.1. Classificao das falhas.........................................................................................................................................453
16.2. Armazenamento...................................................................................................................................................454
16.2.1. Implementao do armazenamento estvel..........................................................................................454
16.2.2. Acesso aos dados..................................................................................................................................455
16.3. Recuperao e atomicidade...................................................................................................................................456
16.3.1. Registros de log....................................................................................................................................457
16.3.2. Modificao de banco de dados............................................................................................................457
16.3.3. Controle de concorrncia e recuperao...............................................................................................458
16.3.4. Confirmao da transao....................................................................................................................458
16.3.5. Usando o log para transaes redo e undo...........................................................................................458
16.3.6. Pontos de verificao (checkpoints)........................................................................................................460
16.4. Algoritmo de recuperao.....................................................................................................................................461
16.4.1. Rollback da transao............................................................................................................................462
16.4.2. Recuperao aps uma falha do sistema...............................................................................................462
16.5. Gerenciamento de buffer.......................................................................................................................................463
16.5.1. Buffering de registro de log...................................................................................................................463
16.5.2. Buffering de banco de dados.................................................................................................................464
16.5.3. Papel do sistema operacional no gerenciamento de buffer.....................................................................465
16.5.4. Ponto de verificao nebuloso..............................................................................................................466
16.6. Falha com perda de armazenamento no voltil...................................................................................................466
16.7. Liberao de bloqueio antecipada e operaes de undo lgico..............................................................................467
16.7.1. Operaes lgicas................................................................................................................................467
16.7.2. Registros de log de undo lgico............................................................................................................467
16.7.3. Rollback de transao com undo lgico...............................................................................................468
16.7.4. Questes de concorrncia no undo lgico............................................................................................470
16.8. ARIES**...............................................................................................................................................................471
16.8.1. Estruturas de dados.............................................................................................................................471
16.8.2. Algoritmo de recuperao....................................................................................................................473
16.8.2.1. Passada de anlise...............................................................................................................473

Sist_Banco_Dados_Livro.indb 28

01/08/2012 17:39:22

Sumrioxxix
16.8.2.2. Passada de redo...................................................................................................................473
16.8.2.3. Passada de undo e rollback da transao.............................................................................473
16.8.3. Outros recursos....................................................................................................................................474
16.9. Sistemas de backup remoto..................................................................................................................................475
16.10. Resumo................................................................................................................................................................476

Termos de reviso.................................................................................................................................................478

Exerccios prticos................................................................................................................................................478
Exerccios.............................................................................................................................................................480

Notas bibliogrficas..............................................................................................................................................480
PARTE 5
ARQUITETURA DO SISTEMA
Captulo 17 Arquiteturas de sistema de banco de dados........................................................................... 485
17.1. Arquiteturas centralizadas e cliente-servidor............................................................................................485
17.1.1. Sistemas centralizados..........................................................................................................................485
17.1.2. Sistemas cliente-servidor......................................................................................................................486
17.2. Arquiteturas de sistema servidor...........................................................................................................................487
17.2.1. Servidores de transao........................................................................................................................488
17.2.2. Servidores de dados.............................................................................................................................489
17.2.3. Servidores baseados em nuvem............................................................................................................490
17.3. Sistemas paralelos.................................................................................................................................................491
17.3.1. Ganho de velocidade e ganho de escala................................................................................................491
17.3.2. Redes de interconexo..........................................................................................................................493
17.3.3. Arquiteturas paralelas de banco de dados.............................................................................................493
17.3.3.1. Memria compartilhada......................................................................................................494
17.3.3.2. Disco compartilhado...........................................................................................................494
17.3.3.3. Nada compartilhado............................................................................................................495
17.3.3.4. Hierrquico.........................................................................................................................495
17.4. Sistemas distribudos............................................................................................................................................495
17.4.1. Exemplo de banco de dados distribudo..............................................................................................496
17.4.2. Questes de implementao.................................................................................................................497
17.5. Tipos de redes......................................................................................................................................................497
17.5.1. Redes locais.........................................................................................................................................498
17.5.2. Redes remotas......................................................................................................................................499
17.6. Resumo................................................................................................................................................................499

Termos de reviso.................................................................................................................................................500

Exerccios prticos................................................................................................................................................500
Exerccios.............................................................................................................................................................501

Notas bibliogrficas..............................................................................................................................................502
Captulo 18 Bancos de dados paralelos....................................................................................................... 503
18.1. Introduo............................................................................................................................................................503
18.2. Paralelismo de E/S................................................................................................................................................503
18.2.1. Tcnicas de particionamento................................................................................................................504
18.2.2. Comparao de tcnicas de particionamento........................................................................................504
18.2.3. Tratamento de distoro (skew)............................................................................................................505
18.3. Paralelismo interconsulta......................................................................................................................................506
18.4. Paralelismo intraconsulta......................................................................................................................................507
18.5. Paralelismo intraoperao.....................................................................................................................................507
18.5.1. Classificao paralela............................................................................................................................508
18.5.1.1. Classificao por particionamento de intervalo....................................................................508
18.5.1.2. Sort-Merge externo paralelo.................................................................................................508

Sist_Banco_Dados_Livro.indb 29

01/08/2012 17:39:22

xxx Sistema de Banco de Dados

ELSEVIER

18.5.2.

Juno paralela.....................................................................................................................................509
18.5.2.1. Juno particionada.............................................................................................................509
18.5.2.2. Juno fragmentar e replicar................................................................................................510
18.5.2.3. Juno de hash paralelo particionado...................................................................................511
18.5.2.4. Juno paralela de loop aninhado.........................................................................................511
18.5.3. Outras operaes relacionais................................................................................................................511
18.5.4. Custo da avaliao paralela das operaes............................................................................................512
18.6. Paralelismo interoperao.....................................................................................................................................513
18.6.1. Paralelismo canalizado (pipelined parallelism).......................................................................................513
18.6.2. Paralelismo independente....................................................................................................................513
18.7. Otimizao de consulta........................................................................................................................................513
18.8. Projeto de sistemas paralelos................................................................................................................................514
18.9. Paralelismo em processadores multicore...............................................................................................................515
18.9.1. Paralelismo versus velocidade bruta......................................................................................................515
18.9.2. Memria em cache e multithreading......................................................................................................515
18.9.3. Adaptando o projeto do sistema de banco de dados s arquiteturas modernas.....................................516
18.10. Resumo................................................................................................................................................................516

Termos de reviso.................................................................................................................................................517

Exerccios prticos................................................................................................................................................517
Exerccios.............................................................................................................................................................518

Notas bibliogrficas..............................................................................................................................................519
Captulo 19 Bancos de dados distribudos.................................................................................................. 521
19.1. Bancos de dados homogneos e heterogneos......................................................................................................521
19.2. Armazenamento de dados distribudo..................................................................................................................522
19.2.1. Replicao de dados.............................................................................................................................522
19.2.2. Fragmentao de dados........................................................................................................................522
19.2.3. Transparncia.......................................................................................................................................523
19.3. Transaes distribudas.........................................................................................................................................524
19.3.1. Estrutura do sistema............................................................................................................................524
19.3.2. Modos de falha do sistema...................................................................................................................525
19.4. Protocolos commit..................................................................................................................................................525
19.4.1. Commit de duas fases...........................................................................................................................525
19.4.1.1. O protocolo commit.............................................................................................................525
19.4.1.2. Tratamento de falhas...........................................................................................................526
19.4.1.3. Controle de recuperao e concorrncia..............................................................................527
19.4.2. Commit de trs fases.............................................................................................................................527
19.4.3. Modelos alternativos de processamento de transao...........................................................................527
19.5. Controle de concorrncia em bancos de dados distribudos..................................................................................529
19.5.1. Protocolos de bloqueio.........................................................................................................................529
19.5.1.1. Tcnica de gerenciador de bloqueio nico...........................................................................529
19.5.1.2. Gerenciador de bloqueio distribudo...................................................................................530
19.5.1.3. Cpia primria....................................................................................................................530
19.5.1.4. Protocolo da maioria...........................................................................................................530
19.5.1.5. Protocolo tendencioso.........................................................................................................530
19.5.1.6. Protocolo de consenso de qurum........................................................................................531
19.5.2. Timestamp............................................................................................................................................531
19.5.3. Replicao com graus de consistncia fracos........................................................................................532
19.5.4. Tratamento de impasse (deadlock)........................................................................................................532
19.6. Disponibilidade....................................................................................................................................................534
19.6.1. Tcnica baseada na maioria..................................................................................................................535
19.6.2. Tcnica ler em um, escrever em todos os disponveis...........................................................................536
19.6.3. Reintegrao do stio............................................................................................................................536

Sist_Banco_Dados_Livro.indb 30

01/08/2012 17:39:22

Sumrioxxxi
19.6.4. Comparao com o backup remoto......................................................................................................536
19.6.5. Seleo do coordenador.......................................................................................................................536
19.6.6. Trocando consistncia por disponibilidade...........................................................................................537
19.7. Processamento de consulta distribudo.................................................................................................................538
19.7.1. Transformao de consulta...................................................................................................................538
19.7.2. Processamento de juno simples.........................................................................................................539
19.7.3. Estratgia de semijuno......................................................................................................................539
19.7.4. Estratgias de juno que exploram o paralelismo................................................................................540
19.8. Bancos de dados distribudos heterogneos..........................................................................................................540
19.8.1. Viso unificada dos dados....................................................................................................................540
19.8.2. Processamento de consulta...................................................................................................................541
19.8.3. Gerenciamento de transao em multibancos de dados........................................................................542
19.9. Bancos de dados baseados em nuvem...................................................................................................................543
19.9.1. Sistemas de armazenamento de dados em nuvem................................................................................543
19.9.1.1. Representao de dados.......................................................................................................543
19.9.1.2. Particionando e recuperando dados.....................................................................................545
19.9.1.3. Transaes e replicao........................................................................................................546
19.9.2. Bancos de dados tradicionais em nuvem..............................................................................................547
19.9.3. Desafios com bancos de dados baseados em nuvem.............................................................................547
19.10. Sistemas de diretrio............................................................................................................................................548
19.10.1. Protocolos de acesso ao diretrio.........................................................................................................549
19.10.2. LDAP: Lightweight Directory Access Protocol...........................................................................................549
19.10.2.1. Modelo de dados LDAP.......................................................................................................549
19.10.2.2. Manipulao de dados.........................................................................................................550
19.10.2.3. rvores de diretrio distribudas.........................................................................................551
19.11. Resumo................................................................................................................................................................552

Termos de reviso.................................................................................................................................................553

Exerccios prticos................................................................................................................................................554
Exerccios.............................................................................................................................................................555

Notas bibliogrficas..............................................................................................................................................556
PARTE 6
DEPSITO DE DADOS, MINERAO DE DADOS E RECUPERAO DE INFORMAES
Captulo 20 Depsito e minerao de dados.............................................................................................. 559
20.1. Sistemas de apoio deciso..................................................................................................................................559
20.2. Depsito de dados (data warehousing)...................................................................................................................560
20.2.1. Componentes de um depsito de dados...............................................................................................560
20.2.2. Esquemas de depsito..........................................................................................................................562
20.2.3. Armazenamento orientado coluna.....................................................................................................563
20.3. Minerao de dados..............................................................................................................................................563
20.4. Classificao.........................................................................................................................................................564
20.4.1. Classificadores de rvore de deciso.....................................................................................................564
20.4.1.1. Criando classificadores de rvore de deciso.......................................................................565
20.4.1.2. Melhores divises................................................................................................................565
20.4.1.3. Encontrando as melhores divises.......................................................................................566
20.4.1.4. Algoritmo de construo da rvore de deciso.....................................................................566
20.4.2. Outros tipos de classificadores.............................................................................................................567
20.4.3. Regresso.............................................................................................................................................569
20.4.4. Validando um classificador...................................................................................................................569
20.5. Regras de associao.............................................................................................................................................570
20.6. Outros tipos de associaes..................................................................................................................................571
20.7. Agrupamento (clustering)......................................................................................................................................572

Sist_Banco_Dados_Livro.indb 31

01/08/2012 17:39:23

xxxii Sistema de Banco de Dados

ELSEVIER

20.8. Outras formas de minerao de dados..................................................................................................................572


20.9. Resumo................................................................................................................................................................573

Termos de reviso.................................................................................................................................................573

Exerccios prticos................................................................................................................................................574
Exerccios.............................................................................................................................................................574
Ferramentas.........................................................................................................................................................575

Notas bibliogrficas..............................................................................................................................................575
Captulo 21 Recuperao de informaes................................................................................................... 577
21.1. Viso geral............................................................................................................................................................577
21.2. Classificao de relevncia usando termos............................................................................................................578
21.2.1. Classificao usando TF-IDF................................................................................................................578
21.2.2. Recuperao baseada em semelhana...................................................................................................579
21.3. Relevncia usando hiperlinks.................................................................................................................................580
21.3.1. Classificao por popularidade.............................................................................................................580
21.3.2. PageRank..............................................................................................................................................581
21.3.3. Outras medidas de popularidade.........................................................................................................582
21.3.4. Spamming do mecanismo de busca.......................................................................................................583
21.3.5. Combinando medidas TF-IDF com medidas de ranking de popularidade............................................583
21.4. Sinnimos, homnimos e ontologias....................................................................................................................583
21.5. Indexao de documentos....................................................................................................................................585
21.6. Medindo a eficcia da recuperao.......................................................................................................................586
21.7. Crawling e indexao da Web...............................................................................................................................586
21.8. Recuperao de informaes: alm da classificao (ranking) de pginas..............................................................587
21.8.1. Diversidade de resultados da consulta..................................................................................................587
21.8.2. Extrao de informaes......................................................................................................................588
21.8.3. Resposta a perguntas............................................................................................................................589
21.8.4. Consulta de dados estruturados...........................................................................................................589
21.9. Diretrios e categorias..........................................................................................................................................589
21.10. Resumo................................................................................................................................................................591

Termos de reviso.................................................................................................................................................591

Exerccios prticos................................................................................................................................................592
Exerccios.............................................................................................................................................................592
Ferramentas.........................................................................................................................................................593

Notas bibliogrficas..............................................................................................................................................593
PARTE 7
BANCOS DE DADOS ESPECIAIS
Captulo 22 Bancos de dados orientados a objeto..................................................................................... 597
22.1. Viso geral............................................................................................................................................................597
22.2. Tipos de dados complexos....................................................................................................................................598
22.3. Tipos estruturados e herana em SQL...................................................................................................................599
22.3.1. Tipos estruturados...............................................................................................................................599
22.3.2. Herana de tipo...................................................................................................................................601
22.4. Herana de tabela.................................................................................................................................................602
22.5. Tipos array e multiconjunto na SQL.....................................................................................................................603
22.5.1. Criando e acessando valores de coleo...............................................................................................603
22.5.2. Consultando atributos com valor de coleo (collection-valued attributes)..............................................604
22.5.3. Aninhando e desaninhando.................................................................................................................604
22.6. Identidade de objeto e tipos de referncia na SQL................................................................................................606
22.7. Implementando recursos O-R...............................................................................................................................607
22.8. Linguagens de programao persistentes..............................................................................................................607

Sist_Banco_Dados_Livro.indb 32

01/08/2012 17:39:23

Sumrioxxxiii
22.8.1. Persistncia de objetos.........................................................................................................................608
22.8.2. Identidade de objeto e ponteiros..........................................................................................................609
22.8.3. Armazenamento e acesso dos objetos persistentes................................................................................609
22.8.4. Sistemas C++ persistentes....................................................................................................................610
22.8.5. Sistemas Java persistentes.....................................................................................................................611
22.9. Mapeamento objeto-relacional..............................................................................................................................613
22.10. Modelo orientado a objeto versus modelo objeto-relacional..................................................................................613
22.11. Resumo................................................................................................................................................................614

Termos de reviso.................................................................................................................................................614

Exerccios prticos................................................................................................................................................615
Exerccios.............................................................................................................................................................616
Ferramentas.........................................................................................................................................................616

Notas bibliogrficas..............................................................................................................................................617
Captulo 23 XML............................................................................................................................................ 619
23.1. Motivao.............................................................................................................................................................619
23.2. Estrutura de dados XML.......................................................................................................................................622
23.3. Esquema do documento XML..............................................................................................................................625
23.3.1. Document Type Definition......................................................................................................................625
23.3.2. XML Schema.........................................................................................................................................628
23.4. Consulta e transformao.....................................................................................................................................630
23.4.1. O modelo de rvore da XML................................................................................................................630
23.4.2. XPath...................................................................................................................................................631
23.4.3. XQuery................................................................................................................................................632
23.4.3.1. Expresses FLWOR.............................................................................................................632
23.4.3.2. Junes...............................................................................................................................633
23.4.3.3. Consultas aninhadas............................................................................................................634
23.4.3.4. Classificao dos resultados.................................................................................................634
23.4.3.5. Funes e tipos...................................................................................................................635
23.4.3.6. Outros recursos...................................................................................................................635
23.5. Interfaces de programa aplicativo para XML.........................................................................................................636
23.6. Armazenamento de dados XML............................................................................................................................637
23.6.1. Depsitos de dados no relacionais......................................................................................................637
23.6.2. Bancos de dados relacionais.................................................................................................................637
23.6.2.1. Armazenar como string........................................................................................................637
23.6.2.2. Representao de rvore......................................................................................................638
23.6.2.3. Mapa de relaes.................................................................................................................638
23.6.2.4. Publicando e fragmentando dados XML..............................................................................639
23.6.2.5. Armazenamento nativo dentro de um banco de dados relacional.........................................639
23.6.3. SQL/XML.............................................................................................................................................639
23.7. Aplicaes XML....................................................................................................................................................641
23.7.1. Armazenando dados com estrutura complexa......................................................................................641
23.7.2. Formatos padronizados para troca de dados.........................................................................................641
23.7.3. Web Services.........................................................................................................................................641
23.7.4. Mediao de dados...............................................................................................................................642
23.8. Resumo................................................................................................................................................................643

Termos de reviso.................................................................................................................................................643

Exerccios prticos................................................................................................................................................644
Exerccios.............................................................................................................................................................645
Ferramentas.........................................................................................................................................................645

Notas bibliogrficas..............................................................................................................................................646

Sist_Banco_Dados_Livro.indb 33

01/08/2012 17:39:23

xxxiv Sistema de Banco de Dados

ELSEVIER

PARTE 8
TPICOS AVANADOS
Captulo 24 Desenvolvimento avanado de aplicaes............................................................................. 649
24.1. Ajuste de desempenho..........................................................................................................................................649
24.1.1. Melhorando a orientao de conjuntos.................................................................................................649
24.1.2. Ajuste de carregamentos e atualizaes em massa................................................................................651
24.1.3. Localizao dos gargalos......................................................................................................................652
24.1.4. Parmetros ajustveis...........................................................................................................................653
24.1.5. Ajuste do hardware..............................................................................................................................653
24.1.6. Ajustando o esquema...........................................................................................................................654
24.1.7. Ajuste de ndices..................................................................................................................................655
24.1.8. Usando views materializadas.................................................................................................................655
24.1.9. Ajuste automatizado do projeto fsico..................................................................................................656
24.1.10. Ajuste de transaes concorrentes........................................................................................................657
24.1.11. Simulao de desempenho...................................................................................................................658
24.2. Benchmarks de desempenho..................................................................................................................................659
24.2.1. Pacotes de tarefas.................................................................................................................................659
24.2.2. Classes de aplicao do banco de dados...............................................................................................659
24.2.3. Os benchmarks TPC..............................................................................................................................660
24.3. Outras questes no desenvolvimento da aplicao................................................................................................661
24.3.1. Teste de aplicaes...............................................................................................................................661
24.3.2. Migrao de aplicaes.........................................................................................................................662
24.4. Padronizao........................................................................................................................................................662
24.4.1. Padres SQL........................................................................................................................................663
24.4.2. Padres de conectividade de banco de dados.......................................................................................664
24.4.3. Padres de banco de dados de objeto...................................................................................................664
24.4.4. Padres baseados em XML...................................................................................................................665
24.5. Resumo................................................................................................................................................................665

Termos de reviso.................................................................................................................................................666

Exerccios prticos................................................................................................................................................666
Exerccios.............................................................................................................................................................667

Notas bibliogrficas..............................................................................................................................................667
Captulo 25 Dados espaciais e temporais e mobilidade............................................................................. 669
25.1. Motivao.............................................................................................................................................................669
25.2. Tempo nos bancos de dados.................................................................................................................................670
25.2.1. Especificao de tempo em SQL...........................................................................................................670
25.2.2. Linguagens de consulta temporal.........................................................................................................671
25.3. Dados espaciais e geogrficos...............................................................................................................................671
25.3.1. Representao de informaes geomtricas..........................................................................................671
25.3.2. Design Databases.................................................................................................................................673
25.3.3. Dados geogrficos................................................................................................................................673
25.3.3.1. Aplicaes de dados geogrficos..........................................................................................673
25.3.3.2. Representao de dados geogrficos....................................................................................674
25.3.4. Consultas espaciais..............................................................................................................................675
25.3.5. Indexao de dados espaciais...............................................................................................................676
25.3.5.1. rvores k-d.........................................................................................................................676
25.3.5.2. rvores quadrticas (quadtrees)............................................................................................677
25.3.5.3. rvores R............................................................................................................................677
25.4. Bancos de dados de multimdia............................................................................................................................679
25.4.1. Formatos de dados de multimdia........................................................................................................680
25.4.2. Dados de mdia contnua.....................................................................................................................680

Sist_Banco_Dados_Livro.indb 34

01/08/2012 17:39:23

Sumrioxxxv
25.4.3. Recuperao baseada na semelhana....................................................................................................681
25.5. Mobilidade e bancos de dados pessoais................................................................................................................681
25.5.1. Um modelo de computao mvel.......................................................................................................682
25.5.2. Roteamento e processamento de consulta............................................................................................682
25.5.3. Dados de broadcast...............................................................................................................................683
25.5.4. Desconectividade e consistncia...........................................................................................................683
25.6. Resumo................................................................................................................................................................685

Termos de reviso.................................................................................................................................................685

Exerccios prticos................................................................................................................................................686
Exerccios.............................................................................................................................................................686

Notas bibliogrficas..............................................................................................................................................687
Captulo 26 Processamento avanado de transaes................................................................................. 689
26.1. Monitores de processamento de transao............................................................................................................689
26.1.1. Arquiteturas de monitor de PT.............................................................................................................689
26.1.2. Coordenao de aplicaes usando monitores de PT............................................................................692
26.2. Fluxos de trabalho transacionais...........................................................................................................................692
26.2.1. Especificao de fluxo de trabalho.......................................................................................................694
26.2.2. Requisitos de atomicidade de falha de um fluxo de trabalho................................................................694
26.2.3. Execuo de fluxos de trabalho............................................................................................................695
26.2.4. Recuperao de um fluxo de trabalho..................................................................................................696
26.2.5. Sistemas de gerenciamento de fluxo de trabalho..................................................................................696
26.3. E-Commerce..........................................................................................................................................................696
26.3.1. E-Catalogs............................................................................................................................................697
26.3.2. Mercados.............................................................................................................................................697
26.3.3. Estabelecimento de pedido..................................................................................................................698
26.4. Bancos de dados na memria principal.................................................................................................................698
26.5. Sistemas de transao em tempo real....................................................................................................................700
26.6. Transaes de longa durao................................................................................................................................701
26.6.1. Execues no serializveis..................................................................................................................701
26.6.2. Controle da concorrncia.....................................................................................................................702
26.6.3. Transaes aninhadas e multinvel.......................................................................................................702
26.6.4. Transaes de compensao.................................................................................................................703
26.6.5. Questes de implementao.................................................................................................................704
26.7. Resumo................................................................................................................................................................704

Termos de reviso.................................................................................................................................................705

Exerccios prticos................................................................................................................................................706
Exerccios.............................................................................................................................................................706

Notas bibliogrficas..............................................................................................................................................707
PARTE 9
ESTUDOS DE CASO
Captulo 27 PostgreSQL................................................................................................................................ 711
27.1. Introduo............................................................................................................................................................711
27.2. Interfaces com o usurio.......................................................................................................................................712
27.2.1. Interfaces de terminal interativo...........................................................................................................712
27.2.2. Interfaces grficas.................................................................................................................................712
27.2.3. Interfaces de linguagem de programao..............................................................................................713
27.3. Variaes e extenses da SQL...............................................................................................................................713
27.3.1. Tipos de PostgreSQL............................................................................................................................713
27.3.1.1. O sistema de tipos do PostgreSQL.......................................................................................714
27.3.1.2. Tipos fora do padro...........................................................................................................715

Sist_Banco_Dados_Livro.indb 35

01/08/2012 17:39:23

xxxvi Sistema de Banco de Dados

27.4.

27.5.

27.6.

27.7.

ELSEVIER

27.3.2. Regras e outros recursos do banco de dados ativo................................................................................715


27.3.3. Extensibilidade....................................................................................................................................717
27.3.3.1. Tipos...................................................................................................................................717
27.3.3.2. Funes...............................................................................................................................718
27.3.3.3. Extenses de ndice.............................................................................................................718
27.3.3.4. Linguagens procedurais.......................................................................................................719
27.3.3.5. Interface de programao do servidor..................................................................................719
Gerenciamento de transaes no PostgreSQL.......................................................................................................719
27.4.1. Controles de concorrncia do PostgreSQL............................................................................................719
27.4.1.1. Nveis de isolamento do PostgreSQL...................................................................................720
27.4.1.2. Controle de concorrncia para comandos DML...................................................................720
27.4.1.3. Implementao PostgreSQL do MVCC................................................................................721
27.4.1.4. Implicaes do uso do MVCC.............................................................................................723
27.4.1.5. Controle de concorrncia da DDL.......................................................................................724
27.4.1.6. Bloqueio e ndices...............................................................................................................725
27.4.2. Recuperao.........................................................................................................................................725
Armazenamento e indexao................................................................................................................................725
27.5.1. Tabelas.................................................................................................................................................726
27.5.2. ndices.................................................................................................................................................727
27.5.2.1. Tipos de ndice....................................................................................................................727
27.5.2.2. Outras variaes de ndice...................................................................................................727
27.5.2.3. Construo do ndice..........................................................................................................728
Processamento e otimizao de consulta...............................................................................................................728
27.6.1. Reescrita de consulta............................................................................................................................728
27.6.2. Planejamento e otimizao de consulta................................................................................................729
27.6.3. Executor de consulta............................................................................................................................729
27.6.4. Triggers e restries...............................................................................................................................730
Arquitetura do sistema.........................................................................................................................................730
Notas bibliogrficas..............................................................................................................................................731

Captulo 28 Oracle......................................................................................................................................... 733


28.1. Projeto de banco de dados e ferramentas de consulta...........................................................................................733
28.1.1. Ferramentas de projeto de banco de dados e aplicao.........................................................................733
28.1.2. Ferramentas de consulta......................................................................................................................734
28.2. Variaes e extenses da SQL...............................................................................................................................734
28.2.1. Recursos do tipo objeto-relacional.......................................................................................................734
28.2.2. Oracle XML DB....................................................................................................................................734
28.2.3. Linguagens procedurais.......................................................................................................................735
28.2.4. Dimenses...........................................................................................................................................735
28.2.5. OLAP...................................................................................................................................................735
28.2.6. Triggers.................................................................................................................................................735
28.3. Armazenamento e indexao................................................................................................................................736
28.3.1. Espaos de tabela (table spaces)............................................................................................................736
28.3.2. Segmentos............................................................................................................................................736
28.3.3. Tabelas.................................................................................................................................................737
28.3.3.1. Tabelas organizadas por ndice............................................................................................737
28.3.3.2. Compactao.......................................................................................................................738
28.3.3.3. Segurana dos dados...........................................................................................................738
28.3.4. ndices.................................................................................................................................................738
28.3.5. ndices de mapa de bits........................................................................................................................739
28.3.6. ndices baseados em funo.................................................................................................................739
28.3.7. ndices de juno.................................................................................................................................739
28.3.8. ndices de domnio..............................................................................................................................740

Sist_Banco_Dados_Livro.indb 36

01/08/2012 17:39:23

Sumrioxxxvii

28.4.

28.5.

28.6.

28.7.

28.8.

28.9.

28.3.9. Particionamento...................................................................................................................................740
28.3.9.1. Particionamento de intervalo...............................................................................................741
28.3.9.2. Particionamento por hash......................................................................................................741
28.3.9.3. Particionamento por lista.....................................................................................................741
28.3.9.4. Particionamento composto..................................................................................................741
28.3.9.5. Particionamento por referncia............................................................................................741
28.3.10. Views materializadas.............................................................................................................................741
Processamento e otimizao de consulta...............................................................................................................742
28.4.1. Mtodos de execuo...........................................................................................................................742
28.4.2. Otimizao...........................................................................................................................................743
28.4.2.1. Transformaes de consulta.................................................................................................743
28.4.2.2. Seleo de caminho de acesso..............................................................................................743
28.4.2.3. Poda de partio..................................................................................................................744
28.4.2.4. SQL Tuning Advisor..............................................................................................................744
28.4.2.5. SQL Plan Management..........................................................................................................745
28.4.3. Execuo paralela.................................................................................................................................745
28.4.3.1. Estrutura de processos.........................................................................................................746
28.4.4. Caching de resultados...........................................................................................................................746
Controle de concorrncia e recuperao...............................................................................................................747
28.5.1. Controle de concorrncia.....................................................................................................................747
28.5.2. Estruturas bsicas para recuperao.....................................................................................................748
28.5.3. Oracle Data Guard................................................................................................................................748
Arquitetura do sistema.........................................................................................................................................749
28.6.1. Servidor dedicado: estruturas de memria...........................................................................................749
28.6.2. Servidor dedicado: estruturas de processo............................................................................................750
28.6.3. Servidor compartilhado.......................................................................................................................750
28.6.4. Oracle Real Application Clusters.............................................................................................................750
28.6.5. Automatic Storage Manager....................................................................................................................751
28.6.6. Oracle Exadata.....................................................................................................................................751
Replicao, distribuio e dados externos.............................................................................................................751
28.7.1. Replicao............................................................................................................................................751
28.7.2. Bancos de dados distribudos...............................................................................................................752
28.7.3. Fontes de dados externas.....................................................................................................................752
28.7.3.1. SQL*Loader........................................................................................................................752
28.7.3.2. Tabelas externas..................................................................................................................752
28.7.3.3. Exportao e importao com Data Pump...........................................................................752
Ferramentas de administrao de banco de dados................................................................................................752
28.8.1. Oracle Enterprise Manager.....................................................................................................................753
28.8.2. Repositrio automtico de carga de trabalho........................................................................................753
28.8.3. Gerenciamento de recursos de banco de dados....................................................................................753
Minerao de dados..............................................................................................................................................753
Notas bibliogrficas..............................................................................................................................................754

Captulo 29 IBM DB2 Universal Database ................................................................................................... 755


29.1. Viso geral............................................................................................................................................................756
29.2. Ferramentas de projeto de banco de dados...........................................................................................................756
29.3. Variaes e extenses da SQL...............................................................................................................................756
29.3.1. Recursos da XML.................................................................................................................................756
29.3.2. Suporte para tipos de dados.................................................................................................................757
29.3.3. Funes e mtodos definidos pelo usurio...........................................................................................758
29.3.4. Objetos grandes...................................................................................................................................758
29.3.5. Extenses e restries de indexao.....................................................................................................759
29.3.6. Web services..........................................................................................................................................759
29.3.7. Outros recursos....................................................................................................................................759

Sist_Banco_Dados_Livro.indb 37

01/08/2012 17:39:23

xxxviii Sistema de Banco de Dados

ELSEVIER

29.4. Armazenamento e indexao................................................................................................................................759


29.4.1. Arquitetura de armazenamento............................................................................................................759
29.4.2. Pools de buffer......................................................................................................................................760
29.4.3. Tabelas, registros e ndices........................................................................................................................760
29.5. Agrupamento multidimensional...........................................................................................................................762
29.5.1. ndices de bloco...................................................................................................................................763
29.5.2. Mapa de bloco.....................................................................................................................................763
29.5.3. Consideraes de projeto.....................................................................................................................764
29.5.4. Impacto sobre tcnicas existentes.........................................................................................................764
29.6. Processamento e otimizao da consulta...............................................................................................................764
29.6.1. Mtodos de acesso...............................................................................................................................765
29.6.2. Operaes de juno, agregao e conjunto.........................................................................................766
29.6.3. Suporte para processamento SQL complexo.........................................................................................766
29.6.4. Recursos de processamento de consulta em mltiplos processadores...................................................766
29.6.5. Otimizao de consulta........................................................................................................................767
29.7. Tabelas de consulta materializadas........................................................................................................................767
29.7.1. Roteamento de consulta para MQTs.....................................................................................................768
29.7.2. Manuteno de MQTs..........................................................................................................................768
29.8. Recursos autonmicos no DB2.............................................................................................................................769
29.8.1. Configurao.......................................................................................................................................769
29.8.2. Otimizao...........................................................................................................................................769
29.9. Ferramentas e utilitrios.......................................................................................................................................769
29.10. Controle de concorrncia e recuperao...............................................................................................................771
29.10.1. Concorrncia e isolamento...................................................................................................................771
29.10.2. Commit e rollback..................................................................................................................................771
29.10.3. Logging e recuperao...........................................................................................................................772
29.11. Arquitetura do sistema.........................................................................................................................................772
29.12. Replicao, distribuio e dados externos.............................................................................................................773
29.13. Recursos de inteligncia de negcios....................................................................................................................774

Notas bibliogrficas..............................................................................................................................................774
Captulo 30 Microsoft SQL Server................................................................................................................ 775
30.1. Ferramentas de gerenciamento, projeto e consulta................................................................................................775
30.1.1. Desenvolvimento de banco de dados e ferramentas de banco de dados visuais....................................775
30.1.2. Ferramentas de consulta e ajuste de banco de dados............................................................................776
30.1.2.1. Query Editor.........................................................................................................................776
30.1.2.2. SQL Profiler.........................................................................................................................777
30.1.2.3. Database Tuning Advisor.......................................................................................................778
30.1.3. SQL Server Management Studio..............................................................................................................778
30.2. Variaes e extenses da SQL...............................................................................................................................779
30.2.1. Tipos de dados.....................................................................................................................................779
30.2.2. Melhorias na linguagem de consulta....................................................................................................779
30.2.3. Rotinas.................................................................................................................................................780
30.2.3.1. Views indexadas...................................................................................................................780
30.2.4. ndices filtrados...................................................................................................................................780
30.2.4.1. Views atualizveis e triggers..................................................................................................781
30.3. Armazenamento e indexao................................................................................................................................781
30.3.1. Filegroups.............................................................................................................................................781
30.3.2. Gerenciamento de espao dentro de filegroups......................................................................................782
30.3.3. Tabelas.................................................................................................................................................782
30.3.4. ndices.................................................................................................................................................782
30.3.5. Parties..............................................................................................................................................782
30.3.6. Construo de ndice on-line...............................................................................................................783

Sist_Banco_Dados_Livro.indb 38

01/08/2012 17:39:23

Sumrioxxxix
30.3.7. Varreduras e leitura antecipada............................................................................................................783
30.3.8. Compactao.......................................................................................................................................783
30.4. Processamento e otimizao de consulta...............................................................................................................783
30.4.1. Viso geral do processo de compilao.................................................................................................783
30.4.2. Simplificao de consulta.....................................................................................................................784
30.4.3. Reordenao e otimizao baseada em custo........................................................................................784
30.4.4. Planos de atualizao...........................................................................................................................785
30.4.5. Anlise de dados em tempo de otimizao...........................................................................................785
30.4.6. Pesquisa parcial e heurstica.................................................................................................................785
30.4.7. Execuo de consulta...........................................................................................................................786
30.5. Concorrncia e recuperao.................................................................................................................................786
30.5.1. Transaes............................................................................................................................................786
30.5.2. Bloqueio..............................................................................................................................................787
30.5.2.1. Bloqueio dinmico..............................................................................................................787
30.5.2.2. Deteco de impasse............................................................................................................788
30.5.2.3. Criao de verses de linha para isolamento de instantneo................................................788
30.5.3. Recuperao e disponibilidade.............................................................................................................788
30.5.3.1 Recuperao aps falha..........................................................................................................788
30.5.3.2. Recuperao de mdia.........................................................................................................789
30.5.3.3. Espelhamento de banco de dados........................................................................................789
30.6. Arquitetura do sistema.........................................................................................................................................789
30.6.1. Pool de threads no servidor...................................................................................................................789
30.6.2. Gerenciamento de memria.................................................................................................................790
30.6.3. Segurana............................................................................................................................................790
30.7. Acesso a dados.....................................................................................................................................................791
30.8. Processamento de consulta heterogneo distribudo.............................................................................................792
30.9. Duplicao...........................................................................................................................................................792
30.9.1. Modelo de duplicao..........................................................................................................................793
30.9.2. Opes de duplicao..........................................................................................................................793
30.10. Programao do servidor na .NET........................................................................................................................794
30.10.1. Conceitos bsicos da .NET...................................................................................................................794
30.10.2. Hospedagem CLR SQL.........................................................................................................................794
30.10.3. Contratos de extensibilidade................................................................................................................795
30.10.3.1. Rotinas..............................................................................................................................796
30.10.3.2. Funes de tabela.............................................................................................................796
30.10.3.3. Tipos.................................................................................................................................796
30.10.3.4. Agregados.........................................................................................................................796
30.11. Suporte a XML.....................................................................................................................................................797
30.11.1. Armazenando e organizando XML nativamente ...................................................................................797
30.11.2. Consultando e atualizando o tipo de dado XML...................................................................................797
30.11.3. Execuo de expresses XQuery..........................................................................................................798
30.12. O Service Broker do SQL Server...........................................................................................................................799
30.13. Inteligncia empresarial........................................................................................................................................800
30.13.1. SQL Server Integration Services..............................................................................................................801
30.13.2. SQL Server Analysis Services..................................................................................................................802
30.13.2.1. SQL Server Analysis Services: OLAP....................................................................................802
30.13.2.2. SQL Server Analysis Services: minerao de dados..............................................................802
30.13.3. SQL Server Reporting Services................................................................................................................803

Notas bibliogrficas..............................................................................................................................................803

Sist_Banco_Dados_Livro.indb 39

01/08/2012 17:39:23

xl

ELSEVIER

Sistema de Banco de Dados


PARTE 10
APNDICES

Apndice A Esquema detalhado de universidade...................................................................................... 807


A.1. Esquema completo...............................................................................................................................................807
A.2. DDL.....................................................................................................................................................................808
A.3. Dados de amostra.................................................................................................................................................810
Bibliografia....................................................................................................................................................... 815
ndice................................................................................................................................................................. 831

Sist_Banco_Dados_Livro.indb 40

01/08/2012 17:39:23

Você também pode gostar