bano de dados manga

Upload: cassiane-silva

Post on 03-Apr-2018

237 views

Category:

Documents


0 download

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...