Você está na página 1de 47

Guia Mang de

Bancos de Dados

Mana Takahashi
Shoko Azuma
Trend-pro Co., Ltd.

novatec

Original Japanese-language edition Manga de Wakaru Database ISBN 4-274-06631-2 2004 by Mana Takahashi and
TREND-PRO Co., Ltd., published by Ohmsha, Ltd.
English-language edition The Manga Guide to Databases ISBN 978-1-59327-190-9 2009 by Mana Takahashi and
TREND-PRO Co., Ltd., co-published by No Starch Press, Inc. and Ohmsha, Ltd.
Portuguese-language rights arranged with Ohmsha, Ltd. and No Starch Press, Inc. for Guia Mang de Bancos de Dados
ISBN 978-85-7522-163-1 2009 by Mana Takahashi and TREND-PRO Co., Ltd., published by Novatec Editora Ltda.
Edio original em Japons Manga de Wakaru Database ISBN 4-274-06631-2 2004 por Mana Takahashi e
TREND-PRO Co., Ltd., publicado pela Ohmsha, Ltd.
Edio em Ingls The Manga Guide to Databases ISBN 978-1-59327-190-9 2009 por Mana Takahashi e
TREND-PRO Co., Ltd., co-publicao da No Starch Press, Inc. e Ohmsha, Ltd.
Direitos para a edio em Portugus acordados com a Ohmsha, Ltd. e No Starch Press, Inc. para Guia Mang de Bancos
de Dados ISBN 978-85-7522-163-1 2009 por Mana Takahashi e TREND-PRO Co., Ltd., publicado pela Novatec
Editora Ltda.
Copyright 2009 da Novatec Editora Ltda.
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998.
proibida a reproduo desta obra, mesmo parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor
e da Editora.
Editor: Rubens Prates
Ilustrao: Shoko Azuma
Traduo: Thas Cristina Casson
Reviso gramatical: Lia Gabriele Regius
Editorao eletrnica: Camila Kuwabata e Carolina Kuwabata
ISBN: 978-85-7522-163-1
Histrico de impresses:
Novembro/2010
Outubro/2009

Primeira reimpresso
Primeira edio

NOVATEC EDITORA LTDA.


Rua Lus Antnio dos Santos 110
02460-000 So Paulo, SP Brasil
Tel.: +55 11 2959-6529
Fax: +55 11 2950-8869
E-mail: novatec@novatec.com.br
Site: www.novatec.com.br

Dados

Internacionais de Catalogao na Publicao


(Cmara Brasileira do Livro, SP, Brasil)
Takahashi, Mana
Guia mang de bancos de dados / Mana Takahashi,
Shoko Azuma, Trend-pro Co ; [ilustrao] Shoko
Azuma ; [traduo Thas Cristina Casson]. -So Paulo : Novatec Editora ; Tokyo : Ohmsha ;
So Francisco : No Starch Press, 2009.
Ttulo original: The manga guide to databases
ISBN 978-85-7522-163-1
1. Banco de dados - Histria em quadrinhos
2. Banco de dados - Gerncia - Histria em
quadrinhos 3. SQL (Linguagem de programao para
computadores) - Histria em quadrinhos I. Azuma,
Shoko. II. Trend-pro Co.. III. Ttulo.

09-09515

CDD-005.7565
ndices para catlogo sistemtico:
1. Banco de dados : Computadores : Processamento
de dados : Histria em quadrinhos
005.7565
VC20101112

(CIP)

Sumrio
Prefcio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
O que um Banco de Dados? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Por que precisamos de Bancos de Dados? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
O que est acontecendo no reino? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Os dados esto duplicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Podem ocorrer conflitos nos dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Dados so difceis de atualizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Um Banco de Dados - a nossa soluo! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Como usar um Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
O que um banco de dados relacional? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Terminologia de Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Bancos de Dados relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Tipos de modelos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Operaes de extrao de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Operaes de conjunto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Operaes relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
O Banco de Dados relacional vence! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Vamos projetar um banco de dados! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
O modelo E-R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Normalizao de uma tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
O que o modelo E-R? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Como analisar um modelo E-R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
1 Caso: Relacionamento um-para-um . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2 Caso: Relacionamento um-para-muitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3 Caso: Relacionamento muitos-para-muitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Normalizando uma tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Passos para projetar um Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Vamos aprender sobre SQL! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Uso de SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Pesquisa de dados usando um comando SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Uso de funes de totalizao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Juno de tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Criao de uma tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Viso geral sobre SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Pesquisa nos dados usando um comando SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Criao de critrios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Operadores de comparao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Operadores lgicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Padres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Pesquisas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Funes de agregao numricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Totalizao de dados com agrupamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Pesquisa de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Uso de uma subconsulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Uso de uma subconsulta correlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Juntando tabelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Criao de uma tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Insero, atualizao ou excluso de linhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Criao de uma visualizao (View) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Vamos usar um Banco de Dados! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
O que uma transao? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
O que uma trava (bloqueio)? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Segurana de Bancos de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Acelerando as coisas com indexao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Recuperao de desastres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Propriedades das transaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Atomicidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Consistncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Isolamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Durabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Quando um desastre ocorre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tipos de falhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Pontos de checagem (checkpoints) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

viSumRIO

126
131
138
143
148
153
153
154
155
159
161
161
161
162

ndices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Otimizao de uma consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Laos aninhados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fuso ordenada (sort merge) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Otimizador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

162
164
164
165
166
166
167
167
167

