bano de dados manga
TRANSCRIPT
-
7/28/2019 Bano de Dados Manga
1/47
Gi Mng e
Bnco e Do
Mn TkhhiShoko Az
Ten-po Co., Lt.
novatec
-
7/28/2019 Bano de Dados Manga
2/47
Original Japanese-language edition Manga de Wakaru Database ISBN 4-274-06631-2 2004 by Mana Takahashi andTREND-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 andTREND-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 DadosISBN 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 eTREND-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 Bancosde Dados ISBN 978-85-7522-163-1 2009 por Mana Takahashi e TREND-PRO Co., Ltd., publicado pela NovatecEditora 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 autore da Editora.
Editor: Rubens PratesIlustrao: Shoko AzumaTraduo: Thas Cristina CassonReviso gramatical: Lia Gabriele RegiusEditorao eletrnica: Camila Kuwabata e Carolina Kuwabata
ISBN: 978-85-7522-163-1
Histrico de impresses:
Novembro/2010 Primeira reimpressoOutubro/2009 Primeira edio
NOVATEC EDITORA LTDA.Rua Lus Antnio dos Santos 11002460-000 So Paulo, SP BrasilTel.: +55 11 2959-6529Fax: +55 11 2950-8869E-mail: [email protected]: www.novatec.com.br
Dados Internacionais de Catalogao na Publicao (CIP)(Cmara Brasileira do Livro, SP, Brasil)
Takahashi, ManaGuia mang de bancos de dados / Mana Takahashi,
Shoko Azuma, Trend-pro Co ; [ilustrao] ShokoAzuma ; [traduo Thas Cristina Casson]. --So Paulo : Novatec Editora ; Tokyo : Ohmsha ;So Francisco : No Starch Press, 2009.
Ttulo original: The manga guide to databasesISBN 978-85-7522-163-1
1. Banco de dados - Histria em quadrinhos2. Banco de dados - Gerncia - Histria emquadrinhos 3. SQL (Linguagem de programao paracomputadores) - 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 : Processamentode dados : Histria em quadrinhos 005.7565VC20101112
-
7/28/2019 Bano de Dados Manga
3/47
Sio
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
R e s u m o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1
2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3
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
Q u e s t e s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5O Banco de Dados relacional vence! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47
R e s u m o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 8
Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .48
3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 9
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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .741 Caso: Relacionamento um-para-um. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .74
2 Caso: Relacionamento um-para-muitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
3 Caso : Relacionamento muitos-para-muitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .75
Q u e s t e s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 6
N o r m a l i z a n d o u m a t a b e l a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 8
Q u e s t e s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 9
Passos para projetar um Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .81
R e s u m o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1
Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .82
-
7/28/2019 Bano de Dados Manga
4/47
vi SRIO
4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 5
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. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106Pesquisa 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111Pesquisa 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 5
Vamos usar um Banco de Dados! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
O que uma transao? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
O que uma trava (bloqueio)? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Segurana de Bancos de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Acelerando as coisas com indexao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Recuperao de desastres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Propriedades das transaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Atomicidade. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153Consistncia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Isolamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Durabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Quando um desastre ocorre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Tipos de falhas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Pontos de checagem (checkpoints). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
-
7/28/2019 Bano de Dados Manga
5/47
Sio vii
ndices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Otimizao de uma consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Laos aninhados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Fuso ordenada (sort merge). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Otimizador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 6 9
os Bancos de Dados esto em todos os lugares! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Banco de Dados em uso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Bancos de Dados e a web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Bancos de Dados distribudos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Procedimentos armazenados e gatilhos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Bancos de Dados na Internet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Uso de procedimentos armazenados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
O que um Banco de Dados distribudo?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Distribuio horizontal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Distribuio vertical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Particionamento de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Particionamento horizontal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Particionamento vertical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Evitando inconsistncias com efetivao em duas fases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Replicao de Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Somente leitura (Read-Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Replicao ativa em todos os servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Outras aplicaes de Bancos de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
X M L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 0 2
Bancos de dados orientado a objeto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Repostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Apndice
Comandos SQL Usados com Frequncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Referncias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
ndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
-
7/28/2019 Bano de Dados Manga
6/47
1O qe Bnco e Do?
-
7/28/2019 Bano de Dados Manga
7/47
No f es c,
o qevoc
qei...
Pince Rn!
Por que precisamos de Bancos de Dados? coccoc
morangosfrescos
Melo
ma
Reino de Kod*
* Posvel efenci Eg Fnk Cod (1924-2003),tetico e cio o Moelo e Bnco e Do Relcionl
-
7/28/2019 Bano de Dados Manga
8/47
e e tenhotnt coi p
fze!
oo O Reinoe Ko - "O p
ft"
A colheitete no foii bnnte
qe nnc!
Voc evei et felizpo et to ocp.
e pelo enoese potiiz o
tblho...
Voc be qe nospoo e ft init poqivo cio
pelo...
Tenhocetez qe ite
exteenteeficiente.
Ago, votblh,tblh!!
Deptentoe Mecoi,
e NegcioIntencioni e e
Expoto, nobe?
i.
Pilha!
BenodaTerra
Aqi et.
Ugh!
Ooh...
L L RLi L!
Blam!
Depto.de
Mercador
ias
Depto.deNegciosInternacionais
Depto. deExportao
3
-
7/28/2019 Bano de Dados Manga
9/47
Hm...e in cho
tblho oboc eptento
geenci pooe ftento c
po i.
Foi o ecbe to gne
qno o peo bi
oto i.
PinceRn!!
chego pcote o
ei.
Oh, voc, Cin.O qe foi?
Do e pi?!
e pen qe, Se epi in etivese
no ctelo, n isoeti conteceno...!
Voc tqe i?
Blam!
Prince
sa?
tremo
s
depen
sar
Algum
tempo
atr
s...
-
7/28/2019 Bano de Dados Manga
10/47
coo ei, U inh fne
i ipotnte io exteio!
Cin, cie Rnntenos
nci.Si...Si,Vos
Mjete!
Cie-e.
Inceitvel!Me epr
o tblho,
ct?Bo,
pcote...
O Rei ecii vijpoqe ele confie voc, pince
Rn.
Ento, o qeele no
p i? e ct.
Secle,
pofvo.
fo vij e i.No p ceit!
cloc
cloc
cloc
Tfuriosa!
Devoltaao
ago
ra...
ho-ho-ho
o qe bnco e o? 5
-
7/28/2019 Bano de Dados Manga
11/47
6 Cptlo 1
"Enconto livoobe tecnologiinovo e teritnte qe viito.
A peso qe no eete livo ise qe
ele eceve giecet ch e
bnco e Do.
egno peso noconto, o bnco eDo iteqe peite too
no coptilh,geenci, e o.
M coo ele eo epene nole
e qe le o livo.
el no confio olivo ceitno
qe o Reino e Koo tilizi e fo
pcfic.
Rn...
-
7/28/2019 Bano de Dados Manga
12/47
o qe bnco e o? 7
Ab o livo,e e-o p
elho nosop."
q??
Oh, po fvo! Vocno be o qntoeto etes!
Oh, to velho...
Ettnco.
Es chvep o livo?
Etv no envelope...
No conigo bi.
Hm...
Si, fnciono...
click!
Ka-bom!
Aiiie!!
!!!
?! Ha!
Cof!cof!
RasgRasg
Rasg
-
7/28/2019 Bano de Dados Manga
13/47
hein?
E qe ovoc?
E o Cin!- o jnte
pincipl pince
Rn.
Voc etno c...c...ctelo e
Ko.
E qe voc?
UM FANTASMA?!
one eto?
?!
voa...? Zip!
NO!
i-iso
fala!?
-
7/28/2019 Bano de Dados Manga
14/47
74 Cptlo 3
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 princesaRuruna e o Cain fizeram sua anlise pressupondo que existisse um relacionamento cha-
mado 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 asso-
ciaes entre entidades chamado de cardinalidade.
Como analisar um modelo E-R
Como se fariam anlises nos casos abaixo? Pense a respeito.
1 Co: Relcionento -p-
Um destino de exportao gerencia uma unidade de informao do histrico de exportao.
Esse tipo de relacionamento chamado de um-para-um.
-
7/28/2019 Bano de Dados Manga
15/47
vo pojet bnco e o! 75
2 Co: Relcionento -p-ito
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 Co: Relcionento ito-p-ito
Frutas so exportadas para vrios destinos. Os destinos de exportao importam diversos
tipos de frutas.
Este tipo de relacionamento chamado de muitos-para-muitos.
-
7/28/2019 Bano de Dados Manga
16/47
76 Cptlo 3
Qete
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.
-
7/28/2019 Bano de Dados Manga
17/47
vo pojet bnco e o! 77
Q3
Cada aluno participa de diversas palestras. Cada palestra assistida por diversos
alunos. Um professor d diversas palestras. Cada palestra dada por um professor.
Q4Cada cliente pode abrir vrias contas correntes. Cada conta aberta por um cliente.
Cada banco gerencia diversas contas. Cada conta gerenciada por um 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 pararefletir condies reais.
bnco
bnco
bnco
-
7/28/2019 Bano de Dados Manga
18/47
78 Cptlo 3
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).
Fo enoliz
Cdigo
do
Relatrio
Data
Cdigo de
destino de
exportao
Nome de
destino de
exportao
Cdigo
do
Produto
Nome
do
Produto
Preo
UnitrioQuantidade
Piei fo nol
Cdigo do
RelatrioData
Cdigo de destino de
exportao
Nome de destino de
exportao
Cdigo do
Relatrio
Cdigo do
Produto
Nome do
Produto
Preo
UnitrioQuantidade
Segn fo nol
Cdigo do
RelatrioData
Cdigo de destino de
exportao
Nome de destino de
exportao
Cdigo do Relatrio Cdigo do Produto Quantidade
Cdigo do Produto Nome do Produto Preo Unitrio
Tecei fo nol
Cdigo do Relatrio Data Cdigo de destino de exportao
Cdigo de destino de exportao Nome de destino de exportao
Cdigo do Relatrio Cdigo do Produto Quantidade
Cdigo do Produto Nome do Produto Preo Unitrio
-
7/28/2019 Bano de Dados Manga
19/47
vo pojet bnco e o! 79
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 identi-
ficar dados determina os valores de outras colunas. Aqui, a chave primria que determinavalores 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 deter-
minado por nenhuma chave no-primria. Em um banco de dados relacional, um valor
chamado de transitivamente dependente se ele determinar valores em outras colunas indi-
retamente, o que parte de uma operao funcionalmente dependente. Na terceira forma
normal, a tabela dividida para que valores transitivamente dependentes sejam removidos.
Qete importante ser capaz de criar uma tabela de banco de dados relacional para diversas situ-
aes, 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
Emprstimo
DataCdigo do
Aluno
Nome do
Aluno
Endereo
de Aluno
CursoAno de
Ingresso
ISBN Nome do Livro Nome do Autor Data de Publicao Nmero de Pginas
Cdigo de
EmprstimoISBN Quantidade
-
7/28/2019 Bano de Dados Manga
20/47
80 Cptlo 3
Q6
A tabela a seguir tambm mostra uma situao de emprstimo de livros. Para qual
estgio ela foi normalizada?
Cdigo de Emprstimo Data Cdigo de Aluno
Cdigo deAluno
Nome deAluno
Endereo deAluno
Curso Ano de Ingresso
ISBNNome do
Livro
Nome do
Autor
Data de
Publicao
Nmero de
Pginas
Cdigo de Emprstimo ISBN 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
MsVendas do
Membro
Cdigo de
Departamento
Nome do
Departamento
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
Cdigo
de
Cliente
Nome
do
Cliente
Cdigo
do
Produto
Nome
do
Produto
Preo
Unitrio
Cdigo do
Representante
Nome do
RepresentanteQuantidade
Depto. de
Mercadorias
Depto. deNegcios
Internacionais
Depto. de
Exportao
Servial Servial Servial Servial Servial
-
7/28/2019 Bano de Dados Manga
21/47
vo pojet bnco e o! 81
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
Pedido
Data
Cdigo
do
Cliente
Nome
do
Cliente
Cdigo
do
Produto
Nome
do
Produto
Preo
Unitrio
Cdigo de
Classificao
do produto
Nome de
Classificao
do Produto
Quantidade
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 base-ado 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 concei-
tual 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 muitos-
para-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.
-
7/28/2019 Bano de Dados Manga
22/47
82 Cptlo 3
Respostas
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 Nome de departamento
Q1 Q2 Q3 Q4
1
N
Gerencia
Clientes
Membroda equipe
m
N
Emprstimo
Alunos
Livro
m
1
ministra
Profeores
m
N
Aistem
Palestras
Alunos
m
1
Gerenciam
Banco
1
N
Abrem
Contas
Cliente
-
7/28/2019 Bano de Dados Manga
23/47
vo pojet bnco e o! 83
Q8
Cdigo de pedido Data Cdigo do cliente Cdigo do representante
Cdigo do cliente 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 Data Cdigo de cliente
Cdigo de cliente Nome de cliente
Cdigo de pedido 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
-
7/28/2019 Bano de Dados Manga
24/47
84 Cptlo 3
Pojetno BANCO e Do
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 tambmpode precisar especificar colunas utilizando valores numricos, moedas e sequncias de carac-
teres. 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 arqui-
vos. 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.
-
7/28/2019 Bano de Dados Manga
25/47
5Vamos usar um Banco de Dados!
-
7/28/2019 Bano de Dados Manga
26/47
Vej, ese e eseo peio novo.
et be, pince.Vo icion-lo
o bnco e oieitente.
Eto finlentepeneno bnco e o,
no?
Ai, ppece e
fo nol?
126 Cptlo 5
Tec, tec,tec...
Tec, tec,tec...
bip
bip
Tec,tec,tec...
*
Uiiiii!
nos!!
Declpepo iso.
Tic!
O que uma transao?
* Plop!
-
7/28/2019 Bano de Dados Manga
27/47
N vee,e tenho qegece...
M inteo
ito ppene.
Po exeplo, e pegntopo qe bnco e
o in poe opeqno tnto io oces o eo tepo.
E flno niso, qeto eegn
tb epeocp
poco.
Apenteente,voc te lgpeocpe e
elo e bncoe o.
O ttlo e inhpeento :
Coo bnco eo poe eix
gne neo eio ces-loiltneente?
E t pepei iltep j e
e enteniento!
Acho qei.
E fiz peqenpeqi. Ah ?
Bo, pentene
elho esqete,
Ah!
Oh!
Aoo bohow!
U, qetio.
Teto eBnco e
Do
-
7/28/2019 Bano de Dados Manga
28/47
128 Cptlo 5
Ago eixe ecoe.
U i, o Anye Becky
ces obnco e o
o eotepo.
No bnco e o, o Anyle tbel e poto,
epecificente .
Ele ento cecento 10o etoqe eceveno
opeo e bnco e o.
Enqnto iso, Beckytb le o neo e
, 30, e cecento 10.
M epoi esopeo, o bnco e
o ot o neotl e coo 40.
Isoet
ceto?
Clp,clp,
clp
Uhu!
bnco eo
30
E vejo30go.
Vo icion 10.
Teei 40ento.
t.
30
E vejo30
go.
Vo icion 10.
Teei 40ento.
40
te 30go!
Vo icion 10.
Teei40
ento.
ceso
-
7/28/2019 Bano de Dados Manga
29/47
No eveie 50go?
Isoeo.
Ento onefo p
10 ?
O Cin coe!
De jeito nenh!El j no
etv l eeo incio!
N vee, neseqnci, Becky
no evei exect
qlqe opeoe bnco e o
enqnto o Any etivetblhno.
Ento 10 nnc ii
epece.
Deix e ve...
P peiti qe oAny e Becky eo bnco e oo eo tepo,
eve hve ecniop ipei
inconitnci eplicie coo
es.
Ento qeto , coo bnco e o
contol opee eio?
Vee.
Vo explic iso go!
O Anyiciono 10.
A Beckyiciono 10.
Penebe!
Eu?! Acusado!
bnco e o
icione10.
O Cin ettio
hoje.
Ele how!
no!!
* t ** ta
* **
-
7/28/2019 Bano de Dados Manga
30/47
148 Cptlo 5
Dento e bncoe o, egitocho eogso cio epeqe opeo
exect, no?
si qe nno conteo o
bnco e o oegit.Exto.
Log, ...?O i ipotnte o
egito e vloe ntee epoi e tlizo
no bnco e o.
Qe foi,Tic?
Hm...
Ei, ele tbet e
inteesno pobnco e o.
Voc qe izeo Rines?Te cetez?
Recuperao de desastres
Log
Log
LogLog
Logbnco
eo
...
-
7/28/2019 Bano de Dados Manga
31/47
Vo Bnco e Do! 149
QnDo pobleocore, pieio e
einici o ite.
Depoi tiliz-e olog p ecpe
o bnco e o.
O too eecpeo viepeneno e e tno foiefetiv o no.
Apenteente, eleno EST ENTENDENDO
NADA.. pen.
Voilt...
Nese tipo eecpeo, o bncoe o confi ovloe poteioe
tlizo.
Ese too e ecpeo cho eavano(roling forward).
Se o poble ocore epoiqe tno j tinh ioefetiv, iso qe ize qe opee j etv finliz
p qel tno.
Ento, poe-e ecpeo o eplicno-e
opee no bnco eo.
Tn -o q?
BL,Bl,bl
i.
No necesio...
risc,
risc
Do
vno
epoi e opeo
e tlizo
Do A
-
7/28/2019 Bano de Dados Manga
32/47
150 Cptlo 5
O qe contecee tnono tive ioefetiv in
qno opoble ocore?
No e peocpe!Nese co,
eveo efet.
N opeoervrso(o
rolback), o vlonte tlizo
confio,
p cncel tno.
E otplv, o
eto o bncoe o nteqe tnotenh inicio
eto.
O ite ecpe oo e gnte qe
ele etej live einconitnci.
No etofiliizo co
teo cooftivao(comit) e
transao.
HUmM..
No entnto, peceqe ei eegn o ebnco e o
o bo.
Ago vocpecebe?
be, bncoe o o
obto! Meoqno ete
ocore!
Do A
Do A
Reveo
eto inicil
Hm
fA
-
7/28/2019 Bano de Dados Manga
33/47
Be, teno e vitto iso, vopeo voc
eT vez.
Eto flnoio obe
noso cento,entene?
Rn...?
Rines,into ito.
No poso ceit popot.
Po qeno?
Poqe e...
Ao otpeso.
Me pegntoqe ei...
Voc nonoto...?
Ainbe...
GULP!!
ELE O...
Oh!
VEM C, CAIN!
-
7/28/2019 Bano de Dados Manga
34/47
152 Cptlo 5
E e Cin ficeo jntop epe, e co o
poe o noso bnco eo,
Vo gntiqe o Reino e Ko
popee!
E noe oc... no...no f iso
coigo...
Ele fo tio
cl.
H?!
E...EU?!
Fiqecoigop
epe,Cin.
Si, i,VosAltez!
Po qe, oh, poq?
Sintoito. Be, i,
qe ize,peoe-e.
Po qevocet eeclpno,
Cin?
Ah, no,e no
evi, eeclpe...
Voc pefee
lghile coo
o Cin?
Que
decepo
!
-
7/28/2019 Bano de Dados Manga
35/47
vo bnco e o! 153
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.
Quando se compartilha um banco de dados, importante garantir que mltiplas tran-
saes possam ser processadas sem causar conflitos nos dados. tambm importante
proteger os dados para evitar inconsistncias na eventualidade de falhas durante o proces-
samento de uma transao. Nesse sentido, listamos na tabela seguinte as propriedades que
uma transao precisa apresentar, que de forma memorvel formam a palavra ACID.
Popiee Obigti p Tno
Propriedade Significado DescrioA Atomicidade Uma transao precisa sempre terminar com uma operao
de efetivao ou de reverso.
C Consistncia Processar uma transao nunca pode resultar em perda de
consistncia no banco de dados.
I Isolamento Mesmo quanto transaes so processadas
simultaneamente, os resultados precisam ser os mesmos
de um processamento sequencial.
D Durabilidade O contedo de uma transao completa no pode ser
afetado por falhas.
Vamos examinar cada uma dessas propriedades em detalhes.
Atoicie
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 conclu-
das, ou todas so canceladas. Uma efetivao finaliza as operaes de uma transao. Uma
reverso as cancela.
banco de dados
Leitura
EscritaTransao
-
7/28/2019 Bano de Dados Manga
36/47
154 Cptlo 5
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.
qusts
Responda a estas questes para ver quo bem entendeu a atomicidade. As respostas estona 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.
Conitnci
Uma transao no deve gerar erros. Se o banco de dados estava consistente antes do pro-cessamento 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.
banco de dados banco de dados
Efetivao Reverso
COMMIT; Use este comando para
efetivar uma transao
ROLLBACK; Use este comando para
reverter uma transao.
-
7/28/2019 Bano de Dados Manga
37/47
vo bnco e o! 155
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.
Iolento
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 sobreaquelas que ocorrem simultaneamente. O mtodo mais comum utilizado para esse prop-
sito o controle baseado em travas (bloqueios). Uma trava compartilhada usada quando
se leem os dados, enquanto uma trava exclusiva usada quando se gravam dados.
30 mas
30 mas
+10 mas +10 mas
40 mas
40 mas
40 mas?
30 mas
-
7/28/2019 Bano de Dados Manga
38/47
156 Cptlo 5
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 tra-
vas compartilhadas e exclusivas.
Relcionento e coexitnci ente tipo e tv (bloqeio)
Trava compartilhada Trava exclusiva
Trava compartilhada SIM NO
Trava exclusiva NO NO
qusts
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?
Travanto duas fass
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.
Trava exclusiva
leitura? leitura?escrita? escrita?
Trava compartilhada
-
7/28/2019 Bano de Dados Manga
39/47
vo bnco e o! 157
Granuaridad d 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.
Quando a granularidade grossa (ou alta), o nmero de travas necessrias por tran-
sao 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 tra-
vas 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.
qusts
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 queacontece 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?
TRAVA A
TRAVA B
LEITURA A
LEITURA B
ESCRITA A
ESCRITA B
DESTRAVA A
DESTRAVA B
TRAVA A
LEITURA A
ESCRITA A
DESTRAVA A
TRAVA B
LEITURA B
ESCRITA B
DESTRAVA B
A fase para travamentos
A fase para
remover as travas
Travas foram removidas
antes que escritas
tenham sido feitas
Travar usando linhas como
unidade implica numagranularidade mais fina
para os travamentos.
Travar usando tabelas
como unidade implicanuma granularidade
grossa nos travamentos.
-
7/28/2019 Bano de Dados Manga
40/47
158 Cptlo 5
Outros contros d xcuo siutna
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 timestampUm 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.
Nvis d Isoanto
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
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.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-
7/28/2019 Bano de Dados Manga
41/47
vo bnco e o! 159
Dbilie
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 per-misses para que outros usurios possam efetuar processamento nas tabelas que voc cria.
Configurar permisses uma tarefa importante na operao de um banco de dados.
Pode-se conceder os seguintes privilgios (permisses) com comandos SQL.
Pivilgio e bnco e Do
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 privil-
gios 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.
Pode-se tambm retirar privilgios. Para fazer isso, utiliza-se o comando REVOKE.
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 geren-
ciamento de permisses.
GRANT SELECT, UPDATE ON produtos
TO Departamento_Negocios_Internacionais;
Este comando concede permisses
para processar os dados.
GRANT SELECT, UPDATE ON produtos
TO Departamento_Negocios_Internacionais WITH GRANT OPTION;
O usurio que recebe os privilgiospode conced-los a outros.
REVOKE SELECT, UPDATE ON produtos
FROM Departamento_Negocios_Internacionais;
Este comando revoga osprivilgios concedidos ao usurio.
-
7/28/2019 Bano de Dados Manga
42/47
160 Cptlo 5
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.
qusts
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.
Pesquisar Inserir Atualizar Excluir
Depto. negcios internacionais
Depto. mercadorias
Depto. exportao
Tabela baseVisualizao
Usurios podem efetuarprocessamento nos dadosnesta visualizao.
Usurios no podem efetuarprocessamento no restantedos dados da tabela.
banco de dados
Depto. deMercadorias
Depto. deNegcios
Internacionais
Depto. deExportao
Concede privilgios a diversosusurios utilizando grupos.
GRANT ALL produtos TO Departamento_Negocios_Internacionais;
GRANT INSERT, DELETE ON produtos TO Departamento_Mercadorias;
GRANT UPDATE, DELETE ON produtos TO Departamento_Exportacoes;
-
7/28/2019 Bano de Dados Manga
43/47
O bnco e o eto e too o lge! 189
Voc oi coe
ecenteente enteneo ecnio e ite e bnco e
o.
M tenho ceteze qe fico be
ozinho.
Do qe vocet flno?
Voc vi ficconoco, no
vi, Tic?
Declpe,
No poso.
Me tblhoqi et feito.
Ah, no...
Tenho ipeso p
viit.
Voc be, h itpeso qe qee
pene obe bncoe o!
Ento voc vi viiti lg qe
bi livo obebnco e o?
i!
finl, e o...
Vocpogei
ito...Co
cetez..
M h tntcoi qe
in nopeneo!
-
7/28/2019 Bano de Dados Manga
44/47
190 Cptlo 6
E vi eepei hoje.
M no pe
evit fze iqe iso.
Ese tepo qe epsei co voc
foi cto, feliz!
Tic...
Tic, epee!
E tenhoqe...
Tic fiqe!
Tica!!
afadads
bancsde
dads!
h-h-h
tadam!
vup!
-
7/28/2019 Bano de Dados Manga
45/47
Obig!!
El e foi.
no gotoe ve vocto tite,
pince.
Teo qeipleent oconhecientoqe Tic no
ofeece
e iteel.
Ah, i. Vocet ceto.
-
7/28/2019 Bano de Dados Manga
46/47
192 Cptlo 6
Et ino be elivo obe bncoe o, pince?
Si!
E etofcilitno
coi p too
no entene.
boiei fz-loe fo eqinho.
E o
eenho oCin etoexcelente.
E olhe!
Aqi! Et cp.
Fbloo!
Dias depois...
Voc qe olh?
Clo!To fofinho...
-
7/28/2019 Bano de Dados Manga
47/47
Et lino.
...h, i.
Flno o Cin, oei et epeno
po voc pconve obeo peptivoo cento.
Me pi etepeno?
To be. E jeto ino.
tio.
E vez,
peqenino pcho Reino e
Ko.
U i, e entoe livo ntigoobe bnco e
o,
Bancosde
Dadosn
o
Reino
deKod
gi incl enin
ch...