6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
os Bancos de Dados esto em todos os lugares! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Banco de Dados em uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bancos de Dados e a web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bancos de Dados distribudos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Procedimentos armazenados e gatilhos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bancos de Dados na Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Uso de procedimentos armazenados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
O que um Banco de Dados distribudo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Distribuio horizontal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Distribuio vertical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Particionamento de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Particionamento horizontal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Particionamento vertical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Evitando inconsistncias com efetivao em duas fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Replicao de Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Somente leitura (Read-Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Replicao ativa em todos os servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Outras aplicaes de Bancos de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bancos de dados orientado a objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Repostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

175
177
183
185
194
196
196
197
197
198
198
198
199
199
201
201
201
202
202
202
203
205
205

Apndice
Comandos SQL Usados com Frequncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Referncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
ndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

Sumriovii

1
O que um Banco de Dados?

cloc
cloc

Por que precisamos de Bancos de Dados?


mo

r
fr a ngo
es
co s
s

el
o

ma

Reino

de

Kod*

No faa essa cara,

o que
voc
queria...
Princesa Ruruna!

* Possvel referncia a Edgar Frank Codd (1924-2003),


matemtico e criador do Modelo de Banco de Dados Relacional

Pilha !

Be
n
somos O Reino
de Kod - "O pas
das frutas"

se eu tenho
tanta coisa pra
fazer!

da

Te
r

ra

A colheita
deste ano foi
mais abundante
que nunca!

Voc deveria estar feliz


por estar to ocupada.
Ooh...

Ugh!
Aqui est.

Voc sabe que a nossa


produo de frutas
administrada por
arquivos criados
pelos...

. de
Depto rias
a do
M e rc
Depto. de
Negcios

Internac
io

Departamentos
de Mercadorias,
de Negcios
Internacionais e de
Exportao, no
sabe?

nais

se pelo menos
desse para
otimizar o
trabalho...

Tenho
certeza que
um sistema
extremamente
eficiente.

Agora, vou
trabalhar,
trabalhar!!

Depto. de

Exportao

L L R
Lari L!

Blam!

sim.

Hmm...

eu ainda acho
trabalho dobrado
cada departamento
gerenciar a produo
e faturamento cada
um por si.

Princesa
Ruruna!!

Blam!

Foi uma dor de


cabea to grande
quando o preo
das mas subiu
outro dia.

Oh, voc, Cain.


O que foi?

Do meu pai?!

chegou um
pacote do
rei.

s
mo a r
tre pens
de

tr

s..

po
m
te

m
gu

Pr

?
esa
inc

Al

em pensar que, Se meus


pais ainda estivessem
no castelo, nada disso
estaria acontecendo...!

Vocs tm
que ir?

como rei, Uma das


minhas funes
mais importante ir
ao exterior!

Cain, cuide
da Ruruna
durante
nossa
ausncia.

Cuidem-se.
Si...Sim,
Vossa
Majestade!

ho-ho-ho

Inacreditvel!
ao

lta

cloc

De

vo

cloc

ag

cloc

or

a.

Me empurraram
o trabalho,

..

e foram viajar sem mim.


No d pra acreditar!

Se
acalme,
por
favor.

O Rei decidiu viajar


porque ele confia
em voc, princesa
Ruruna.

Ento, o que
ele mandou
pra mim?

Bom, um
pacote...

T
furiosa!

uma
carta?

e uma carta.
o que um banco de dados? 5

"Encontramos um livro
sobre uma tecnologia
inovadora em uma terra
distante que visitamos.

A pessoa que nos deu


este livro disse que
ele descreve uma magia
secreta chamada de
banco de Dados.

segundo a pessoa nos


contou, o banco de
Dados um sistema
que permite a todo
mundo compartilhar,
gerenciar, e usar dados.

Mas como ele ser


usado depende da ndole
de quem ler o livro.

ela nos confiou o


livro acreditando
que o Reino de Kod
o utilizaria de forma
pacfica.

Ruruna...
6 Captulo 1

Oh, por favor! Vocs


no sabem o quanto
estou estressada!

Abra o livro,
e use-o para
melhorar nosso
pas."

Rasg
Rasg

Oh, to velho...

qu??

Rasg

Sim, funcionou...

No consigo abrir.

Est
trancado.
Hmm...

Essa a chave
para o livro?

click!

Estava no envelope...

!
Ka-boom

?!

Ham!

Cof!
cof!

Aiiieee!!

!!!

o que um banco de dados? 7

hein?

onde estou?

E quem
voc?
E quem so
vocs?

UM FANTASMA?!
?!

i-isso
fa la!?

Voc est
no cas...cas...
castelo de
Kod.

e voa...?

Eu sou Cain!
- o ajudante
principal
da princesa
Ruruna.

Zip!

NO!

O que o modelo E-R?


A princesa Ruruna e o Cain descobriram as condies reais do Reino de Kod utilizando um
modelo E-R (Entidade-Relacionamento). Quando voc tentar criar um banco de dados por si
mesmo, o primeiro passo determinar as condies dos dados que se est tentando modelar.
Utilizando um modelo E-R, tente definir as entidades em seus dados. Uma entidade
um objeto ou coisa no mundo real, como frutas ou destino de exportao.
Alm disso, um modelo E-R mostra relacionamentos entre entidades. A princesa
Ruruna e o Cain fizeram sua anlise pressupondo que existisse um relacionamento chamado vendas entre frutas e destinos de exportao. Frutas so exportadas para mltiplos
destinos de exportao, e cada um destes importa diversos tipos de frutas. Por esse motivo,
uma anlise para o modelo E-R foi feita presumindo-se que existia um relacionamento
chamado de muitos-para-muitos entre frutas e destinos de exportao. O nmero de associaes entre entidades chamado de cardinalidade.

Como analisar um modelo E-R


Como se fariam anlises nos casos abaixo? Pense a respeito.

1 Caso: Relacionamento um-para-um


Um destino de exportao gerencia uma unidade de informao do histrico de exportao.
Esse tipo de relacionamento chamado de um-para-um.

74 Captulo 3

2 Caso: Relacionamento um-para-muitos


Vrios serviais servem uma princesa. Os serviais no servem outra princesa, nem mesmo
o rei.

Esse tipo de relacionamento chamado de um-para-muitos.

3 Caso: Relacionamento muitos-para-muitos


Frutas so exportadas para vrios destinos. Os destinos de exportao importam diversos
tipos de frutas.

Este tipo de relacionamento chamado de muitos-para-muitos.

vamos projetar um banco de dados! 75

Questes
Quanto voc entendeu do modelo E-R? Analise e desenhe um modelo E-R para cada um
dos casos abaixo. As respostas esto na pgina 82.
Q1
Um membro da equipe gerencia vrios clientes. Um cliente nunca ser contactado por
mais de um membro da equipe.

Q2
Uma pessoa pode consultar diversos livros. Estes podem ser lidos por vrios alunos em
momentos diferentes.

76 Captulo 3

Q3
Cada aluno participa de diversas palestras. Cada palestra assistida por diversos
alunos. Um professor d diversas palestras. Cada palestra dada por um professor.

Q4
Cada cliente pode abrir vrias contas correntes. Cada conta aberta por um cliente.
Cada banco gerencia diversas contas. Cada conta gerenciada por um banco.

banco

banco
banco

Lembre-se de que a anlise baseada no modelo E-R no necessariamente apresenta


um resultado correto. Pode haver muitas formas de organizar logicamente os dados para
refletir condies reais.

vamos projetar um banco de dados! 77

Normalizando uma tabela


A princesa Ruruna e o Cain aprenderam sobre normalizao, o processo de tabular dados
do mundo real em um banco de dados relacional. necessrio normalizar dados para
gerenciar apropriadamente um banco de dados relacional. Resumimos normalizao aqui
(os campos sombreados so chaves primrias).
Forma desnormalizada

Cdigo
do
Relatrio

Cdigo de Nome de
destino de destino de
exportao exportao

Data

Cdigo
do
Produto

Nome
do
Produto

Preo
Quantidade
Unitrio

Primeira forma normal

Cdigo do
Relatrio
Cdigo do
Relatrio

Data

Cdigo de destino de
exportao

Cdigo do
Produto

Nome do
Produto

Nome de destino de
exportao

Preo
Unitrio

Quantidade

Segunda forma normal

Cdigo do
Relatrio

Cdigo de destino de
exportao

Data

Nome de destino de
exportao

Cdigo do Relatrio

Cdigo do Produto

Quantidade

Cdigo do Produto

Nome do Produto

Preo Unitrio

Terceira forma normal

Cdigo do Relatrio

Data

Cdigo de destino de exportao

Cdigo de destino de exportao

78 Captulo 3

Nome de destino de exportao

Cdigo do Relatrio

Cdigo do Produto

Quantidade

Cdigo do Produto

Nome do Produto

Preo Unitrio

A forma desnormalizada uma tabela na qual itens que aparecem mais de uma vez
no foram removidos. Vimos que no se pode gerenciar bem dados usando este tipo de
tabela em um banco de dados relacional. Consequentemente, preciso dividir a tabela.
A primeira forma normal refere-se a uma tabela simples, bidimensional, resultante da
diviso da original desnormalizada. Pode ser considerada como uma tabela com um item
em cada clula. A tabela dividida para que nenhum item aparea mais de uma vez.
A segunda forma normal refere-se a uma tabela na qual uma chave que pode identificar dados determina os valores de outras colunas. Aqui, a chave primria que determina
valores em outras colunas.
Em um banco de dados relacional, um valor chamado de funcionalmente dependente
se ele determinar valores em outras colunas. Na segunda forma normal, a tabela dividida
para que valores em outras colunas sejam funcionalmente dependentes da chave primria.
Na terceira forma normal, uma tabela dividida para que um valor no seja determinado por nenhuma chave no-primria. Em um banco de dados relacional, um valor
chamado de transitivamente dependente se ele determinar valores em outras colunas indiretamente, o que parte de uma operao funcionalmente dependente. Na terceira forma
normal, a tabela dividida para que valores transitivamente dependentes sejam removidos.

Questes
importante ser capaz de criar uma tabela de banco de dados relacional para diversas situaes, ento vamos examinar alguns exemplos de tabelas normalizadas. Determine como a
tabela foi normalizada em cada caso abaixo. As respostas esto na pgina 82.
Q5
A tabela a seguir gerencia emprstimos de livros como o exemplo em Q2. Para qual
estgio ela foi normalizada?
Cdigo de
Data
Emprstimo

ISBN

Cdigo do
Aluno

Nome do
Aluno

Endereo
de Aluno

Curso

Ano de
Ingresso

Nome do Livro Nome do Autor Data de Publicao Nmero de Pginas

Cdigo de
Emprstimo

ISBN

Quantidade

vamos projetar um banco de dados! 79

Q6
A tabela a seguir tambm mostra uma situao de emprstimo de livros. Para qual
estgio ela foi normalizada?
Cdigo de Emprstimo

Cdigo de
Aluno

ISBN

Data

Nome de
Aluno

Nome do
Livro

Cdigo de Emprstimo

Cdigo de Aluno

Endereo de
Aluno
Nome do
Autor

ISBN

Curso

Data de
Publicao

Ano de Ingresso

Nmero de
Pginas

Quantidade

Q7
A tabela a seguir mostra as vendas mensais para cada membro da equipe. Cada
departamento contm vrios membros. Um membro da equipe pode fazer parte de
apenas um departamento. Normalize essa tabela na terceira forma normal.
Cdigo de
Membro da
Equipe

Nome de
Membro da
Equipe

Depto. de
Mercadorias

Servial

Servial

Ms

Vendas do
Cdigo de
Nome do
Membro Departamento Departamento

Depto. de
Negcios
Internacionais

Servial

Depto. de
Exportao

Servial

Servial

Q8
A tabela a seguir representa um sistema de recebimento de pedidos. Normalize-a na
terceira forma normal. No entanto, processe um cliente por cdigo de pedido. Voc
pode processar diversos produtos baseado em um cdigo de pedido. Alm disso, um
cdigo de pedido deve corresponder a apenas um representante.
Cdigo
de
Pedido

Data

80 Captulo 3

Cdigo
de
Cliente

Nome Cdigo Nome


Preo
Cdigo do
Nome do
Quantidade
do
do
do
Unitrio Representante Representante
Cliente Produto Produto

Q9
A tabela a seguir representa um sistema de recebimento de pedidos. Normalize-a na
terceira forma normal. Suponha que os produtos sejam classificados por cdigo.
Cdigo
de
Data
Pedido

Cdigo
do
Cliente

Nome
do
Cliente

Nome
Cdigo
do
do
Produto Produto

Preo
Unitrio

Cdigo de
Classificao
do produto

Nome de
Classificao Quantidade
do Produto

Passos para projetar um Banco de Dados


Voc aprendeu como projetar um banco de dados! No entanto, voc tem que fazer mais do
que isso. preciso projetar uma estrutura de arquivos detalhada dentro do banco de dados
e desenvolver mtodos para importar e exportar dados. De forma geral, pode-se dividir
todo o projeto do banco de dados em trs partes: esquemas conceitual, interno e externo.
O esquema conceitual refere-se a um mtodo que retrata o mundo real. Em outras
palavras, uma forma de determinar a estrutura lgica de um banco de dados. O esquema
conceitual realizado levando-se em considerao um entendimento do mundo real baseado no modelo E-R e normalizao de tabelas.
O esquema interno refere-se ao banco de dados visto de dentro de um computador.
Isso quer dizer que uma forma de determinar a estrutura fsica de um banco de dados. O
esquema interno projetado aps a criao de um mtodo para fazer pesquisas no banco
de dados rapidamente.
O esquema externo refere-se a um banco de dados como ele visto pelos usurios
ou aplicativos. O esquema externo projetado aps a criao de dados necessrios para os
aplicativos.

A Princesa Ruruna e o Cain criaram um banco de dados com foco no esquema conceitual neste captulo. Eles esto no processo de melhoria do banco de dados.
Agora que voc completou o projeto bsico de um banco de dados, vamos examinar
seu uso no prximo captulo.

Resumo

Um modelo E-R usado para analisar entidades e relacionamentos.

Relacionamentos entre entidades podem ser um-para-um, um-para-muitos e muitospara-muitos.

Os dados em uma tabela devem ser normalizados antes que possam ser usados para
criar um banco de dados relacional.

O projeto de um banco de dados pode ser dividido em trs tipos: esquemas conceitual,
interno e externo.
vamos projetar um banco de dados! 81

Respostas
Q1

Membro
da equipe

Q2

Gerencia

Q3

Livro

Emprstimo

N
Clientes

Alunos

AsSistem

N
Alunos

Palestras
m

ministra

1
ProfesSores

Q4

Cliente
1

Abrem

N
Contas
m

Gerenciam

1
Banco

Q5 Segunda forma normal


Q6 Terceira forma normal
Q7
Cdigo de membro de equipe

Ms

Vendas do membro

Cdigo de membro de equipe Nome de membro de equipe Cdigo de departamento

Cdigo de departamento

82 Captulo 3

Nome de departamento

Q8

Cdigo de pedido

Cdigo do cliente

Data

Cdigo do cliente

Cdigo do representante

Nome do cliente

Cdigo de pedido

Cdigo do produto

Quantidade

Cdigo do produto

Nome do produto

Preo unitrio

Cdigo do representante

Nome do representante

Q9
Cdigo de pedido

Cdigo de cliente

Cdigo de pedido

Data

Cdigo de cliente

Nome de cliente

Cdigo do produto

Quantidade

Cdigo do produto Cdigo de classificao do produto Nome do produto Preo unitrio

Cdigo de classificao do produto

Nome de classificao do produto

vamos projetar um banco de dados! 83

Projetando um BANCO de Dados


Neste captulo, voc aprendeu como criar um banco de dados relacional. No entanto, existem
outros mtodos de projeto. Usabilidade e eficincia de um banco de dados dependem de um
mtodo de anlise e de projeto. Portanto, importante criar um banco de dados apropriado no
estgio de projeto.
No estgio de projeto do banco de dados, preciso executar vrias tarefas alm do design.
Por exemplo, voc precisa considerar os tipos de dados para usar nas tabela. Voc tambm
pode precisar especificar colunas utilizando valores numricos, moedas e sequncias de caracteres. Alm disso, preciso desenvolver um mtodo de pesquisa para possibilitar pesquisas
rpidas. s vezes, voc deve criar um design enquanto pensa na organizao fsica de arquivos. E voc tem que controlar quais usurios podem acessar o banco de dados para garantir
a segurana. H muitos fatores que devem ser considerados ao projetar um banco de dados.
Vamos examinar alguns desses fatores nos captulos seguintes.

84 Captulo 3

5
Vamos usar um Banco de Dados!

O que uma transao?


Tec, tec,
tec...
bip
bip

Tec,
tec,
tec...

Tec, tec,
tec...

Veja, esse e esse


so pedidos novos.

est bem, princesa.


Vou adicion-los
ao banco de dados
imediatamente.

Estamos finalmente
aprendendo a usar
um banco de dados,
no?

Ai, d pra
aparecer de
forma normal?
Tica!
Desculpe
por isso.

nossa!!

Uiiiii!
*
* Plop!

126 Captulo 5

Na verdade,
eu tenho que
agradecer...

Por exemplo, me pergunto


por que um banco de
dados ainda pode operar
quando tantos usurios o
acessam ao mesmo tempo.

Mas ainda
temos
muito para
aprender.

E falando nisso,
a questo de
segurana
tambm me
preocupa um
pouco.
Bom, para
entender
melhor essas
questes,

Aparentemente,
voc tem algumas
preocupaes em
relao a seu banco
de dados.

Aham!

Acho que
sim.

Eu fiz uma
pequena
pesquisa.

Ah ?

O ttulo de minha
apresentao :

Como um banco de
dados pode deixar
um grande nmero de
usurios acess-lo
simultaneamente?

Eu at preparei
umas ilustraes
para ajudar em
seu entendimento!

Uau, que
timo.
Oh!

Teatro de
Banco de
Dados

Adoro um bom
show!

Agora deixem eu
comear.

Um dia, o Andy
e a Becky
acessaram o
banco de dados
ao mesmo
tempo.

Clap,
clap,
clap

banco de
dados

acesso

Uhuuu!

No banco de dados, o Andy


leu a tabela de produto,
especificamente as mas.

30 mas
Eu vejo
30
agora.

Ele ento acrescentou 10


ao estoque escrevendo uma
operao de banco de dados.

t.

Vou adicionar 10.

Terei 40
ento.

Enquanto isso, a Becky


tambm leu o nmero de
mas, 30, e acrescentou 10.

Mas depois dessa


operao, o banco de
dados mostra o nmero
atual de mas como 40.

tem 30
agora!

30 mas
Eu vejo
30
agora.

Isso
est
certo?

Vou adicionar 10.

Terei 40
ento.

Vou adicionar 10.

Terei
40
ento.

40 mas

128 Captulo 5

No deveriam
ser 50
agora?

Isso
mesmo.

Ento onde
foram parar as
10 mas?
Pense
bem!

O Andy
adicionou 10.
A Becky
adicionou 10.

Deixa eu ver...

De jeito nenhum!
Elas j no
estavam l desde
o incio!

O Cain as
comeu!

Eu?!

Acusado!

**

*
* tadam

Na verdade, nessa
sequncia, a Becky
no deveria executar
qualquer operao
de banco de dados
enquanto o Andy estiver
trabalhando.

** tadaaam

banco de dados

Ento 10 mas
nunca iriam
desaparecer.

Ento a questo , como


um banco de dados
controla as operaes de
usurio?

Para permitir que o


Andy e a Becky usem
o banco de dados
ao mesmo tempo,

deve haver
um mecanismo
para impedir
inconsistncias e
duplicidades como
essa.

adicione
10.

no!!

Ele
show!

Vou explicar isso agora!

Verdade.
O Cain est
timo
hoje.

Recuperao de desastres
Dentro de um banco
de dados, registros
chamados de logs
so criados sempre
que uma operao
executada, no?

Log

Log

Log

Log

Exato.

Logs, ...?

banco
de
dados

Log

assim que as mudanas


no contedo do
banco de dados so
registradas.

O mais importante so
registros de valores antes
e depois de uma atualizao
no banco de dados.

Humm...

Que foi,
Tica?

Ei, ele tambm


est se
interessando por
bancos de dados.

...

148 Captulo 5

Voc quer dizer


o Raminess?
Tem certeza?

O mtodo de
recuperao varia
dependendo de se
a transao foi
efetivada ou no.

QuanDo um problema
ocorrer, primeiro se
reinicia o sistema.

BL,
Bl,
bl

Depois utilizam-se os
logs para recuperar
o banco de dados.

Aparentemente, ele
no EST ENTENDENDO
NADA.. uma pena.

Trans o qu?

Vou
ilustrar...
No
necessrio...

sim.

Se o problema ocorreu depois


que uma transao j tinha sido
efetivada, isso quer dizer que as
operaes j estavam finalizadas
para aquela transao.

c,
r i s sc
i
r

Ento, pode-se recuperar


os dados reaplicando-se
as operaes no banco de
dados.

Dados a
avano

Nesse tipo de
recuperao, o banco
de dados confirma os
valores posteriores
atualizao.

Dados A
depois de uma operao
de atualizao

Esse mtodo de recuperao


chamado de avano (rolling forward).

Vamos usar um Banco de Dados! 149

O que acontece
se a transao
no tiver sido
efetivada ainda
quando o
problema ocorre?

Numa operao
de reverso (ou
rollback), o valor
antes da atualizao
confirmado,
para cancelar a
transao.

Dados A

Reverso

Em outras
palavras, o
estado do banco
de dados antes
que a transao
tenha iniciado
restaurado.

Dados A
estado inicial

No se preocupe!
Nesse caso, uma
reverso efetuada.

O sistema recupera os
dados e garante que
eles estejam livres de
inconsistncias.

No estou
familiarizado com
termos como
efetivao (commit) e
transao.
Humm

HUMMM..

No entanto, parece
que as medidas de
segurana do seu
banco de dados
so boas.

ufA

Agora voc
percebeu?
150 Captulo 5

sabe, bancos
de dados so
robustos! Mesmo
quando desastres
ocorrem!

Bem, tendo em vista


tudo isso, vou
perdoar vocs
desTa vez.
Ainda
bem...

Estou falando
srio sobre
nosso casamento,
entende?

mas

GULP!!

Por que
no?

Ruruna...?

Porque eu...

Amo outra
pessoa.

Raminess,
sinto muito.
No posso aceitar
sua proposta.

ELE O...

Me pergunto
quem seria...

Oh!

Voc no
notou...?

VEM C, CAIN!

Eu e Cain ficaremos juntos


para sempre, e com o
poder do nosso banco de
dados,

H?!
E...EU?!

Vamos garantir
que o Reino de Kod
prospere!

Em nome dos
cus... no...
no faa isso
comigo...
Sinto
muito.

Que o!
ep
dec

Voc prefere
algum
humilde como
o Cain?

Bem, sim,
quer dizer,
perdoe-me.

Fique
comigo
para
sempre,
Cain.
Sim, sim,
Vossa
Alteza!

Por que, oh, por


qu?
152 Captulo 5

Por que
voc est se
desculpando,
Cain?

Ah, no,
eu no
devia, me
desculpe...

Eles formam
um timo
casal.

Propriedades das transaes


A pesquisa de Cain mostrou que usurios de um banco de dados podem pesquisar, inserir,
atualizar e excluir dados. Um conjunto de operaes bem-sucedidas efetuadas por um nico
usurio chamado de transao.

banco de dados

Transao

Leitura

Escrita

Quando se compartilha um banco de dados, importante garantir que mltiplas transaes possam ser processadas sem causar conflitos nos dados. tambm importante
proteger os dados para evitar inconsistncias na eventualidade de falhas durante o processamento de uma transao. Nesse sentido, listamos na tabela seguinte as propriedades que
uma transao precisa apresentar, que de forma memorvel formam a palavra ACID.
Propriedades Obrigatrias para uma Transao

Propriedade

Significado

Descrio

Atomicidade

Uma transao precisa sempre terminar com uma operao


de efetivao ou de reverso.

Consistncia

Processar uma transao nunca pode resultar em perda de


consistncia no banco de dados.

Isolamento

Mesmo quanto transaes so processadas


simultaneamente, os resultados precisam ser os mesmos
de um processamento sequencial.

Durabilidade

O contedo de uma transao completa no pode ser


afetado por falhas.

Vamos examinar cada uma dessas propriedades em detalhes.

Atomicidade
A primeira propriedade obrigatria para uma transao, atomicidade, significa que uma
transao precisa terminar com uma efetivao ou com uma reverso para manter o banco
de dados livre de inconsistncias. Em resumo, ou todas as aes da transao so concludas, ou todas so canceladas. Uma efetivao finaliza as operaes de uma transao. Uma
reverso as cancela.
vamos usar um banco de dados! 153

banco de dados

Efetivao

banco de dados

Reverso

Em alguns casos, uma efetivao ou uma reverso so efetuadas automaticamente.


Pode-se tambm especificar qual das duas deve ser utilizada. Por exemplo, pode-se
ordenar uma reverso se um erro ocorrer. Para efetuar essas operaes, utilizam-se os
comandos COMMIT (efetivar) ou ROLLBACK (reverter) da SQL.
COMMIT;

Use este comando para


efetivar uma transao

ROLLBACK;

Use este comando para


reverter uma transao.

questes

Responda a estas questes para ver quo bem entendeu a atomicidade. As respostas esto
na pgina 167.
Q1
Escreva um comando SQL que possa ser usado para finalizar uma transao.
Q2
Escreva um comando SQL que possa ser usado para cancelar uma transao.

Consistncia
Uma transao no deve gerar erros. Se o banco de dados estava consistente antes do processamento de uma transao, ele precisa continuar consistente depois que a transao se
encerra.
O Cain deu como exemplo Andy e Becky, cada um tentando adicionar 10 mas em um
total de 30 mas. Em vez de obter o valor correto de 50 mas, o banco de dados mostra
um total de 40. Este tipo de erro chamado de atualizao perdida.

154 Captulo 5

30 mas

30 mas
30 mas

+10 mas

+10 mas

40 mas

40 mas

40 mas?

Quando transaes so processadas simultaneamente, mais de uma pode acessar a


mesma linha da mesma tabela ao mesmo tempo, e conflitos nos dados podem ocorrer.
Tabelas e linhas sujeitas a operaes em uma transao so chamadas de recursos.
Em um banco de dados, transaes devem ser capazes de acessar os mesmos recursos
simultaneamente sem criar inconsistncias.

Isolamento
Quando duas ou mais transaes simultneas produzem os mesmos resultados que seriam
obtidos se elas tivessem sido processadas em momentos diferentes, diz-se que elas so
serializveis. A propriedade de isolamento exige que as transaes sejam serializveis, o que
serve como proteo contra erros.
Para conseguir que as transaes sejam serializveis, preciso ter controle sobre
aquelas que ocorrem simultaneamente. O mtodo mais comum utilizado para esse propsito o controle baseado em travas (bloqueios). Uma trava compartilhada usada quando
se leem os dados, enquanto uma trava exclusiva usada quando se gravam dados.

vamos usar um banco de dados! 155

Trava exclusiva

Trava compartilhada

escrita?

leitura?

leitura?

escrita?

Quando uma trava compartilhada est em uso, outro usurio pode aplicar uma trava
compartilhada em outras transaes, mas no uma trava exclusiva. Quando uma trava
exclusiva est aplicada, outro usurio no pode aplicar nem uma trava compartilhada nem
uma exclusiva em outras transaes. A tabela a seguir resume o relacionamento entre travas compartilhadas e exclusivas.
Relacionamento de coexistncia entre tipos de trava (bloqueio)

Trava compartilhada

Trava exclusiva

Trava compartilhada

SIM

NO

Trava exclusiva

NO

NO

questes

Voc entendeu as travas? Responda s questes e verifique as respostas na pgina 167.


Q3
Quando Andy aplica uma trava compartilhada, Becky pode fazer o mesmo?
Q4
Quando Andy aplica uma trava exclusiva, Becky pode aplicar uma compartilhada?
Q5
Quando Andy aplica uma trava compartilhada, Becky pode aplicar uma exclusiva?
Q6
Quando Andy aplica uma trava exclusiva, Becky pode fazer o mesmo?
Travamento em duas fases

Para ter certeza de que as transaes so serializveis, precisamos obedecer certas regras
para aplicar e remover travas. Uma dessas regras o travamento em duas fases - para
cada transao, duas fases devem ser implementadas: uma para aplicar travas, e outra para
remov-las.
Por exemplo, suponha que existam os recursos A e B, ambos sujeitos a travamento. A
transao observa a regra do travamento em duas fases, mas a no. Serializao s
pode ser obtida se todas as transaes atendem a regra do travamento em duas fases.
156 Captulo 5

TRAVA A
TRAVA B
LEITURA A
LEITURA B
ESCRITA A
ESCRITA B
DESTRAVA A
DESTRAVA B

A fase para travamentos

A fase para
remover as travas

TRAVA A
LEITURA A
ESCRITA A
DESTRAVA A
TRAVA B
LEITURA B
ESCRITA B
DESTRAVA B

Travas foram removidas


antes que escritas
tenham sido feitas

Granularidade de Trava

Existem diversos recursos que podem ser travados (bloqueados). Por exemplo, pode-se
travar dados usando tabelas ou linhas como unidade. A extenso do travamento do recurso
conhecida como granularidade. Granularidade grossa ocorre quando muitos recursos so
travados ao mesmo tempo, enquanto que granularidade fina ocorre quando menos so.
Travar usando tabelas
como unidade implica
numa granularidade
grossa nos travamentos.

Travar usando linhas como


unidade implica numa
granularidade mais fina
para os travamentos.

Quando a granularidade grossa (ou alta), o nmero de travas necessrias por transao reduzido, o que torna gerenciar a granularidade mais fcil. Por um lado, isso reduz
a quantidade de processamento necessria para a CPU que executa o banco de dados. Por
outro lado, conforme mais recursos vo sendo travados, o tempo de espera de transaes
aguardando remoo de travas tende a aumentar. Dessa forma, a quantidade de transaes
que se pode executar tende a cair quando a granularidade alta.
Em contraste, quando a granularidade fina (ou baixa), uma quantidade maior de travas usada por transao, resultando em mais operaes para gerenciar o travamento. Isso
resulta em mais processamento sendo imposto CPU. No entanto, j que menos recursos
esto travados, menos tempo ser empregado esperando que outras transaes removam
travas. Assim, o nmero de transaes que se pode efetuar tende a aumentar.
questes

Responda s questes, e confira as respostas corretas na pgina 168.


Q7
A unidade de travamento para recursos foi alterada de tabelas para linhas. O que
acontece com a quantidade de transaes que se pode efetuar simultaneamente?
Q8
A unidade de travamento para recursos mudou de linha para tabela. O que acontecer
com o nmero de transaes que se pode executar ao mesmo tempo?

vamos usar um banco de dados! 157

Outros controles de execuo simultnea

Pode-se utilizar travamento para executar com sucesso duas ou mais transaes ao mesmo
tempo. No entanto, utilizar travas implica no fardo do gerenciamento de travamento, uma
vez que deadlocks - momentos em que aes entram em conflito - podem ocorrer. Mtodos
mais simples de controle de execuo simultnea podem ser usados quando se tem uma
quantidade menor de transaes ou um grande nmero de operaes de leitura. Nesses
casos, os seguintes mtodos podem ser utilizados:
Controle timestamp
Um rtulo contendo o momento do acesso, conhecido como estampa de tempo
(timestamp), atribudo aos dados acessados durante uma transao. Se outra com uma
estampa mais adiantada no tempo j atualizou os dados, a operao no ser permitida.
Quando uma operao de leitura ou escrita bloqueada, a transao revertida.
Controle otimista
Este mtodo permite operaes de leitura. Quando se tenta uma operao de escrita,
os dados so verificados para ver se qualquer outra transao est ocorrendo. Se outra
transao j tiver atualizado os dados, a transao revertida.
Nveis de Isolamento

Em um banco de dados no mundo real, pode-se configurar o nvel em que transaes sero
processadas simultaneamente. Isso chamado de nvel de isolamento.
Na SQL, o comando SET TRANSACTION (configurar transao) pode ser usado para
especificar os seguintes nveis de isolamento:
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
Dependendo do nvel de isolamento configurado, os seguintes problemas podem ocorrer.
Leitura suja

Leitura no reproduzvel

Leitura fantasma

READ UNCOMMITTED

Possvel

Possvel

Possvel

READ COMMITTED

No ocorre

Possvel

Possvel

REPEATABLE READ

No ocorre

No ocorre

Possvel

SERIALIZABLE

No ocorre

No ocorre

No ocorre

Uma leitura suja ocorre quando uma segunda transao l uma linha antes que uma
primeira a efetive.
Uma leitura no reproduzvel ocorre quando uma transao l duas vezes os mesmos
dados e obtm valores diferentes.
Uma leitura fantasma ocorre quando uma transao procura linhas que obedecem um certo
critrio, mas encontra as linhas erradas devido a alteraes feitas por outra transao.
158 Captulo 5

Durabilidade
Um banco de dados gerencia dados importantes, de modo que garantir a segurana e
durabilidade no caso de falhas essencial. Segurana tambm importante para evitar que
usurios no autorizados substituam dados e criem inconsistncias.
Em um banco de dados, pode-se configurar permisses relativas a quem pode acessar
todo o banco de dados ou as tabelas contidas. O Cain evitou problemas para o banco de
dados do reino melhorando a segurana.
Em um banco relacional, o comando GRANT (conceder) utilizado para conceder permisses para que outros usurios possam efetuar processamento nas tabelas que voc cria.
Configurar permisses uma tarefa importante na operao de um banco de dados.
GRANT SELECT, UPDATE ON produtos
TO Departamento_Negocios_Internacionais;

Este comando concede permisses


para processar os dados.

Pode-se conceder os seguintes privilgios (permisses) com comandos SQL.


Privilgios em bancos de Dados

Comando

Resultado

SELECT

Permite que usurios pesquisem linhas numa tabela.

INSERT

Permite que usurios acrescentem linhas numa tabela.

UPDATE

Permite que usurios atualizem linhas numa tabela.

DELETE

Permite que usurios apaguem linhas numa tabela.

ALL

Concede todos os privilgios.

Conceder privilgios com WITH GRANT OPTION permite que o usurio conceda privilgios que recebeu a outros. Como o comando mostrado abaixo, o departamento de negcios
internacionais pode permitir a outros usurios a atualizao do banco de dados.
GRANT SELECT, UPDATE ON produtos
TO Departamento_Negocios_Internacionais WITH GRANT OPTION;

O usurio que recebe os privilgios


pode conced-los a outros.

Pode-se tambm retirar privilgios. Para fazer isso, utiliza-se o comando REVOKE.
REVOKE SELECT, UPDATE ON produtos
FROM Departamento_Negocios_Internacionais;

Este comando revoga os


privilgios concedidos ao usurio.

Alguns produtos de banco de dados podem agrupar uma srie de privilgios e


conced-los a diversos usurios ao mesmo tempo. O agrupamento pode facilitar o gerenciamento de permisses.

vamos usar um banco de dados! 159

Concede privilgios a diversos


usurios utilizando grupos.

banco de dados

Depto. de
Mercadorias

Depto. de
Exportao

Depto. de
Negcios
Internacionais

Utilizar visualizaes, como descrito na pgina 117, permite um gerenciamento ainda


mais controlado para melhorar a segurana. Primeiro, extraia parte de um banco de dados
para criar uma visualizao. Configurar privilgios para ela significa que esses tambm
foram aplicados na parte dos dados que foi selecionada para a visualizao.
Visualizao

Usurios podem efetuar


processamento nos dados
nesta visualizao.

Tabela base

Usurios no podem efetuar


processamento no restante
dos dados da tabela.

questes

Tente responder s seguintes questes sobre durabilidade. As respostas esto na pgina 168.
Q9
Escreva um comando SQL que permita ao departamento de exportaes a pesquisa
nos dados da tabela de produtos.
Q10
Crie um comando SQL para revogar o privilgio dado ao departamento de negcios
internacionais de excluir dados da tabela de produtos.
Q11
Privilgios foram configurados como segue na tabela de produtos criada pelo
administrador. Responda SIM ou NO em cada clula da tabela abaixo para indicar a
presena ou ausncia de um privilgio para cada departamento, respectivamente.
GRANT ALL produtos TO Departamento_Negocios_Internacionais;
GRANT INSERT, DELETE ON produtos TO Departamento_Mercadorias;
GRANT UPDATE, DELETE ON produtos TO Departamento_Exportacoes;

Pesquisar
Depto. negcios internacionais
Depto. mercadorias
Depto. exportao
160 Captulo 5

Inserir

Atualizar

Excluir

Vocs dois s
comearam
recentemente a entender
os mecanismos de um
sistema de banco de
dados.

Vocs
progrediram
muito...

Com
certeza..

Do que voc
est falando?

Mas h tanta
coisa que
ainda no
aprendemos!

Mas tenho certeza


de que ficaro bem
sozinhos.

Desculpem,

Voc vai ficar


conosco, no
vai, Tica?

Ah, no...

No posso.

Meu trabalho
aqui est feito.

Tenho mais
pessoas para
visitar.

Vocs sabem, h muitas


pessoas que querem
aprender sobre bancos
de dados!

sim!

afinal, eu sou...

Ento voc vai visitar


mais algum que
abriu um livro sobre
bancos de dados?

Os bancos de dados esto em todos os lugares! 189

os
a fada d
de
bancos

Eu s vim me
despedir hoje.

dados!

tada
m!

he-he-he

Mas no pude
evitar fazer mais
que isso.

Esse tempo que eu


passei com vocs
foi curto, mas feliz!

Tica, espere!

Eu tenho
que...

Tica!!

vup!

Tica...

190 Captulo 6

Tica fique!

Obrigada!!

Ela se foi.

no gosto
de ver voc
to triste,
princesa.

Temos que
implementar o
conhecimento
que a Tica nos
ofereceu

Ah, sim. Voc


est certo.

em um sistema
real.

Dias depois...

Sim!

Est indo bem seu


livro sobre bancos
de dados, princesa?

Voc quer
dar uma
olhada?

Claro!

Eu estou
facilitando as
coisas para todo
mundo entender.

E os
desenhos do
Cain esto
excelentes.

Aqui! Esta a
capa.
E olhe!

192 Captulo 6

To fofinho...

uma boa
ideia faz-lo
em forma de
quadrinhos.

Fabuloso!

Falando do Cain, o
rei est esperando
por voc para
conversar sobre
os preparativos
do casamento.

Est lindo.

...ah, sim.

Meu pai est


esperando?

Tudo bem. Eu j
estou indo.

Era uma vez,


um pequenino pas
chamado Reino de
Kod.

timo.

Um dia, de dentro
de um livro antigo
sobre bancos de
dados,

no
dos
a
D
de
cos de Kod
n
a
B
o
Rein
surgiu uma
minscula menina
chamada...

FIM

Você também pode gostar