Você está na página 1de 226

GUIA MANGÁ PE-

MANA TAKAHA5HI
5HOKO AZ1JMA
TREND-PRO CO., LTD.
CUIA MANGA- BANCOS DE DADOS
GUIA MANGÁ

BANCO DE PA709

MANA TAKAHA5HI
5HOKO AZ1JMA
TREND-PRO CO., LTD.

tc
no starch
Ohmsha press

novatec
Original Japanese-language edition Manga de Wakaru Database ISBN 4-274-06631-2 © 2004 by Mana Takahashi and
TREND-PRO Co., Ltd., published by Ohmsha, Ltd.
English-language edition The Manga Guide to Databases ISBN 978-1-59327-190-9 © 2009 by Mana Takahashi and
TREND-PRO Co., Ltd., co-published by No Starch Press, Inc. and Ohmsha, Ltd.
Portuguese-language rights arranged with Ohmsha, Ltd. and No Starch Press, Inc. for Guia Mangá Bancos de Dados
ISBN 978-85-7522-163-1 2009 by Mana Takahashi and TREND-PRO Co., Ltd., published by Novatec Editora Ltda.

Edição original em Japonês Manga de Wakaru Database ISBN 4-274-06631-2 2004 por Mana Takahashi e
TREND-PRO Co., Ltd., publicado pela Ohmsha, Ltd.
Edição em Inglês The Manga Guide to Databases ISBN 978-1-59327-190-9 © 2009 por Mana Takahashi e
TREND-PRO Co., Ltd., co-publicação da No Starch Press, Inc. e Ohmsha, Ltd.
Direitos para a edição em Português acordados com a Ohmsha, Ltd. e No Starch Press, Inc. para Guia Mangá Bancos
de Dados ISBN 978-85-7522-163-1 © 2009 por Mana Takahashi e TREND-PRO Co., Ltd., publicado pela Novatec
Editora Ltda.

Copyright 2009 da Novatec Editora Ltda.

Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998.


É proibida a reprodução desta obra, mesmo parcial, por qualquer processo, sem prévia autorização, por escrito, do autor
e da Editora.

Editor: Rubens Prates


Ilustração: Shoko Azuma
Tradução: Thaís Cristina Casson
Revisão gramatical: Lia Gabriele Regius
Editoração eletrônica: Camila Kuwabata e Carolina Kuwabata

ISBN: 978-85-7522-163-1

Histórico de impressões:
Junho/2020 Quarta reimpressão
Maio/2015 Terceira reimpressão
Fevereiro/2013 Segunda reimpressão
Novembro/2010 Primeira reimpressão
Outubro/2009 Primeira edição Dados Internacionais de Catalogação na Publicação (CIP)
(Câmara Brasileira do Livro, SP, Brasil)

NOVATEC EDITORA LTDA. Takahashi, Mana


Guia mangá de bancos de dados / Mana Takahashi,
Rua Luís Antônio dos Santos 110 Shoko Azuma, Trend-pro Co ; [ilustração] Shoko
02460-000 - São Paulo, SP - Brasil Azuma ; [tradução Thaís Cristina Casson]. --
São Paulo Novatec Editora ; Tokyo Ohmsha ;
Tel.: +55 11 2959-6529 São Francisco No Starch Press, 2009.
Fax: +55 11 2950-8869
E-mail: novatec@novatec.com.br Título original: The manga guide to databases
ISBN 978-85-7522-163-1
Site: www.novatec.com.br
1. Banco de dados - História em quadrinhos
2. Banco de dados - Gerência - História em
quadrinhos 3. SQL (Linguagem de programação para
computadores) - História em quadrinhos I. Azuma,
Shoko. II. Trend-pro Co.. III. Título.

09-09515 CDD-005.7565

Índices para catálogo sistemático:


1. Banco de dados Computadores Processamento
de dados : História em quadrinhos 005.7565
PY20200619
SUMÁRIO

PREFÁCIO IX

1 1
O Que é UM BANCO PE DADOS? 1

Por que precisamos de Bancos de Dados? 2


O que está acontecendo no reino? 16
Os dados estão duplicados 16
Podem ocorrer conflitos nos dados 17
Dados são difíceis de atualizar 18
Um Banco de Dados - é a nossa solução! 19
Como usar um Banco de Dados 19
Resumo 21

2 Z3
O Que é UM BANCO PE PAPOS RELACIONAL? 23
Terminologia de Banco de Dados 24
Bancos de Dados relacionais 34
Tipos de modelos de dados 39
Operações de extração de dados 39
Operações de conjunto 39
Operações relacionais 43
Questões 45
O Banco de Dados relacional vence! 47
Resumo 48
Respostas 48

3 .4q
VAMOS PROJETAR UM BANCO GE DADOS! .4q
O modelo E-R 50
Normalização de uma tabela 56
O que é o modelo E-R? 74
Como analisar um modelo E-R 74
1° Caso: Relacionamento um-para-um 74
2° Caso: Relacionamento um-para-muitos 75
3° Caso: Relacionamento muitos-para-muitos 75
Questões 76
Normalizando uma tabela 78
Questões 79
Passos para projetar um Banco de Dados 81
Resumo 81
Respostas 82
4 89
VAMOS APRENDER SOBRE SQL! 89
Uso de SQL 86
Pesquisa de dados usando um comando SELECT 93
Uso de funções de totalização 98
Junção de tabelas 101
Criação de uma tabela 103
Visão geral sobre SQL 106
Pesquisa nos dados usando um comando SELECT 106
Criação de critérios 107
Operadores de comparação 107
Operadores lógicos 107
Padrões 108
Pesquisas 108
Questões 109
Funções de agregação numéricas 110
Totalização de dados com agrupamento 110
Questões 111
Pesquisa de dados 112
Uso de uma subconsulta 112
Uso de uma subconsulta correlata 113
Questões 114
Juntando tabelas 114
Criação de urna tabela 115
Inserção, atualização ou exclusão de linhas 116
Criação de uma visualização (View) 117
Questões 118
Resumo 119
Respostas 119

5 125
VAMOS USAR UM BANCO PE DADOS! 129
O que é uma transação? 126
O que é uma trava (bloqueio) 131
Segurança de Bancos de Dados 138
Acelerando as coisas com indexação 143
Recuperação de desastres 148
Propriedades das transações 153
Atomicidade 153
Consistência 154
Isolamento 155
Durabilidade 159
Quando um desastre ocorre 161
Tipos de falhas 161
Pontos de checagem (checkpoints) 161
Questões 162

VI SUMÁRIO
índices 162
Questões 164
Otimização de urna consulta 164
Laços aninhados 165
Fusão ordenada (sort merge) 166
Hash 166
Otimizador 167
Resumo 167
Respostas 167

6 16q

05 BANC05 12e PAPOS e5T7t0 EM T01205 05 LUGARES! 16q

Banco de Dados em uso 175


Bancos de Dados e a web 177
Bancos de Dados distribuídos 183
Procedimentos armazenados e gatilhos 185
Bancos de Dados na Internet 194
Uso de procedimentos armazenados 196
Questões 196
O que é um Banco de Dados distribuído? 197
Distribuição horizontal 197
Distribuição vertical 198
Particionamento de dados 198
Particionamento horizontal 198
Particionamento vertical 199
Evitando inconsistências com efetivação em duas fases 199
Questões 201
Replicação de Banco de Dados 201
Somente Leitura (Read-Only) 201
Replicação ativa em todos os servidores 202
Outras aplicações de Bancos de Dados 202
XML 202
Bancos de dados orientado a objeto 203
Resumo 205
Repostas 205

APÊNDICE
COMANDOS SQL USADOS COM FREQUÊNCIA 207

REFERÊNCIAS 20q

ÍNDICE 211

SUMÁRIO VII
PREFÁCIO
Bancos de dados são uma parte crucial de praticamente todos os sistemas de negócios
baseados em computadores. Alguns leitores podem estar pensando em introduzir bancos
de dados em sua rotina de trabalho. Outros podem ter que de fato desenvolver sistemas de
negócios baseados em bancos de dados. Banco de dados é a tecnologia que dá suporte a
esses sistemas nos bastidores, e sua verdadeira natureza é difícil de entender.
Este livro foi desenvolvido para que leitores sejam capazes de aprender o básico sobre
bancos de dados por meio de uma história em mangá. No final de cada capítulo, exercícios
práticos são fornecidos para confirmação e expansão do conhecimento já obtido. Cada capí-
tulo é feito para que os leitores possam adquirir uma compreensão a respeito da tecnologia
de bancos de dados enquanto confirmam o quanto eles entenderam sobre os conteúdos.
A estrutura deste livro é a seguinte.
O Capítulo 1 descreve o porquê do uso de banco de dados. Por que ele é necessário?
Que tipo de dificuldades você terá se não usar um banco de dados? Você aprenderá as
informações básicas que o uso de um banco de dados exige.
O Capítulo 2 apresenta a terminologia básica. Você aprenderá sobre vários modelos de
bancos de dados e outros termos relacionados a banco de dados.
O Capítulo 3 explica como criar um banco de dados, especificamente, um banco de
dados relacional, o tipo mais comum.
O Capítulo 4 trata de SQL, uma linguagem usada para gerenciar bancos de dados rela-
cionais. O uso de SQL permite a você gerenciar facilmente seus dados.
O Capítulo 5 explica a estrutura do sistema de banco de dados. Já que um banco de
dados é um sistema por meio do qual muitas pessoas compartilham dados, você aprenderá
como fazer isso de forma segura.
O Capítulo 6 apresenta descrições de aplicações de bancos de dados. Você aprenderá
como tipos de sistemas de banco de dados com base na Web e outros são usados.
Este livro foi publicado graças aos esforços conjuntos de muitas pessoas: Shoko Azuma
nos desenhos, TREND-PRO na produção e Ohmsha no planejamento, edição, e marketing.
Estendo minha profunda gratidão a todos eles.
Espero que este livro seja útil a todos os leitores.

MANA TAKAHASHI
O QUE é UM BANCO Pe. DADOS?
.:...

M f
.:..::
\ ..........„,...,
POR QUE PRECISAMOS De BANCOS DE DADOS?

o QUE
vo(-
QUERIA...
PRINCESA RIJIZISA!

* POSSÍVEL REFERÊNCIA A EDGAR FRANK COM, aq24-2003), mze~r


MATEMÁTICO e CRIADOR DO MODELO DE BANCO DE DADOS RELACIONAL
tis
SOMOS O REINO
SE eu TENHO DE KOD - "O PAÍS
TANTA COISA PRA DAS FRUTAS"
FAZER!

A COLHEITA
DESTE ANO FOI
MAIS ABUNDANTE
QUE NUNCA!

VOCÊ DEVERIA ESTAR FELIZ


POR e5TAR TÃO OCUPADA.

SE PELO MENOS
DESSE PARA
OTIMIZAR O
TRABALHO...

VOCÊ SABE QUE A NOSSA


PRODUÇÃO DE FRUTAS es7ro, ve TENHO
oçzcPkvolz° AGORA, VOU
é ADMINISTRADA POR CERTEZA QUE
ARQUIVOS CRIADOS TRABALHAR,
É UM SISTEMA
TRABALHAR!!

e
PELOS... EXTREMAMENTE
SNE
N;;A
ó°.
1)1 DE 5
C0 EFICIENTE.

DEPTO. DE
DEPARTAMENTOS EXPORTAÇÃO
DE MERCADORIAS, LÃ LÁ RA
LARI LÁ!
DE NEGÓCIOS ll
INTERNACIONAIS E DE
EXPORTAÇÃO, NÃO
SABE?

4k1
k ¡lá .1

3
EU AINDA ACHO
HMM... TRABALHO DOBRADO PRINCESA
CADA DEPARTAMENTO RURUNA!!
OERENCIAR A PRODUÇÃO
E FATURAMENTO CADA
UM POR 51.
FOI UMA DOR DE
CABEÇA TÃO GRANDE
QUANDO O PREÇO
DAS MAÇÃS SUBIU
OUTRO DIA.

PO MEU PAI?!
01-1, é VOCÊ, CAIN.
O QUE FOI?

7r-

CHEGOU UM
PACOTE DO
Rel.

EM PENSAR QUE., se MEUS


PAIS AINDA ESTIVESSEM
NO CASTELO, NADA DISSO
ESTARIA ACONTECENDO...!
COMO REI, UMA DAS CAIN, uive
MINHAS FUNÇÕES DA RURUNA CUIDEM-5E.
MAIS IMPORTANTE é IR DURANTE C2
AO EXTERIOR! NOSSA
AUTÈNCIA. V055A
MAJESTADE!
HO-H0-1.10
Lvi.tirrol
A.,

ME EMPURRARAM
INACREDITÁVEL! O TRABALHO, (
cLo
ci-oc ‘"
CL.oc- L R-0 FORAM VIAJAR SEM MIM.
-ir k‘r- NÃO DÁ PRA ACREDITAR!
0\1
4,

FURIOSA!

O REI DECIDIU VIAJAR


PORQUE el.? CONFIA
EM VOCÊ., PRINCESA
RURUNA.

ENTÃO, O QUE
ELE. MANDOU
PRA MIM? E UMA CARTA.

O QUE é UM BANCO PE PAPOS? 5


"ENCONTRAMOS UM LIVRO
SOBRE UMA TECNOLOGIA
INOVADORA EM UMA TERRA
DISTANTE QUE VISITAMOS.

A PESSOA QUE NOS DEU


ESTE LIVRO DISSE QUE
ELE DESCREVE UMA MACIA
SECRETA CHAMADA DE
BANCO DE DADOS.

5eeuNvo A PESSOA NO5


CONTOU, O BANCO DE
DADOS é UM SISTEMA
QUE PERMITE A TODO
MUNDO COMPARTILHAR,
CERENCIAR, E USAR DADOS.

MAS COMO ELE SERÁ


USADO DEPENDE DA ÍNDOLE
DE QUEM LER O LIVRO.

ELA NOS CONFIOU O


LIVRO ACREDITANDO
QUE O REINO DE KO7
O UTILIZARIA DE FORMA
PACÍFICA.

RURUNA...
L OH, POR FAVOR! VOCÊS
NÃO SABEM O QUANTO
ABRA O LIVRO, ESTOU e5TIZe5SAVA1
E use-o PARA
MELHORAR NO550
PAÍS."

OH, é TÃO VELHO...

IZA5&

NÃO CONSIGO ABRIR.


ESTÁ
TRANCADO.

E-1/2A é- A CHAVE
PARA O LIVRO?

mar

MAM/

COFI
CO F/
\
7' V

SOU cAIN!
eUO AJUPANT&
pRINCIPAL
A
PA PRINCrl
- RURUNA. 66
QUE GROSSERIA!
SOU TILA.

MA5 Só A5 PESSOAS
QUE ABREM O LIVRO
CONSEGUEM me VER.
&NiAo, TALVEZ
EU SEJA ALGO
PARECIDO!

11-HE/

ESTE LIVRO
TEM PODERES
PARA AJUDAR A5
PESSOAS QUE O
ABRIRAM A USAR O
CONHECIMENTO...
DE MANEIRA
ADEQUADA.
VOCÊ SAIU
DO LIVRO?

E ESSE
PODER...
SERIA VOCÊ?

O QUE é UM BANCO PE PAPOS? 9


BOM, PELO
MENOS ELA
PARECE BOM, ACHO
INOFENSIVA... QUE 91M...

SIM...

NÃO VAMOS FALAR DE


MIM! VOCÊS ABRIRAM
O LIVRO PARA
APRENDER SOBRE
BANCOS DE DADOS... ENTÃO
VAMOS
COMEÇAR.

CERTO? PARA CRIAR


UM BANCO DE
DADOS...

sei ave é UMA


PERGUNTA MUITO
BÁSICA...

MAS O C2115 é UM
BANCO DE DADOS?

AH, VOCÊS
NÃO SABEM 05 VALORES E
O aue é. NÚMEROS SOBRE
VOCÊS ESTÃO PRODUTOS,
TEMOS
CLIENTES E
LIDANDO COM ADMINISTRADO
VÁRIOS VALORES E VENDAS
CRIANDO
NÚMEROS, NÃO? ARQUIVOS POR
DEPARTAMENTO.

VENDAS

AH, ENTÃO é CADA


DEPARTAMENTO POR SI, N.

5E/, 5E/...
I550 5IeNIFICA Guie MAÇÃ: 100G MAÇÃ: 100G
05 DADOS E51-ÃO
DUPLICADOS em TODOS
05 DEPARTAMENTOS, Né?

REPTO. DE REPTO. DE
REPTO. Pe. NEGÓCIOS
MeRCAPORIA5 EXPORTAÇÃO
INTERNACIONAIS

C GOLA (&) é A MOEDA U5ADA NO


REINO DE KOD, CERTO?

KOLONE DIZ:
1550 MESMO.

"é UM
5I5TEMA
EFICIENTE",

C CADA MAS...
DEPARTAMENTO TEM
DADOS SEPARADOS.

DE vez EM
QUANDO
ELE CAUSA
PROBLEMAS.

COMO AQUELA CRISE


DO OUTRO DIA!!!

O Gila é UM BANCO DE DADOS? 11


SIM, QUANDO O 0 PREÇO DAS MAÇÃS,
PREÇO DAS MAÇÃS QUE ERA 1000, SUBIU
SUBIU. PRA 1ZOG, QUE EU me
LEMBRE.

100 G 1ZOG

SÚBITO AUMENTO NO PREÇO PO PRODUTO

HM, HM

EU MANDEI UMA
MENSAGEM PARA UM DOS
CADA DEPARTAMENTO DEPARTAMENTOS
PARA ALTERAR O ESQUECEU DE
PREÇO PARA 1ZOG, ALTERAR.
MAS...

NÃO RECEBI A
MENSAGEM... Á '11
3
<
O 3>

Neec5C105
INTERNACIONAIS

MAÇÃ 100e
íi
O PREÇO NÃO MUDOU!

1Z CAPÍTULO 1
OUTRO DEPARTAMENTO
ALTEROU O PREÇO PARA
300G POR ENGANO.

MAÇÃ: 1206 MAÇA: 100e MAÇÃ: 300&

_/-50 57-Á
CERTO.
ESTRANHO...
PEPTO 12E DEPTO,
DEPTO. DE NES6C105 DE
MERGADORIA5 INTERNACIONAI5 EXPORTAÇÃO

HOUVE FOI MUITO DIFÍCIL.


CONFLITOS PARA O CAIN! ELE
NO5 DAD05 TEVE QUE ANDAR
DE CADA PELO REINO...
DEPARTAMENTO,
CERTO?

O PReÇOI2A5
MAÇÃ5 E5TÁ
ERRADO...

CERTO.

O QUE é UM BANCO 17C PAPOS? 13


MEU PAI DISSE "VAMOS ABRIR
09 POMARES PARA VISITAÇÃO
EM BREVE"!

MAS EU SINTO QUE


NÃO ESTAMOS
PREPARADOS.
O szeiso DAS FRUTAS

ELE É TÃO
DESLIGADO VAMOS COMEÇAR
COM AS
COISAS... UM NOVO NEGÓCIO
USANDO O SISTEMA
ATUAL, HA HA HA!

MESMO Que
ENTÃO._ MINHAS V. \ UI
RAMA!I /://
OBRIGAÇÕES
COMECEMOS UM NOVO OFICIAIS NÃO J(
NEGÓCIO, ME PARECE DIMINUIRIAM EM
IMPOSSÍVEL USAR 05 NADA!
DADO5 D0 SISTEMA
ATUAL.

VIRARIA UMA
BAGUNÇA...

BOM, PARECE QUE VOCÊS FICAM


VOCÊS TÊM QUE SOBRECARREGADOS
FAZER ALTERAÇÕES E Só DE ORGANIZAR OS
CONFIRMÁ-LAS A CADA DADOS
VEZ QUE ALGUMA COISA
MUDA, E ISSO PARECE
SER DIFÍCIL.

VOOS
começAssem UM NOVO
NEGÓCIO, TERIAM
Que CRIAR NOVOS
ARQUIVOS PARA CADA
DEPARTAMENTO.
PILHA DE
DOCUMENTOS

14 CAPÍTULO 1
É Aí QUE ENTRA
BANCO DE DADOS! SÉRIO?
UM SISTEMA EM Que AV
DADOS PODEM SER '.i1 I '14' .1°°
1001k
its
COMPARTILHADOS
POR VÁRIAS
PESSOAS AO 4 ("
4 ;
MESMO TEMPO t/

COM ELE,
VOCÊS NÃO VÃO
PRECISAR MAIS
MANTER DADOS
ENTÃO PODEMOS TER
UM SISTEMA MUITO MAIS
EFICIENTE QUE O ATUAL?

CLARO! JÁ QUE VOCÊ SABE


PARECE
ALGO QUE TANTO... NA-0 13'01.21ZIA
VALE A PENA FAZER UM PARA MIM?
ESTUDAR,
NÃO?

NÃO TENHO UM VOU ENSINAR TUDO


PRA VOCÊS. MA5 POR MIM E
CORPO FÍSICO, ENTÃO PELO MEU
NÃO P0550 USAR PRECISAM SER
COMPUTADORES NO BONS ALUNOS! PAÍS...
MUNDO REAL. SINTO
MUITO.

QUE
PENA...
VAMOS LÁ!

C1

MAS PARA
AGRADECER POR
ME LIBERTAREM PO OH,
LIVRO... PRINCESA!
O QUE ESTÁ ACONTECENDO NO REINO?
O Reino de Kod usa um sistema baseado em arquivos para gerenciar seus dados. Mas parece
que o sistema tem alguns problemas. Quais são, exatamente? Vamos ver em detalhes.
O Reino tem três departamentos: o de mercadorias, o de negócios internacionais e o
de exportação. O de mercadorias mantém registro de todas as frutas produzidas no país,
o de negócios internacionais é responsável pelos países estrangeiros que são parceiros de
negócios do reino e o de exportação registra as quantidades de frutas que o reino exporta.

05 DADOS ESTÃO DUPLICADOS


A princesa Ruruna não está satisfeita com o sistema atual. Mas por quê? Cada departa-
mento no reino gerencia seus dados independentemente. Por exemplo, o departamento de
mercadorias e o de exportação criam cada um arquivos para gerenciar dados sobre frutas.
Dessa forma, os dados são duplicados sem necessidade entre todos os departamentos.
Cada um deles gasta tempo inserindo seus dados, e ocupa espaço desnecessário em seus
discos rígidos, para só, depois imprimir formulários de checagem, e todo esse processo é
um desperdício. Além disso, dados mantidos em um departamento em particular nunca são
compartilhados eficientemente com os outros.

Os dados são duplicados.

DEPTO. PE
PEPTO. DE
NEGÓCIOS
MERCADORIAS INTERNACIONAIS

16 CAPÍTULO 1
Mas isso não é tudo. Esse sistema também cria problemas quando é necessário alterar
os dados. Por exemplo, vamos imaginar que o preço das maçãs mude. Para lidar com isso, a
princesa Ruruna precisa comunicar esse fato a cada departamento separadamente. Isso não
parece inconveniente?

A princesa precisa enviar


uma mensagem para
cada departamento.

111~1111111111~
11111111111111111111E 111.111~111
911111111111•11~ ~11.1111111111111

REPTO. DE REPTO. DE) REPTO. DE


MERCADORIAS) NEGÓCIOS EXPORTAÇÃO
INTERNACIONAIS

PODEM OCORRER CONFLITOS NO5 DADOS


Pode parecer fácil comunicar cada departamento a respeito da mudança de preço das
maçãs, mas isso pode criar uma nova série de problemas. Vamos imaginar que a princesa
Ruruna comunique aos três departamentos a alteração de preço. No entanto, o depar-
tamento de negócios internacionais pode esquecer de fazer a mudança de preço, ou o
de exportações pode modificar o valor para 300 G em vez de 120 G. Esses tipos de erro
resultam em dados conflitantes entre os departamentos, o que faz com que o conteúdo do
sistema de arquivos seja diferente das condições no mundo real. Que problema!

MUDE O PREÇO
DAS MAÇÃS DE
loo 6 PARA 120 O

Isso pode criar


...0.000.00.00.00.0.00•0°... 1 dados conflitantes.

REPTO. DE MERCADORIAS REPTO. DE NEGÓCIOS INTERNACIONAIS REPTO. 17E EXPORTAÇÃO

Nome do Preço Nome do Preço Nome do Preço


produto Unitário produto Unitário produto Unitário
Melão 800 G Melão 800 G Melão 800 G

Morango 150 G Morango 150 G Morango 150 G


Maçã 120 G Maçã 100 G Maçã 300 G
Limão 200 G Limão 200 G Limão 200 G

O QUE é UM BANCO PC PAP05? 7


DADOS 5Ã-0 DIFÍCEIS DE ATUALIZAR
O sistema atual não apenas gera dados conflitantes, mas também dificulta responder à
alterações nos negócios. Por exemplo, digamos que o Rei queira criar um novo empre-
endimento em turismo. Quando um guia turístico faz um tour pelos pomares e discute as
vendas de frutas do Reino, ele vai querer usar os números de vendas mais atualizados.
Mas, infelizmente, o sistema atual não permite necessariamente que os departamentos
acessem os dados uns dos outros, já que os arquivos são mantidos independentemente.
Para administrar esse novo negócio de turismo, a Princesa Ruruna teria que abrir uni novo
arquivo só para isso!

REPTO. PC
REPTO. DE REPTO. PC
Ne&O.GIOS
MERCADORIAS EXPORTAÇÃO
INTERNACIONAIS

m
TURISMO
j
Novos arquivos
precisam ser criados.

ARQUIVO PARA REPTO. DE MERCADORIAS ARQUIVO PARA EMPREENDIMENTOS PC TURISMO


Nome do Preço Nome do Preço
Produto Unitário Produto Unitário
Melão 800 G Melão 800 G
Morango 150 G Morango 150 G
Maçã 120 G Maçã 120 G
Limão 200 G Limão 200 G

Ou seja, a cada novo empreendimento, mais dados duplicados acabariam sendo cria-
dos. Considerando essas limitações, o sistema atual não é eficiente. Ele dificulta o início de
novos projetos e a resposta a alterações no ambiente.

18 C.AKTI.11...0 1
UM BANCO DE DADOS - é A NO55A SOLUÇÃO!
Bom, por que esse sistema é tão ineficiente? Os problemas todos se originam no geren-
ciamento isolado e independente dos dados. O que a Ruruna e o Cain devem fazer? Isso
mesmo - criar um banco de dados! Eles devem unificar o gerenciamento de dados para o
Reino inteiro. Vou mostrar como fazer isso no próximo capítulo.

PRINCESA
RURUNA
xX
BANCO PE PAPOS
Qualquer um pode
acessar os dados.

Gerenciamento de dados centralizado garante que cada departamento obtenha as


informações corretas, porque cada departamento efetua consultas a uma única fonte de
dados. Que sistema eficiente! Ele impede dados conflitantes e também elimina duplicidade
de dados, permitindo fácil introdução e integração de novos departamentos.

COMO USAR UM BANCO DE PAPOS


Para criar e usar um banco de dados, deve-se entender seus desafios peculiares. Primeiro,
o banco de dados será usado por muitas pessoas, então será necessária encontrar uma
maneira para que elas possam acrescentar e extrair dados facilmente. Precisa ser um
método que seja fácil para todo mundo usar.

mmt
;44x'^-,
PRINCESA
RURUNA
BANCO PE PAPOS QUAL O VOLUME
iv 175 VEN17A5 em
5 DE MARÇO?

DEPTO. PE
PEPTO. DE NEGóCIOS
MERCADORIAS INTERNACIONAL

O novo sistema também apresenta alguns riscos - por exemplo, ele pode deixar que
usuários roubem ou alterem informações importantes como dados de salários, que são
confidenciais e devem ser protegidos por uma restrição de acesso. Ou, por exemplo, apenas
o departamento de exportação deve ter acesso a dados de vendas. Configurar segurança e
permissões em um banco de dados é importante quando um sistema é criado.

O QUE é UM BANCO 175 17A1705? 1c1


NÃO PC*50
ACE55AR DADOS BANCO DE DADOS EU P0550
DE VENDAS. ACE55AR DADOS
DE VENDA5.

DEPTO.
NEGóCIOS
INTERNACIONAIS

O novo sistema pode ter outros problemas também. O banco de dados pode ser usado
por muitas pessoas ao mesmo tempo. Suponha que alguém no departamento de negócios
internacionais e alguém no departamento de exportação tentem alterar o nome de uma
fruta ao mesmo tempo - o primeiro de Maçã para M, e o segundo de Maçã para MA. Se
eles fizerem isso, o que acontecerá com o nome do produto? Para um banco de dados que
será usado por muitas pessoas, esse tipo de problema deve ser considerado.

BANCO DE DADOS

DEPTO. DE
DEPTO. DE NEGÓCIOS
MERCADORIAS INTERNACIONAIS

Você também deve ter cuidado para não perder nenhum dado. Além disso, o sistema
pode ficar fora do ar ou um disco rígido pode falhar, fazendo com que dados sejam corrom-
pidos. O banco de dados precisa ter mecanismos para recuperar-se desses tipos comuns de
falhas.

É preciso estar
preparado para falhas.

20 CAPÍTULO 1
Além disso, já que o banco de dados armazenará urna grande quantidade de dados,
você deve ser capaz de fazer buscas com velocidade. O novo sistema precisa ter a capaci-
dade de lidar com isso.
Vamos juntos com a Princesa Ruruna e o Cain começar a estudar bancos de dados
para aprender como resolver esses problemas. Avance para o Capítulo 2!

RE5L1M0
• Gerenciamento com base em arquivos pode criar duplicação e conflitos de dados.
• Um banco de dados permite compartilhar dados facilmente e impede dados conflitan-
tes e duplicados.

USO DE 50FTVVARE PARA GERENCIAR BANG05 DE DADOS


O banco de dados que vamos estudar é gerenciado por um software chamado de Sis-
tema de Gerenciamento de Banco de Dados (SGBD). Um SGBD tem muitas funções
úteis - ele permite fazer coisas como inserir dados em um banco de dados, impede
dados conflitantes, e recupera rapidamente uma grande quantidade de dados. Graças a
nosso SGBD, o banco de dados pode ser usado por muitas pessoas simultaneamente.
Além disso, um SGBD pode proteger a segurança do banco de dados - por exemplo, ele
permite que o banco de dados funcione apropriadamente mesmo se uma falha ocorrer.
E ainda, oferece uma interface fácil de usar para seus usuários. Vamos estudar bancos
de dados e as funções de um SGBD no próximo capítulo.

O QUE É UM BANCO PE DADOS? 21


2
O Que é- UM BANCO ve DA1209
RELACIONAL?
1

TeRMINOLOGIA DE BANCO DE 2A205 ti


ACEITE
ESTAS
FLORES...
RURUNA,
MINHA
QUERIDA.

TCHARAM!

MEUS PAIS ESTÃO FORA NÃO, O


DO CASTELO, ENTÃO EU CAIN ESTÁ
ESTOU MUITO OCUPADA! AQUI
COMIGO.

ACHEI QUE VOCÊ


ESTARIA SOLITÁRIA. é
POR 1550 QUE ESTOU
AQUI.

VOCÊ NÃO
ACREDITA QUE SEU PRÍNCIPE
RAMINe9 RAAA/14//555L/
AJUDANTE SEJA
MAIS CONFIÁVEL
DO QUE UM
PRÍNCIPE!
VOCÊ ME
PROMETEU UM
ENCONTRO
HOJE.

ISTO é
PRA VOCÊ.

PRINCESA
RURUNA, EU
E MINHAS VOLTAREI- 1r
FLORES?

(((

MAS RAMINESS é 0 E EU NÃO


SEI?
PRÍNCIPE DO PAÍS
VIZINHO.

VOCÊ NÃO DEVERIA


TRATÁ-LO COM
TANTA INDIFERENÇA. BOM DIA!
NOSeA1 HÁ QUE BOM DIA NADA. VOCÊ
ESTÁ ATRA5ADA. VOCÊ
QUANTO TEMPO SEMPRE ME
VOCÊ ESTÁ AÍ? DESDE QUE SURPREENDE.
VOCÊ ABRIU
O LIVRO HÁ
POUCO.

MAS TUDO BEM.


PELO ~os
RAMINE55 JÁ
FOI.

VAMOS COMEÇAR A
CRIAR UM BANCO PE
PAPOS.

ESPERE UM
POUCO.

NÃO SE PODE CRIAR


UM BANCO PE É IMPORTANTE
PAPOS SEM NENHUM SABER O
BÁSICO!
CONHECIMENTO.

VAMOS DAR
OUUH... i O MÁXIMO.

ANTES 17E TUDO,


VAMOS APRENDER
TERMOS BÁSICOS
SOBRE BANCO DE
DADOS.

26 CAPÍTUL-O 2
O QUE NÃO,
QUE FOI? VOC#9 NADA...
FALARAM?
ELA ENTROU
NO PC...! E TIRO
vi ALGO
E LÁ.

ESTE é UM DOS
ARQUIVOS QUE
VOCÊS ESTÃO
USANDO, CERTO?

UMA UNIDADE DE QUER DIZER QUE


DADOS NO ARQUIVO UM PRODUTO
é CHAMADA DE CORRESPONDE A UM
RE615TIZO (RECORD). REGISTRO?

ffirj~

ZWA"
**IWIng eribh,~f
,/~~
if4lalk
1

MO" ENTÃO O Cc5Ple0 PO


PRODUTO, O NOME
NP"C CADA ITM NO REGISTRO PO PRODUTO, O
PIZEO UNITÁRIO, E 05
é CHAMADO DE CAMPO COMENTÁR105 SÃO
(FIELD,. CAMPOS, CERTO?

O Que É UM BANCO DE 17A1705 RELACIONAI.? Z7


CAPA REGISTRO CONTÉM
CAMPOS DO mesmo TIPO.

C617100 DO Nome DO PREÇO


PRODUTO PRODUTO UNITÁRIO COMENTÁRIOS

1o1 MELÃO 800G COM 5EMENTE5

O 2. MORANGO 1506

1° 3 MAÇÃ 1200

1 O 4- LIMÃO 4 Z000 AZEDO


2.0 \ PINHÃO 100& COM CASCA

'L o 2 CAQUI 160&


AH, ENTENDI.
3O1 PÉ.5EEGO 130G

3 O 2. KIWI ZOOG ALTA QUALIDADE

POR EXEMPLO, E NOME PO


CóD160 DO
PRODUTO ENTÃO, em SEGUIDA,
Cc5PI&O PO PRODUTO TEM DEZ I VAMOS PENSAR
PRODUTO é UM CARACTERES OU SOBRE O C57100
(o2
VALOR PE TRÊS meNos. DO PRODUTO
DÍGITOS... toa UM POUCO MAIS
DETALHADAMENTE.
1 o 4-
CÓDIGO DO 1o1
PRODUTO
202

30( CAMPO._
TANTA
3 o)_ CO/5A PARA
1 O'3 DECORAR...
O 4-

AQUI!
O

28 CAPÍTULO 2
PERCEBEU
E NÃO EXISTEM
QUE NÃO
REGISTROS DUPLICADOS.
HÁ DOIS
ENTÃO, se VOCÊ SABE
C 612160S DE
QUE O CÓDIGO DO
PRODUTOS
PRODUTO é 101,
IGUAIS?

PODE IDENTIFICAR
O PRODUTO COMO
SENDO MELÃO.
CERTO.

ISSO FAZ
SENTIDO.

\I/ Fizeç
UNITÁRIO
41/ 600
Isedtit
O QUE ACONTECE?
MA5 NO CA50 1205
PO PREÇO
UNITÁRIO... 200&

OH, ACHEI 00 TEM COMO


VALORES SABER se é UM
REPETIDOS. LIMÃO OU UM KIWI.

OU SEJA, MESMO
QUE VOCÊ SAIBA
QUE O PREÇO
DE UMA FRUTA é

O QUE é UM BANCO PE PAPOS RELACIONAL? Zci


ENTÃO PODEMOS
IDENTIFICAR DADOS é CHAMADO DE aN/C0
PELOS CÓDIGOS DO astauw.
PRODUTO, MAS NÃO
PELO PREÇO UNITÁRIO.

ÚNICO?

EXATO. ALGUMAS PE550A5\


COM FREQUÊNCIA NÃO é Bem
NO MUNDO DOS CHAMAM MEU PAI 1550...
BANC05 DE DADOS, A55IM...
UM CAMPO COMO NP
Y\Pk,;z?\
' 04\GO
O DE CÓDIGO DO
PRODUTO, NO QUAL 1.
05 VALORES NÃO 5E
REPETEM...

ÚNICO SIGNIFICA EM SEGUIDA,


Que só EXISTE VAMOS FALAR
UM! SOBRE
COMENTAW105.
AH, TÁ. é Nesse

COMENTÁRIOS
SÃO SIMPLES ALGUNS VALORES
COMENTÁRIOS, NÃO? VEJA DO PONTO DE ABAIXO DE
VISTA DE UM BANCO COMENTÁRIOS ESTÃO
DE DADOS. VAZIOS, CERTO?
52-NCGOMO

PE-550A COMENTÁRIO

LOIRA
RURUNA
ATIVA
MORENO
CAIN
DESLIGADO
(00 QUER DIZER SE é ASSIM, NÃO SE
QUE DIGITARAM PODE IDENTIFICAR O
COMENTÁRIOS ESPAÇOS...
PRODUTO OLHANDO
OS COMENTÁRIOS.
COM SEMENTES
ESTÃO REALMENTE
VAZIOS.

AZEDO

COM CASCA

ALTA QUALIDADE

NÃO PODE 5ER


NULO. A AUSÊNCIA DE UM VALOR
É CHAMADA DE NULO
Cá 100 NOME PREÇO
PRODUTO PRODUTO UNITÁRIO
COMENTÁRIO Nal.) NO MUNDO DOS
MELÃO COM SEMENTES BANCOS DE DADOS
101 800
1o1 MORANGO 150 0
1 *3 MAÇÃ 1Z00

( 0 (F LIMÃO 2000 AZEDO


1 PINHÃO 100 0 COM CASCA UM NULO é ACEITÁVEL EM
COMENTÁRIOS, MAS 00 EM
1o1 CAQUI 1600
CÓDIGOS DE PRODUTOS,
301 PÊSSEGO 1300 QUE IDENTIFICAM DADOS.
302 KIWI 2000

NULO?
E ISTO é O BÁSICO VAZIO?
SOBRE TERMOS DE ÚNICO?
BANCO DE DADOS.
MA/5
CO/5A5
ENTENDERAM? PARA
DECORAR...
MAIS OU
MENOS, Né... —To

O QUE É UM BANCO DE DADOS RELACIONAL? 31


MAS, se VOCÊS
CONTINUAREM A
USAR OS ARQUIVOS
INDEPENDENTES
ATUAIS,

é POR 1550 QUE QUERO


TERÃO TODO TIPO DE CRIAR UM BANCO DE
PROBLEMAS Que NÃO PAPOS.
PODERÃO RESOLVER.

ou9 1- PAPOS
ENTÃO ME DIGA POR
AGORA COMO \ EXEMPLO,
FAZER. CALMA! PAPOS PAPOS

(
DADOS PAPOS PAPOS PAPOS
W/SHAZAM!

O ESTE é UM MODELO
DE PA1205
H/ERA-1zGIJICO.

QUANDO VOCÊ DIZ UM


BANCO PB PAP05,
PRECISA ENTENDER Que
EXISTEM DIFERENTES EXISTE UM
TIPOS DE BANCOS DE RELACIONAMENTO EM
DADOS. FORMA PE ÁRVORE ENTRE
OS PAPOS.
ASSIM
COMO
FRUTAS/ PARECEU ALGUMA COISA!

é MESMO?

32 CAPÍTULO 2
EM SEGUIDA TEMOS O
MODELO PE PAP05 EM
REDE, em QUE 05 DADOS
TÊM RELACIONAMENTOS
QUE se SOBREPÕEM. 410,75L-0 ,9E DADOS
h'/ERATR;pvico

VOCÊ NÃO FICOU ESTOU


ASSUSTADO, PREPARADO PARA
CAIN? TUDO!

ENTÃO, VAMOS USAR


UM DELES?

DE FATO, EXISTE
OUTRO TIPO QUE é
MUITO MAIS FÁCIL
DE USAR DO QUE
esses 12015.

VOCÊ SE
ASSUSTOU, CLARO
NÃO? QUE NÃO.

ELE se CHAMA...

MODELO DE DADOS RELACIONAL.

RELACIONAL?

* TCHARAM!
O QUE é UM BANCO PE DADOS RELACIONAL? 33
BANCOS PE DADOS R&LACIONAI5

'CABEÇALHO CABEÇALHO CABEÇALHO CABEÇALHO


O MODELO PE PAP05
PAPOS rAvos PAPOS DADOS RELACIONAI- TEM COMO
BASE UMA TABELA
DADOS PAPOS PAPOS PAPOS BIDIMENSIONAL.

DADOS PAPOS DADOS DADO5

ALGUMA COISA
APARECEU DE
NOVO.

1550 é
FAMILIAR. NO MODELO DE
PAPOS RELACIONAL,
UMA TABELA é TAMBÉM
CHAMADA DE REMOTO.

DADOS COMO 05
De PRODUTOS VÃO
FAcei5 DE TABULAR.

UMA UNIDADE PE DADOS


COLUNA OU REGISTRO é CHAMADA
DE

e CAPA rem DE PAPOS


OU CAMPO é CHAMADO PE
ct COLUNA.

LINHA

34 CAPÍTULO 2
PAPEL
ALÉM DI550, IMPORTANTE?
ALGUMAS VEZES
UM CAMPO TEM UM
PAPEL IMPORTANTE
NO BANCO DE
DADOS.

OCÓDIGO DO
PRODUTO NO
ARQUIVO QUE
ESSE CAMPO VOCÊ VIU AGORA
ESPECIAL É
HÁ POUCO.
CHAMADO DE CHAVE
(KEY,.

BOM, eu 5E1 ALGUMA


ESSE CAMPO TEM UM COISA 50BRE
PAPEL IMPORTANTE: TABELAS.
IDENTIFICAR 05 DAD05.
,_,,_
é FÁCIL 125 ENTENDER
55 VOCÊ JÁ LIDA COM
DADOS USANDO UMA
TABELA.

E55E CÓDIGO
É CHAMADO DE E-55e é UM 205
CHAVE PRIMÁRIA MéRITO5 DO
MODELO DE 17A205
CPRIMAIZY KEY, RELACIONAL.

ME5M0 PE550A5
QUE NÃO SABEM
NÃO SABIA Que MUITO 50BRE
EXISTIAM TANTOS BANCOS PE PAPOS
TERMOS.
PODEM TRABALHAR
COM DADOS.

O QUE á UM BANCO DE DADOS RELACIONAL? 35


COMO EU
ALÉM 21550, O 5U5PEITAVA,1550
MODELO DE DADOS É DIFÍCIL...
RELACIONAL é
PROJETADO DE
FORMA Que se
P055A PROCE55AR
05 DADOS COM
OPERAÇÕES
MATEMÁTICAS.
DE FORMA
ALGUMA.

CÓDIGO NOME PREÇO COMENTÁRIO


NOME
PRODUTO PRODUTO UNITÁRIO PRODUTO
1O 1 meu() aoo e COM
SEMENTES MELÃO
1 O -2- MORANGO 1506 MORANGO

1°3 MAÇÃ 1ZOG MAÇÃ

1 0 4- LIMÃO ZOOG AZEDO LIMÃO

2 01 PINHÃO 1000 cOM CASCA PINHÃO

2. 01 CAQUI 1606 CAQUI

3 01 Pã55EGO 1306 PE'55EGO


3 O 2_ KIWI ALTA
ZOOG QUALIDADE KIWI

POR EXEMPLO,
VAMOS OLHAR DE
NOVO PARA A TABELA
DE PRODUTOS.

VOCÊ PODE
EXTRAIR O UMA OPERAÇÃO
NOME 205 PARA EXTRAIR
PRODUTOS? UMA COLUNA
DESSA FORMA
É CHAMADA
FROJE00.

36 CAPÍTULO Z
ENTÃO EXTRAIR 0 NOME
205 PRODUTOS é UMA
OPERAÇÃO?

EXISTEM MUITAS
OUTRAS OPERAÇÕES. NO5SAI
DE FATO, SÃO OITO!

OUTRA VANTAGEM DO
MODELO DE DADOS
RELACIONAL é QUE 55
PODE PROCESSAR 05
DADOS...

COMBINANDO
ESSAS OPERAÇÕES.

O QUE É UM BANCO DE PAPOS RELACIONAL? 37


ENTÃO VAMOS CRIAR
UM BANCO DE DADOS
RELACIONAL PARA O
REINO DE KOR NÃO?

TOCA
AQUI/
1550 Aí!

HA, HA, HA!

O PRÍNCIPE RAMINE55
FOI EMBORA HÁ
POUCO...

MA5 COM
QUANTAS
El,?...?!

* HO-HO-HO-HO-HO

38 CAPÍTULO 2
TIPOS DE movew9 DE DADOS
Quando você usa o termo banco de dados, que tipo de banco de dados tem em mente?
Existem muitos tipos possíveis para gerenciamento de dados. Os métodos de associação e
operação de dados que um banco de dados usa é chamado de seu modelo de dados. Exis-
tem três modelos mais comuns utilizados.
Como descrevi para Ruruna e Cain, o primeiro tipo é o modelo de dados hierárquico.
Nele, dados filhos têm apenas um único dado pai. O segundo tipo é o modelo de dados
em rede. Diferente do modelo hierárquico, nesse modelo dados filhos podem ter múltiplos
ancestrais.

Modelo de dados hierárquico Modelo de dados em rede

Para usar qualquer um desses modelos, é preciso gerenciar os dados mantendo sua
localização física e ordem em mente. Dessa forma, é difícil efetuar uma pesquisa flexível e
de alta velocidade em seus dados se os modelos hierárquico ou de rede forem utilizados.
O terceiro tipo de modelo é o relacional. Um banco de dados relacional utiliza o con-
ceito fácil de entender de tabelas. Vamos discutir esse modelo com maiores detalhes.

Modelo de dados relacional

OPERAÇÕES ve EXTRAÇÃO DE 12A1205


Como os dados são extraídos em um banco de dados relacional? Pode-se processar e
extrair os dados nesse modelo efetuando operações matemáticas estritamente definidas.
Existem oito tipos de operações principais que podemos usar, e elas se dividem em duas
categorias - de conjunto e relacionais.

OPeRAÇõe5 De CONJUNTO
As operações de união, diferença, intersecção e produto cartesiano são chamadas de ope-
rações de conjunto. Elas atuam sobre um ou mais conjuntos de linhas para produzir um
novo conjunto de linhas. Em resumo, elas determinam quantas linhas da entrada aparecem
na saída. Vamos examinar alguns exemplos utilizando a Tabela de Produtos 1 e a Tabela de
Produtos 2.

O QUE É UM BANCO DE DADOS RELACIONAL? 3q


TABELA DE PRODUTO 1 TABELA DE PRODUTO Z

Nome do Produto Preço Unitário Nome do Produto Preço Unitário

Melão 800 G Melão 800 G

Morango 150 G Morango 150 G

Maçã 120 G Pinhão 100 G

Limão 200 G Caqui 350G

UNIÃO
Efetuar a operação de união permite que se extraiam todos os produtos inclusos na Tabela
de Produto 1 e na de Produto 2. 0 resultado encontra-se abaixo.

Nome do Produto Preço Unitário

Melão 800 G

Morango 150G

Maçã 120 G

Limão 200 G

Pinhão 100 G

Caqui 350G

Executar uma operação de união extrai todas as linhas nas duas tabelas e as combina.
A figura a seguir mostra como ficam os dados das duas tabelas depois que a operação foi
executada. Todas as linhas na Tabela de Produto 1 e na 2 foram extraídas.

40 CAPITULO Z
PIFEIZENÇA

Diferença é urna operação que extrai linhas de apenas uma das tabelas. Por exemplo, urna
operação de diferença pode extrair todos os produtos da primeira tabela que não estão
incluídos na segunda. Os resultados dependem de qual tabela contém as linhas para extrair,
de qual tabela inclui as linhas para subtrair.

Nome do Produto Preço Unitário Nome do Produto Preço Unitário

Maçã 120 G Pinhão 100 G

Limão 200 G Caqui 350G

.TATER5ECO-0

Você também pode extrair produtos que estão inclusos em ambas as Tabelas de Produto 1
e 2. Essa operação é chamada de operação de intersecção. Aqui vemos o resultado da inter-
secção das Tabelas de Produto 1 e 2.

Nome do Produto Preço Unitário

Melão 800 G

Morango 150 G

O Que é
- UM BANCO DE PAPOS RELACIONAL? 41
PRODUTO CARTESIANO

A operação produto cartesiano é um método que combina todas as linhas nas duas tabelas.
Vamos examinar as Tabelas de Produto e de Destino de Exportação abaixo.
A operação produto Cartesiano combina todas as linhas nas duas tabelas. Neste exem-
plo, ela resulta em 3 x 3 = 9 linhas. Repare que os nomes de coluna (ou campos) nessas
duas tabelas não são os mesmos - diferente de nossos exemplos anteriores.

TABELA DE FR01711105 TABELA DE DE5TINO5 DE EXPORTAÇÃO

Código do Nome do Preço Cód. Dest.


Nome Dest. Export.
Produto Produto Unitário Export.

101 Melão 800 G 12 Reino de Minami


3
102 Morango 150G 23 Império Alfa
linhas
103 Maçã 120 G 25 Reino de Ritol

PRODUTO CARTESIANO

Código do Nome do Preço Cód. Dest.


Nome Dest. Export.
Produto Produto Unitário Export.

101 Melão 8000 12 Reino de Minami

101 Melão 800 G 23 Império Alfa

101 Melão 800 G 25 Reino de Ritol

102 Morango 150G 12 Reino de Minami


3x3=
102 Morango 150 G 23 Império Alfa
9 linhas
102 Morango 150 G 25 Reino de Ritol

103 Maçã 120G 12 Reino de Minami

103 Maçã 120 G 23 Império Alfa

103 Maçã 120 G 25 Reino de Ritol

4Z CAPITULO
OPeRAÇõE5 RELACIONAIS
Um banco relacional é projetado para que os dados possam ser extraídos por operações
de conjunto e operações relacionais. Vamos dar uma olhada em outras quatro operações
específicas de um banco de dados relacional, chamadas operações relacionais - projeção,
seleção, junção e divisão.

PROJEÇÃO
Projeção é uma operação que extrai colunas de uma tabela. No exemplo mostrado aqui,
essa operação foi usada para extrair apenas os nomes de produtos incluídos na Tabela de
Produtos.

Nome do Produto

Melão

Morango

Maçã

Limão

Pense na projeção como extração "vertical", como mostrado abaixo.

SELEÇÃO
A operação seleção extrai linhas de uma tabela.

Nome do Produto Preço Unitário

Melão 800 G

Morango 1.50 G

Seleção é como projeção, mas extrai linhas em vez de colunas. A seleção extrai dados
"horizontalmente".

O QUE É UM BANCO DE PAPOS RELACIONAL.? 43


JUNÇÃO
A operação junção (join) é muito poderosa. Ela literalmente refere-se à tarefa de juntar
tabelas. Vamos examinar as tabelas abaixo como exemplo.

TABELA DE PRODUTOS TABELA DE VENDAS

Código do Nome do Preço Código do


Data Quantidade
Produto Produto Unitário Produto

101 Melão 800 G 1/11 102 1100

102 Morango 150G 1/11 101 300

103 Maçã 120 G 5/11 103 1700

104 Limão 200 G 8/11 101 500

As colunas Código do Produto nessas duas tabelas representam a mesma informação.


Em 1° de novembro, 1.100 morangos (código do produto 102) foram vendidos. A Tabela
de Vendas não inclui o nome do produto, mas inclui seu código. Em outras palavras, a
Tabela de Vendas permite entender qual produto foi vendido fazendo referência ao código,
que é a chave primária (primary key) na Tabela de Produtos. O código do produto na Tabela
de Vendas é uma chave estrangeira (foreign key). Juntar as duas tabelas para que a chave
estrangeira corresponda à chave primária resulta na seguinte tabela.

Data Código do Produto Nome do Produto Preço Unitário Quantidade


1/11 102 Morango 800 G 1100

1/11 101 Melão 800 G 300

5/11 103 Maçã 120 G 1700

8/11 101 Melão 800 G 500

Isso cria uma nova tabela dinâmica de dados de venda, incluindo a data, o código do
produto, o nome do produto, seu preço unitário e a quantidade. A figura abaixo mostra uma
junção - a área sombreada representa uma coluna que aparece nas duas tabelas originais.

44 CAPiTULO Z
PIVI5,2r0

Finalmente, vamos examinar a divisão. Divisão é uma operação que extrai as linhas cujos
valores de coluna correspondem àqueles na segunda tabela, mas apenas retorna colunas
que não existem nessa última. Vamos ver um exemplo.

TABELA PE VENDAS TABELA DE DESTINO DE EXPORTAÇÃO

Cód. Dest. Exp. Nome Dest. Exp. Data Cód. Dest. Exp. Nome Dest. Exp.

12 Reino de Minami 5/3 12 Reino de Minami

12 Reino de Minami 10/3 23 Império Alfa

23 Império Alfa 5/3

25 Reino de Ritol 21/3

30 Reino de Sazanna 25/3

Dividir a Tabela de Vendas pela de Destino da Exportação resulta na tabela a seguir.


Isso permite encontrar as datas quando as frutas foram exportadas tanto para o Império
Alfa quanto para o Reino de Minami.

Data

5/3

QUE.5Te.5E5
Agora, vamos responder a algumas questões para ver se você entendeu bem os bancos de
dados relacionais. As respostas estão na página 48.

Como se chama a chave que se refere a uma coluna em uma tabela diferente no banco
de dados relacional?

02
A tabela a seguir exibe informações sobre livros. Qual item você pode usar como uma
chave primária? ISBN é Número Padrão Internacional de Livro (International Standard
Book Number), um número de identificação único atribuído a qualquer livro publicado.
Alguns livros podem ter o mesmo título.

ISBN Nome do livro Nome do autor Data de publicação Preço

O QUE é UM BANCO DE DADOS RELACIONAL? 45


Q3
Como se chama a operação utilizada aqui para extrair dados?

Cód. Dest. Exp. Nome Dest. Exp. Cód. Dest. Exp. Nome Dest. Exp.

12 Reino de Minami 25 Reino de Ritol

23 Império Alfa

25 Reino de Ritol

30 Reino de Sazanna

Q4
Como se chama a operação utilizada aqui para extrair dados?

Cód. Dest. Exp. Nome Dest. Exp. Cód. Dest. Exp. Nome Dest. Exp.

12 Reino de Minami 15 Reino de Paronu

23 Império Alfa 22 Reino de Tokanta

25 Reino de Ritol 31 Reino de Taharu

30 Reino de Sazanna 33 Reino de Mariyon

Cód. Dest. Exp. Nome Dest. Exp.

12 Reino de Minami

15 Reino de Paronu

22 Reino de Tokanta

23 Império Alfa

25 Reino de Ritol

30 Reino de Sazanna

31 Reino de Taharu

33 Reino de Mariyon

46 CAPÍTULO Z
Q5
Como se chamam as operações usadas aqui para extrair dados?

Cód. Dest. Exp. Nome Dest. Exp. Cód. Dest. Exp. Data

12 Reino de Minami 12 1/3

23 Império Afta 23 1/3

25 Reino de Ritol 12 3/3

30 Reino de Sazanna 30 5/3

12 6/3

25 10/3

1
Cód. Dest. Exp. Data Nome Dest. Exp.

12 1/3 Reino de Minami

23 1/3 Império Alfa

12 3/3 Reino de Minami

30 5/3 Reino de Sazanna

12 6/3 Reino de Minami

25 10/3 Reino de Ritol

O BANCO DE PAI205 RELACIONAL. VENCE!


Em um banco de dados relacional, pode-se utilizar oito diferentes operações para extrair
dados. Os resultados obtidos também são tabelados. Se você combinar as operações
explicadas nesta seção, poderá extrair dados para qualquer propósito. Por exemplo, pode-
-se usar o nome e o preço de um produto para criar dados totalizados de vendas brutas.
Bancos de dados relacionais são populares porque são fáceis de entender e permitem pro-
cessamento de dados flexível.

O QUE é UM BANCO DE DADOS RELACIONAI.? 47


RE51JMO

• Uma linha de dados é chamada de registro (record), e cada coluna, de campo (field).
• Uma coluna que pode ser usada para identificar dados é chamada de chave primária.
• Em um banco de dados relacional, pode-se processar dados utilizando o conceito de
tabela.
• Em um banco de dados relacional, pode-se processar dados com base em operações
matemáticas.

RE5P05TA5

Q1 Chave estrangeira

Q2 ISBN

Q3 Seleção

04 União

Q5 Junção (join)

48 CAPÍTULO Z
3
VAM05 PROJETAR UM BANCO DE
177\90V
... 1550,
1550.

O QUE TÁ
ACONTECENDO
COM O CAN?

ELE ANDA
FALANDO
50ZINHO...

...SOBRE BANCO
BOM DIA,
DE DADOS 011
meNINA51
ALGO
Ai- E57:4 VOCÊ,
HUM! 0/1
BOM DIA, TICA.

VOCÊ PRECISA TER


MAIS CUIDADO, CAIN!

BOM DIA, RURUNA!!


O QUÊ?

VOCÊ PARECE DESCULPE...


NINGUÉM PODE ESTRANHO SE FICA VOCÊ TEM
VER A TICA, Só EU FALANDO COM RAZÃO.
E VOCÊ. ELA NA FRENTE DE VAMOS
OUTRAS PESSOAS. TOMAR
CUIDADO.

PARECE ENTÃO, DO QUE


oA Louco! VOCÊS ESTÃO
AH! FALANDO?

EU NEM IMAGINO POR POR ISSO


ONDE COMEÇAR PARA ESTAVAM SUMIDOS
CRIAR UM BANCO DE A MANHÃ INTEIRA.
DADOS ENTÃO ESTAVA
PEDINDO AJUDA PARA
A TICA.

E?

VAMOS PROJETAR UM BANCO DE DADOS! 51


é UMA
A TICA DIZ QUE O LIÇÃO MEIO
EM PRIMEIRO LUGAR, PROCEDIMENTO LONGA...
PENSAMOS QUE SERIA CORRETO É CRIAR UM
MAIS FÁCIL CRIAR UM MODELO E ANALISAR
BANCO DE DADOS... O GERENCIAMENTO PE
EXPORTAÇÃO ATUAL
BASEANDO-SE NELE.

coNseeufssemos
ENTENDER AS
CONDIÇÕES REAIS D0
ENTÃO TEMOS QUE
REINO DE KOD...
ESTUDAR ALGO NOVO.

BOM, ESTÃO
PRONTOS?
USAREMOS UM
MODELO DE
ANÁLISE CHAMADO...

ENTIDADE E
DE ENTIDADE E R DE RELACIONAMENTO...
RE1-ACIONAMENTO.

NÃO CONHEÇO
ESSES NOMES...

5Z CAPÍTULO 3
NO MODELO E-R,
ANALISA-5E O MUNDO
REAL UTILIZANDO-5E 05 MELHOR...
CONCEITOS DE ENTIDADE
E RELACIONAMENTO.

ENTIDADE é UM POR EXEMPLO, QUANDO SE


OBJETO QUE 5E EXPORTAM FRUTAS PARA
PODE IDENTIFICAR NO OUTRO5 PAÍSES, FRUTAS E
MUNDO REAL. PE5TINO5 PE EXPORTAÇÃO
PODEM SER CONSIDERADOS
ENTIDADES.

/\(

R/sc
R/sc

CÓDIGO DO
E ASSOCIAR PRODUTO
UMA ENTIDADE Nome Po
COM SUAS PRODUTO
PROPRIEDADES
RESULTA EM...

VAMOS PROJETAR UM BANCO DE DADOS! 53


TÁ, VOCÊ ANALISOU ENTÃO, O QUE é UM
FRUTAS E DESTINOS IZELACIONAMNTO?
DE EXPORTAÇÃO.

TEM A VER COM


COMO AS ENTIDADES
se RELACIONAM.

FRUTA
FRUTAS E DESTINOS DE ENTÃO PODEMOS
EXPORTAÇÃO ESTÃO CONSIDERAR
RELACIONADOS PORQUE FRUTA VENDAS COMO UM
VENDEM-SE FRUTAS PARA RELACIONAMENTO.
ESSES DESTINOS.

DESTINO DE
EXPORTAÇÃO
g////5C11

REINO PE K017 IMPÉRIO


ALFA
FRUTAS SÃO
EXPORTADAS PARA
MUITOS PAÍSES, e
REINO DE
CADA DESTINO DE RITOL
EXPORTAÇÃO COMPRA
MUITOS TIPOS DE
éo
FRUTAS. REINO DE MINAMI
FRUTAS DE TINO DE
VINDAS DO EXPORTAÇÃO
REINO DE KOD

MUITOS DESTINOS DE
EXPORTAÇÃO C/4.0 ESTÃO
ASSOCIADOS COM MUITAS
FRUTAS CM/
SIM, se VOCÊ
PENSAR
UM POUCO
SOBRE isso...

54 CAPÍTULO 3
o

cóReo PO
PRODUTO

ESSE
RELACIONAMENTO é-
CHAMADO DE MUIT05-
PARA-MIJIT05.

NO MODELO E-R, O
NÚMERO DE ASSOCIAÇÕES
Nome DESTINO DE
EXPORTAÇÃO
ENTRE ENTIDADES DEVE
CONSIDERADO.

5ó MAÇÃ5
O RELACIONAMENTO 'MA-;
MARCA
MAÇÃS SERIA UM-PARA-
MARCA CAIN MUIT05? CAIN
TÁ, ENTÃO SE O
CAIN VENDESSE
UM ÚNICO TIPO DE
FRUTA PRA VÁRIAS
FAMÍLIAS, 5ó MAÇÃS

cóvieo PO
PRODUTO
ASSIM, ESTA é A
CONDIÇÃO REAL DO NOME PO PRODUTO
REINO DE KOD.
PREÇO UNITÁRIO

O MODELO E-R cóneo DESTINO DE


EXPORTAÇÃO
MOSTROU A
CONDIÇÃO REAL, NOME DESTINO DE
NÃO? EXPORTAÇÃO

é ASSIM (RUE
O NEGÓCIO DE
EXPORTAÇÃO DO
REINO DE KOD
FUNCIONA!
NORMALIZAÇÃO ve UMA TABELA
AGORA QUE VOCÊS
Isso mesmo! A SABEM A9 CONPIÇõE5
PRIMEIRA COISA A
FAZER é ANALISAR REAIS DO REINO DE
é DIFÍCIL COMEÇAR A A SITUAÇÃO REAL K07...
CRIAR UM BANCO ve ISSO é MUITO
DADOS. IMPORTANTE.

1/1

744.E

lel II ANL:
11111 4 1

15S000!!

VAM05 PENSAR EM
COMO PROJETAR UM
BANCO ve 7AI205 ve
vegvAve.

- R.
CAIN?

RELAT6R/0 1/ENDAS

PARA O REINO DE MINAM! DATA: 5/3

@ 800e X 1.100 =
@ 150e 880.000e
x
300 = 45.0006
\\

E-se É... UM ESTE RELATÓRIO


RELATÓRIO Que DEMONSTRA Bem O
FAZEMOS QUANDO e5TAI70 ATUAL DA5
EXPORTAMO5 EXPORTAÇÕES.
FRUTAS PARA UM PAÍS
ESTRANGEIRO.

SIM, DE FATO! ENTÃO,


USAMOS 05 DADO5 DE
TODOS 05 RELATÓRIOS...

PARA CRIAR UMA


TABELA NO BANCO DE
DAD05.

AINDA NÃO.
PRIMEIRO...

AQUI E5TÁ
CÓDIGO DO DATA
C612100 PE5T. NOME ',EST. CÓDIGO DO NOME DO PREÇO
RELATÓRIO PE EXP. DE EXP. PRODUTO PRODUTO UNITÁRIO QUANTIDADE
101 MELÃO 8000 1100
REINO 25
1101 5/3 12 MINAMI
102 MORANGO isoe 300

1102 7/3 Z3 IMPÉRIO 103 MAÇÃ 1206 1700


ALFA
REINO DE
1103 8/3 25 104 LIMÃO 200 & 500
RITOL
1104 10/3 12 REINO DE 101 MELÃO 800e 2500
MINAMI
103 MAÇÃ 1206 2000
REINO DE
1105 12/3 25
RITOL.
104 LIMÃO 2006 700

TABELA CRIADA A PARTIR 1705 RELATÓRIOS


DE VENDA5
57
ÓTIMO! ISSO pope
SER O NO550 / EM UM BANCO PB
BANCO DE DADOS. DADOS RELACIONAL,
TEMOS QUE FAZER
A TABELA O MAIS
/4/,=Y FÁCIL PossiveL DE
NÃ SER USADA.

SINTO MUITO, MAS VOCÊ


NÃO VAI PODER USÁ-LA AINDA NÃO...
ASSIM.

VOCÊ QUER VEJA, EXISTEM


DIZER QUE BOM, SIM_
DUAS LINHAS DE
ESSA TABELA PRODUTOS EM UMA
NÃO ESTÁ ÚNICA LINHA DE
FÁCIL DE DADOS.
ENTENDER?

9 AH...

1550 PORQUE SERIA MAIS FÁCIL DE


ALeUMA5 VEZES ENTENDER SE CADA
PROCESSAMOS LINHA DA TABELA
DOIS OU MAIS TIVESSE APENAS UM
PRODUTOS EM UM ÚNICO VALOR..
ÚNICO RELATÓRIO SIM.
DE VENDAS.

58 CAPÍTULO 3
PARA 1550 EM VEZ DE USAR UMA
ÚNICA TABELA PARA
TODOS 05 DADOS...

OLAMII
// i

Nó5 05 DIVIDIREM05 EM
VÁRIAS TABELAS!

PODE-SE FAZER MAS 1550 PARECE


I550?! MUITO MAIS DIFÍCIL.
DO Que USAR UMA
ÚNICA TABELA...

MA5 é IMPORTANTE PARA o QUÊ?! eu


PODE PARECER ESTAVA 5ó
eeReNCIAR 05 DADOS PENSANDO...
COMPLICADO,
CORRETAMENTE e SEM
DISCREPÂNCIAS. e EB5E é
O NO550
TRABALHO.

DESCOBRIR AS
CONDIÇÕES
REAIS...

USANDO UM
MODELO
C-R...
TÁ BOM...

VAMOS PROJETAR UM BANCO DE DADOS! 5c?


SUPONHA QUE
SE você USAR
QUEIRAMOS
ESSA TABELA DO
AUMENTAR ZOG NO JEITO Que ESTÁ,
PREÇO UNITÁRIO DO
MELÃO.

TERÁ alie
ENCONTRAR TODAS
AS LINHAS COM
MELÃO E CORRIGIR
O PREÇO UNITÁRIO.

TABELA De 1
MAS, se você TEM PRODUTOS
UM TABELA Rei-Ai-NA
SOMENTE AOS
MELÃO
PRODUTOS,
MORANGO 1500

MAÇÃ 120 G

PODE CORRIGIR O LIMÃO ZOOG ASSIM, NÃO HAVERÁ


PREÇO EM APENAS UM CONFLITOS POR VOCÊ
LUGAR - UMA LINHA NA ESQUECER DE CORRIGIR
TABELA DE PRODUTOS. ALGUMA LINHA!! ISSO NÃO é
ÓTIMO?

é, TODO MUNDO ENTENDI. VISTO RECEBE O NOME DE


PODE ESQUECER POR esse NORMAUZAÇÃO.
UMA OU DUAS ÂNGULO, é BEM
COISAS...
CONVENIENTE.

NORMALIZAÇÃO, SIM, ISSO é


NORMALIZAÇÃO IMPORTANTE'
XII
RESMUNGANDO
PE NOVO?
?

DIVIDIR A TABELA
PARA EVITAR QUE
CONFLITOS DE DADOS
ACONTEÇAM...

60 CAPITULO 3
VAMOS TENTAR
ALTERÁ-LA PARA DADOS REPETIDOS SÃO
QUE CADA LINHA UMA PISTA DE QUE LINHAS
TENHA UM ÚNICO DEVEM SER DIVIDIDAS.
VALOR.

UMA TABELA COM DATAS,


CÓDIGO PE DESTINO DA
ENTÃO, VOU DIVIDIR EM... EXPORTAÇÃO E NOME DO
DESTINO DA EXPORTAÇÃO...

-----
e OUTRA COM CÓDIGO
TABELA DE VENDAS DO PRODUTO, NOME DO
(PRIMEIRA FORMA NORMAL (1)) PRODUTO, PREÇO UNITÁRIO
E QUANTIDADE.
CÓDIGO DO
DATA
c.óvleo pes-r. NOME DE5T.
RELATÓRIO DE exp. DE EXP.
1101 5/3 12 REINO DE MINAMI

1102 7/3 23 IMPÉRIO ALFA


MA5 O CÓDIGO DE
1103 6/3 25 REINO DE RITOL RELATÓRIO EXISTE
1104 10/3 12 REINO DE MINAMI EM AMBAS A5
TABELAS, NÃO?
1105 12/3 29 REINO DE RITOL

TABELA DE DETALHES DE VENDAS


(PRIMEIRA FORMA NORMAL (2))

CÓDIGO DO GÓD100 DO Nome DO PREÇO


RELATÓRIO PRODUTO PRODUTO UNITÁRIO QUANTIDADE

1101 101 MELÃO 800 e 1100

1101 102 MORANGO 150e 300

1102 103 MAÇÃ 1200 1700


1550, A55IM
1103 104 LIMÃO ZOOS 500
VOCÊ PODE
101 MELÃO 8000 2500
IDENTIFICAR
1104
5E EXISTEM
1105 103 MAÇÃ 1206 2000 A55OCIAÇõE5
1105 104 LIMÃO ZOO e 700
ENTRE A5 DUAS
TABELAS.

VAMOS PROJETAR UM BANCO DE DADOS! 61


UMA TABELA QUE RESULTA A TABELA QUE TINHA
DE UMA DIVISÃO COMO LINHAS COM DOIS OU
ESSA ESTÁ NA PRIME/RA MAIS VALORES ANTES
FORMA NORMAL. DE SER DIVIDIDA
ESTÁ NA FORMA TABELA ORIGINAL
07ESNORMALIZAPA)
PE5NOIZMAGIZAPA.
PRIMEIRA FORMA
NORMAL
&FOFz NORMAL /

PARE DE
RESMUNGAR ISSO SIGNIFICA QUE
atà A PRIMEIRA FORMA
NORMAL é CRIADA
DIVIDINDO-SE A FORMA
*LM pe9NORMALIZAPA.
PRIMEIRA FORMA
NORMAL

ESTAS ESTÃO NA
"PRIMEIRA FORMA
NORMAL". ISSO QUER
DIZER QUE EXISTEM BINGO!
UMA "SEGUNDA" e UMA
"TERCEIRA" FORMAS?

AGUENTEM
FIRME!

A PRIMEIRA FORMA AH, ENTENDO...


NORMAL NÃO PODE SER
USADA COMO UMA TABELA
DE BANCO RELACIONAL
ASSIM COMO ESTÁ. VAMOS
LÁ!! é UM
LONGO
-PRIMEI CAMINHO!!
FORMA
NORMAL

MONTE BANCO DE
DADOS RELACIONA

6Z CAPÍTULO 3
Cc5Ple0 DO C617100 DO NOME 120 PREÇO
TUDO BEM ENTÃO, RELATÓRIO PRODUTO PRODUTO UNITÁRIO
QUANTIDADE

VAMOS OLHAR A 1101 101 MELÃO 8000 1100


PRIMEIRA FORMA
NORMAL CZ). 1101 102 MORANGO 150G 300

TABELA DE DETALHES DE VENDAS


(PRIMEIRA FORMA NORMAL (1))
AQUI ESTÁ.

VOCÊ AINDA NÃO PODE


Ê A TABELA DE GERENCIAR PRODUTOS e51111 POR
DETALHES DE COM ESSA TABELA. QUÊ?
VENDAS.

PORQUE, 5E VOCÊS
RECEBESSEM LARANJAS
MANDARIM,
NÃO PODERIAM
ADICIONÁ-LAS
A ESSA TABELA
POR ELAS AINDA
NÃO TEREM
SIDO VENDIDAS.

MAÇAS COM VENDAS


JÁ QUE NENHUMA VENDA FOI
INFORMADA, O CÓDIGO DE
E NA TABELA (2), 05
RELATÓRIO E A QUANTIDADE
DADOS RELACIONADOS
SÃO DESCONHECIDOS.
A PRODUTOS 5 VENDAS
ESTÃO MISTURADOS.

CÓDIGO
PO NOME DO
PRODUTO PRODUTO

VAMOS PROJETAR UM BANCO DE DADOS! 63


DIVIDA A TABELA
VOCÊ NÃO PODE HUMM. (2)
OERENCIAR PRODUTOS
INDEPENDENTEMENTE
USANDO A TABELA (2).
TABELA
(2)

ISSO MESMO!! ENTÃO, EM DUAS!!

ESSAS SÁ-0 A5 TABELAS QUE


RESULTAM DA DIVISÃO DA PRIMEIRA
FORMA NORMAL (2) EM DUAS.

TABELA DE PRODUTOS
(SEGUNDA FORMA NORMAL Cl))

cópigb 20 NOME DO PREÇO


PRODUTO PRODUTO UNITÁRIO
101 MELÃO 800G A TABELA (1) CONTÉM
102
DADOS RELACIONADOS
MORANGO 1900 AOS PRODUTOS.
103 MAÇÃ 1ZOG
SE O VALOR NA COLUNA
104 LIMÃO ZOOG DE CÓDIGO DO PRODUTO
FOR DETERMINADO,
popEmos ENCONTRAR
TABELA DE DETALHES ve VENDAS
(SEGUNDA FORMA NORMAL (Z)) DADOS NAS COLUNAS DO
NOME DO PRODUTO E DO
PREÇO UNITÁRIO.
cóvier, DO cóvino vo QUANTIDADE
RELATÓRIO PRODUTO
1101 101 1100 AH, NOSSA!.
ENTÃO 1550
1101 10Z 300 SIGNIFICA QUE `
/-~►
O CÓDIGO DO
1102 103 1700 PRODUTO, COMO
1103 104 500 CHAVE PRIMÁRIA,
DETERMINA 05
1104 101 2500 VALORES EM OUTRAS
COLUNAS.
1105 103 2000

1105 104 700

EXATO.
64 CAPÍTULO 3
SABEM 05 DADOS PARA A TABELA (2),
RELACIONADOS A05 CON5IDEREM A COMBINAÇÃO
ITENS DE DETALHES DO CÓDIGO DO RELATÓRIO E
DE VENDAS NA TABELA DO PRODUTO COMO UMA CHAVE
(2)? PRIMÁRIA.

O VALOR DE 5UA5
COLUNAS TAMBÉM é
CHAVE PRIMÁRIA
DETERMINADO PELA
CHAVE PRIMÁRIA
CO le0 PO C017160 PO
RELATÓRIO PRODUTO

CONTUDO...

EM ALGUNS CA505, 2015 EM OUTROS CA505, UM TIPO


TIPOS DE PRODUTOS DE PRODUTO é VENDIDO EM
SÃO veNvivos AO DIFERENTES QUANTIDADES.
MESMO TEMPO...

.40
-a.
N
I CIPOrt4' "'"'
.1
`kalido, 44551""
-

1550 QUER DIZER...


o CÓDIGO PO
PRODUTO
NOME 20
PRODUTO
PREÇO
UNITÁRIO

CHAVE
DEVE-5E DIVIDIR A TABELA PRIMÁRIA
PARA QUE QUANDO UMA CHAVE
PRIMÁRIA FOR DETERMINADA,
VALORES EM OUTRAS COLUNAS CÓDIGO PO Có17100 PO
QUANTIDADE
RELATÓRIO PRODUTO
SEJAM DETERMINADOS.

ENTENDEU?

VAMOS PROJETAR UM BANCO DE PAPOS! 65


A TABELA Guie PODEMOS ACRESCENTAR mesmo se O PREÇO
RESULTA DA DIVISÃO AS LARANJAS MANDARIM (DO MELÃO MUDAR,
DE ACORDO COM DE QUE FALAMOS ANTES BASTA CORRIGIRMOS
ESSA REGRA ESTÁ NA NA SEGUNDA FORMA 05 DADOS EM UMA
NORMAL 0). ÚNICA LINHA, CERTO?

QUE AINDA NÃO


TAMBéM PODEMOS FORAM VENDIDOS!
ACRESCENTAR
KIWIS e UVAS

SEGUNDA FORMA
NORMAL.

...ALIÁS, VOCÊ DIVIDIU TABELA DE VENDAS (PRIMEIRA


FORMA NORMAL. Cl))
A PRIMEIRA FORMA
NORMAL (2),
CÓDIGO DO C617100 DEST. NOME PEST.
RELATÓRIO DATA
17E EXP. 17E EXP.
1101 5/3 12 REINO 17E MINAMI

1102 7/3 23 IMPÉRIO ALFA

1103 6/3 25 REINO De RITOL


1104 10/3 12 REINO DE MINAMI

1105 12/3 29 REINO De RITOL


ENTÃO NÃO é NECESSÁRIO oH, VOCÊ N__A
DIVIDIR A TABELA DE VENDAS ESTÁ
USANDO
NA PRIMEIRA FORMA ÓCULOS
NORMAL (1)? AGORA.

VUPT

PARA ESSA TABELA, SE O VALOR DO


CÓDIGO De RELATÓRIO FOR DETERMINADO,
TO705 05 OUTROS VALORES, DATA,
CÓDIGO DE DESTINO DE EXPORTAÇÃO e
VAMOS VER!! NOME DO DESTINO DE EXPORTAÇÃO FICAM
DETERMINADOS.

BEM PENSADO!
é VERDADE!!

66 CAPÍTULO 3
COMO SE CLASSIFICA
UMA TABELA EM QUE NA SEGUNDA FORMA NORMAL!!
OS VALORES EM
OUTRAS COLUNAS SÃO
DETERMINADOS QUANDO A ENTÃO ESTA TABELA ESTÁ
CHAVE PRIMÁRIA TAMBÉM é? NA SEGUNDA FORMA
NORMAL, CERTO?

/ /

TABELA PE VENDAS TABELA DE veN


(PRIMEIRA FORMA NORMAL (1)) (SEGUNDA FORMA NORMAL (3))

CÓDIGO 20 LDATA CÓDIGO PEST.


DE EXP.
Nome PEST. DE
EXP.
CÓDIGO 20 1 DATA C.617100 DE5T.
DE EXP.
NOME PEST. DE
EXP.
REINO DE MINAMI REINO PE MINAMI
CERTO. VOCÊ PODE COMO A SEGUNDA IMPÉRIO ALFA
CONSIDERAR A PRIMEIRA IMPÉRIO ALFA
FORMA NORMAL (3)!
FORMA NORMAL 0)... REINO DE RITOL REINO DE RITOL

COMPLETAMOS
A PRIMEIRA e A
SEGUNDA FORMAS
NORMAIS.

AGORA, NO550
BANCO DE DADOS
ESTÁ COMPLETO?

GRs41,41
5
Qus
4v7-, O
A SEGUNDA Q9
FORMA
NORMAL /,
Ê...

VOCÊ PODE
VOAR, TICA.
ISSO NÃO É
JUSTO.

VAMOS PROJETAR UM BANCO DE DADOS! 67


OLHE A SEGUNDA FORMA NÃO SE CONSEGUE
OERENCIAR DESTINOS PENSANDO,
NORMAL (3) DE NOVO. PENSANDO,
DE EXPORTAÇÃO COM
essA TABELA. PENSANDO...
AH!

TABELA De VENDAS
HEIN?
(SEGUNDA FORMA NORMAL (3))

CÓDIGO 20 cóDIGO Pe5T. NOME PeST. PE


RELATÓRIO DATA PE EXP. EXP.
1101 5/3 12 REINO PE MINAMI

dir
ewo 7/3 23 IMPÉRIO ALFA
e'r 8/3 25 REINO DE RITOL

O REINO DE SAZANNA, QUE NOME PEET.


REINO PE 25 EXP.
NÃO IMPORTOU FRUTA ALGUMA, MINAMI NA TABELA (3), OS
NÃO PODE SER GERENCIADO DADOS QUE RELACIONAM
ACRESCENTANDO-O NESSA DESTINOS DE
TABELA. EXPORTAÇÃO E VENDAS
ESTÃO MISTURADOS.

o
REINO PE
5AZANNA

CóPI60
resT. PE
EXP.

DE NOVO, DIVIDA-A!
COMO poremos
GERENCIAR
DESTINOS DE
EXPORTAÇÃO •
TABELA DE VENDAS TABELA DE ['EST. DE EXPORTAÇÃO
DE FORMA (TERCEIRA FORMA NORMAL (1)) (TERCEIRA FORMA NORMAL (2))
INDEPENDENTE?
cómeo 20 DATA C62160 res-r. Có2100 PE5T. DE NOME PEST. 25
RELATÓRIO PE EXP. EXP. EXP.
1101 5/3 1Z 12 REINO 25 MINAMI

1102 7/3 23 23 IMPÉRIO ALFA


1103 8/3 25 25 REINO PE RITO!.

1104 10/3 12

1105 12/3 25
MAS, DE FATO, CÓDIGO
NA SEGUNDA FORMA 51 M. DETERMINADO CÓDIGO DE DO
NORMAL (3), O NOME DOS RELATÓRIO CORRESPONDE RELATÓRIO
DE5TINO5 DE EXPORTAÇÃO A UM VALOR DE
é DETERMINADO DE CÓDIGO DE DESTINO DE
ACORDO COM O CÓDIGO EXPORTAÇÃO,
DE RELATÓRIO. córieo
DEST. PE
EXP.
DE-55A FORMA
DETERMINANDO O
NOME DO DESTINO
DE EXPORTAÇÃO NOME DEST.
INDIRETAMENTE. DE EXP.
///// F\ \\-\

PARA LIDAR COM


TA15 QUESTõE5, VOCÊ DIVIDE A TABELA PARA
QUE NENHUM ITEM SEJA
DETERMINADO INDIRETAMENTE.

CÓDIGO DO CÓDIGO DEET. CÓDIGO DEST. NOME 2E5T.


RELATÓRIO PATA DE EXP. DE EXP. DE EXP.

AGORA,
VOCÊS PODEM
FINALMENTE GeRENGIAR
INCLUSIVE
CHEGAMOS NA O REINO PE
CORRETO. UMA TABELA Que TERCEIRA FORMA EAZANNA.
NÃO PERMITE QUE OUTRA NORMAL.
CHAVE, EXCETO A PRIMÁRIA,
DETERMINE VALORES EM
OUTRAS COLUNAS...

ESTÁ NA TERCE/RA
FORMA NORMAL"!

VAMOS PROJETAR UM BANCO PE PAPOS! 6q



TABELA DE DESTINOS
TABELA DE VENDAS DE EXPORTAÇÃO

GóDIGO DO CÓDIGO DE9T. CÓDIGO ['EST. Nome DeeT. DE EXP.


DATA 12E EXP. DE EXP.
RELATÓRIO

1101 5/3 12 12 REINO DE MINAR

1102 7/3 23 23 IMPÉRIO ALFA

1103 8/3 Z5 25 REINO 25 RITOL

1104 10/3 12

1105 12/3 25
TABELA DE
PRODUTO5

cóvieo DO NOME DO PREÇO


TABELA DE DETALHES PRODUTO PRODUTO UNITÁRIO
DE VENDAS
101 MELÃO 8000

CÓDIGO DO CÓDIGO DO QUANTIDADE MORANGO 150G


RELATÓRIO PRODUTO 102

1101 101 1100 103 MAÇÃ 1206

1101 102 300 104 Lisa:, 200G

1102 103 1700

1103 104 500 E5TE5 SÃO 05


RESULTADOS DA
1104 101 2500
DIVISÃO DE UMA
1105 103 2000 TABELA ATé A
TERCEIRA FORMA
1105 104 700 NORMAL.

UM BANCO DE DADOS
RELACIONAL NORMALMENTE
USA TABELAS DIVIDIDAS ATA A
TERCEIRA FORMA NORMAL.

TOCA AQUI!

101
AGORA NOSSAS
TABELAS ESTÃO
COMPLETAS!

cAINF, ? PRINCESA"
NENHUM CONFLITO VAI
AGORA, vocès porem OCORRER mesmo QUE
eeRENCIAR PRODUTOS, MAIS DADOS SEJAM
DESTINOS DE EXPORTAÇÃO, ADICIONADOS.
E VENDAS USANDO TABELAS,

ENTÃO PODEM
eeRENCIAR
TUDO 1550 SEM
PROBLEMAS.

QUE ALÍVIO...

51M.

EMBORA TENHAMOS
DIVIDIDO NOSSA TABELA 05 DADOS ORIGINAIS
ORIGINAL EM MUITAS ESTÃO DISTRIBUÍDOS
OUTRAS TABELAS, POR TODAS ELAS.

TABELA CRIADA A PARTIR DOS


RELATÓRIOS DE VENDAS

ESTA TABELA MOSTRA


RELACIONAMENTOS
Ol ibill-1 1"
ENTRE 05 DADOS. "

EXATAMENTE! ELA é
RELACIONAL.

VAMOS PROJETAR UM BANCO DE DADOS! 71


TABELA DE DESTINOS
2E EXPORTAÇÃO

CÓDIGO DO CÓDIGO DE5T. CÓDIGO DEST.


DATA PE EXP.
NOME DE5T. PE exp.
RELATÓRIO DE EXP.

11 12 REINO DE MINAM

O CÓDIGO DE DESTINO DE 23 IMPÉRIO ALFA

EXPORTAÇÃO NA TABELA
DE VENDAS SE REFERE AO
CÓDIGO CORRESPONDENTE
NA TABELA DE DESTINOS DE DA MESMA FORMA, O CÓDIGO
EXPORTAÇÃO. DO PRODUTO NA TABELA DE
DETALHAMENTO DE VENDAS se
REFERE AO CÓDIGO EQUIVALENTE
TABELA DE DETALHES
VE VENDAS NA TABELA DE PRODUTOS,

cóvieo vo CÓDIGO DO osrrtrAve


RELATÓRIO PRODUTO
-r TABELA DE
110 T
101 PRODUTOS

A. R CÓDIGO DO NOME P0
PRODUTO PRODUTO
1700 Sooe
MELÃO
l 0D
1 O> 2. MORANGO 150G
25
120G

ZOOG
O CÓDIGO DE RELATÓRIO NA
TABELA DE DETALHAMENTO se
REFERE AO CÓDIGO EQUIVALENTE
NA TABELA DE VENDAS.

ELAS PARECEM
A5 COLUNAS ave se TABELAS SEPARADAS e
MONTE BANCO
REFEREM A OUTRAS DE DADOS INDEPENDENTES, MAS
SÃO CHAMADAS DE RELACIONAL
ESTÃO PROFUNDAMENTE
CHAVES E577ZAN&ElIZA5 ASSOCIADAS POR
CFOREI&N K>a CHAVES ESTRANGEIRAS.

AS CHAVES ESTRANGEIRAS ESTAMOS...


QUASE...
SE REFEREM Às CHAVES !!
PRIMÁRIAS DE OUTRAS
TABELAS.

7Z CAPÍTULO 3
MAL POSSO ESPERAR—"-
PI ek
FAZER O eeRENCIAMeNTO o
EXPORTAÇÃO FUNCIONAR,
MELHOR USANDO O NOSSO
BANCO DE DADOS.

CANSEI...

PRINCESA...
SR. CAIN...

ALGUMA COISA
ERRADA?

ii

voct9 TÊM Aevo ve


FORMA murro ESTRANHA.

AH, ESPERE... EU
O Que HÁ P0550 eXPLICAR.
COM VOCÊS?

VOCÊ NÃO
DISSE PARA
A PRINCESA
QUALQUER
COISA
ESTRANHA, NÃO,
SR. CAIN?

EU? CLARO
aue NÃO.
O Que é O moveLo E-R?
A princesa Ruruna e o Cain descobriram as condições 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 condições 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 exportação.
Além disso, um modelo E-R mostra relacionamentos entre entidades. A princesa
Ruruna e o Cain fizeram sua análise pressupondo que existisse um relacionamento cha-
mado vendas entre frutas e destinos de exportação. Frutas são exportadas para múltiplos
destinos de exportação, e cada um destes importa diversos tipos de frutas. Por esse motivo,
uma análise para o modelo E-R foi feita presumindo-se que existia um relacionamento
chamado de muitos-para-muitos entre frutas e destinos de exportação. O número de asso-
ciações entre entidades é chamado de cardinalidade.

CóD100 DO PRODUTO )

FRUTA

< C NOME DO PRODUTO )

PREÇO UNITÁRIO )

QUANTIDADE
J

./....„{Ce5D. De DESTINO De EXPORTAÇÃO)


DESTINO DE
EXPORTAÇÃO
NOME DE DESTINO DE EXPORTAÇÃO

COMO ANALI5AR UM moveLo E-R


Como se fariam análises nos casos abaixo? Pense a respeito.

1° CA50: RELACIONAMENTO UM-PARA-UM


Um destino de exportação gerencia uma unidade de informação do histórico de exportação.
Esse tipo de relacionamento é chamado de um-para-um.

DESTINO
PE EXPORTAÇÃO

INFORMAÇÕES PE
DESTINO
DE EXPORTAÇÃO
HISTÓRICO DE
EXPORTAÇÃO

74 CAPÍTULO 3
22 CA50: RELACIONAMENTO UM-PARA-MUITO5
Vários serviçais servem uma princesa. Os serviçais não servem outra princesa, nem mesmo
o rei.

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

32 CA50: RELACIONAMENTO MUITO5-PARA-MUITO5


Frutas são exportadas para vários destinos. Os destinos de exportação importam diversos
tipos de frutas.

FRUTAS

REINO.ve IMPÉRIO REINO DE


MIMAM ALFA RITOI. DESTINOS DE
EXPORTAÇÃO

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

VAMOS PROJETAR UM BANCO DE DADOS! 75


QUESTÕES
Quanto você entendeu do modelo E-R? Analise e desenhe um modelo E-R para cada um
dos casos abaixo. As respostas estão na página 82.

Um membro da equipe gerencia vários clientes. Um cliente nunca será contactado por
mais de um membro da equipe.

'CIMO 75 IMPÉRIO REINO DE


MINAMI ALFA RITOL
)

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

76 CAPÍTULO 3
Q3
Cada aluno participa de diversas palestras. Cada palestra é assistida por diversos
alunos. Um professor dá diversas palestras. Cada palestra é dada por um professor.

Q4
Cada cliente pode abrir várias contas correntes. Cada conta é aberta por um cliente.
Cada banco gerencia diversas contas. Cada conta é gerenciada por um banco.

Lembre-se de que a análise baseada no modelo E-R não necessariamente apresenta


um resultado "correto". Pode haver muitas formas de organizar logicamente os dados para
refletir condições reais.

VAMOS PROJETAR UM BANCO DE PAPOS! 77


NORMALIZANDO UMA TABELA
A princesa Ruruna e o Cain aprenderam sobre normalização, o processo de tabular dados
do mundo real em um banco de dados relacional. É necessário normalizar dados para
gerenciar apropriadamente um banco de dados relacional. Resumimos normalização aqui
(os campos sombreados são chaves primárias).

FORMA PeSNORMALIZAPA

Código Código de Nome de Código Nome


Preço
do Data destino de destino de do do Quantidade
Unitário
Relatório exportação exportação Produto Produto

PRIMEIRA FORMA NORMAL

Código do Código de destino de Nome de destino de


Data
Relatório exportação exportação

Código do Código do Nome do Preço


Quantidade
Relatório Produto Produto Unitário

SEGUNDA FORMA NORMAL

Código do Código de destino de Nome de destino de


Data
Relatório exportação exportação

Código do Relatório Código do Produto Quantidade

Código do Produto Nome do Produto Preço Unitário

TERCEIRA FORMA NORMAL

Código do Relatório Data Código de destino de exportação

Código de destino de exportação Nome de destino de exportação

Código do Relatório Código do Produto Quantidade

Código do Produto Nome do Produto Preço Unitário

76 CAPÍTULO 3
A forma desnormalizada é urna tabela na qual itens que aparecem mais de uma vez
não foram removidos. Vimos que não 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
divisão da original desnormalizada. Pode ser considerada como uma tabela com um item
em cada célula. A tabela é dividida para que nenhum item apareça 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 primária que determina
valores em outras colunas.
Em um banco de dados relacional, um valor é chamado de funcionalmente dependente
se ele determinar valores em outras colunas. Na segunda forma normal, a tabela é dividida
para que valores em outras colunas sejam funcionalmente dependentes da chave primária.
Na terceira forma normal, uma tabela é dividida para que um valor não seja deter-
minado por nenhuma chave não-primária. 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 operação funcionalmente dependente. Na terceira forma
normal, a tabela é dividida para que valores transitivamente dependentes sejam removidos.

G21.1E5TõE5
É importante ser capaz de criar uma tabela de banco de dados relacional para diversas situ-
ações, então vamos examinar alguns exemplos de tabelas normalizadas. Determine como a
tabela foi normalizada em cada caso abaixo. As respostas estão na página 82.

05
A tabela a seguir gerencia empréstimos de livros como o exemplo em Q2. Para qual
estágio ela foi normalizada?

Código de Código do Nome do Endereço Ano de


Data Curso
Empréstimo Aluno Aluno de Aluno Ingresso

ISBN Nome do Livro Nome do Autor Data de Publicação Número de Páginas

Código de
ISBN Quantidade
Empréstimo

VAMOS PROJETAR UM BANCO PE PAPOS! 7q


06
A tabela a seguir também mostra uma situação de empréstimo de livros. Para qual
estágio ela foi normalizada?

Código de Empréstimo Data Código de Aluno

Código de Nome de Endereço de


Curso Ano de Ingresso
Aluno Aluno Aluno

Nome do Nome do Data de Número de


ISBN
Livro Autor Publicação Páginas

Código de Empréstimo ISBN Quantidade

07
A tabela a seguir mostra as vendas mensais para cada membro da equipe. Cada
departamento contém vários membros. Um membro da equipe pode fazer parte de
apenas um departamento. Normalize essa tabela na terceira forma normal.

Código de Nome de
Vendas do Código de Nome do
Membro da Membro da Mês
Membro Departamento Departamento
Equipe Equipe

DEPTO. DE
MERCADORIAS

08
A tabela a seguir representa um sistema de recebimento de pedidos. Normalize-a na
terceira forma normal. No entanto, processe um cliente por código de pedido. Você
pode processar diversos produtos baseado em um código de pedido. Além disso, um
código de pedido deve corresponder a apenas um representante.

Código Código Nome Código Nome


Preço Código do Nome do
de Data de do do do Quantidade
Unitário Representante Representante
Pedido Cliente Cliente Produto Produto

80 CAPÍTULO 3
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 código.

Código Código Nome Código Nome Código de Nome de


Preço
de Data do do do do Classificação Classificação Quantidade
Unitário
Pedido Cliente Cliente Produto Produto do produto do Produto

PA5505 PARA PROJETAR UM BANCO DE DA1705


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 métodos para importar e exportar dados. De forma geral, pode-se dividir
todo o projeto do banco de dados em três partes: esquemas conceitual, interno e externo.
O esquema conceituai refere-se a um método que retrata o mundo real. Em outras
palavras, é uma forma de determinar a estrutura lógica de um banco de dados. O esquema
conceitual é realizado levando-se em consideração um entendimento do mundo real base-
ado no modelo E-R e normalização 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 física de um banco de dados. O
esquema interno é projetado após a criação de um método para fazer pesquisas no banco
de dados rapidamente.
O esquema externo refere-se a um banco de dados como ele é visto pelos usuários
ou aplicativos. O esquema externo é projetado após a criação de dados necessários para os
aplicativos.

r
ESQUEMA INTERNO ESQUEMA CONCEITUA, ESQUEMA EXTERNO

A Princesa Ruruna e o Cain criaram um banco de dados com foco no esquema concei-
tual neste capítulo. Eles estão no processo de melhoria do banco de dados.
Agora que você completou o projeto básico de um banco de dados, vamos examinar
seu uso no próximo capítulo.

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

• Relacionamentos entre entidades podem ser um-para-um, um-para-muitos e mui-


tos-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 três tipos: esquemas conceituai,
interno e externo.

VAMOS PROJETAR UM BANCO DE PAPOS! 61


Re5P05TA5
al MEMBRO Q2 Q3 Q4
LIVRO ALUNOS
DA EQUIPE

CLIENTES ALUNOS PALESTRAS

PROFESSORES

Q5 Segunda forma normal

Q6 Terceira forma normal

Q7

Código de membro de equipe Mês Vendas do membro

Código de membro de equipe Nome de membro de equipe Código de departamento

Código de departamento Nome de departamento

SZ CAPÍTULO 3
Q8

Código de pedido Data Código do cliente Código do representante

Código do cliente Nome do cliente

Código de pedido Código do produto Quantidade

Código do produto Nome do produto Preço unitário

Código do representante Nome do representante

Q9

Código de pedido Data Código de cliente

Código de cliente Nome de cliente

Código de pedido Código do produto Quantidade

Código do produto Código de classificação do produto Nome do produto Preço unitário

Código de classificação do produto Nome de classificação do produto

VAMOS PROJETAR UM BANCO PE DADOS! 83


PROJETANDO UM BANCO DE PAPOS
Neste capítulo, você aprendeu como criar um banco de dados relacional. No entanto, existem
outros métodos de projeto. Usabilidade e eficiência de um banco de dados dependem de um
método de análise e de projeto. Portanto, é importante criar um banco de dados apropriado no
estágio de projeto.
No estágio de projeto do banco de dados, é preciso executar várias tarefas além do design.
Por exemplo, você precisa considerar os tipos de dados para usar nas tabela. Você também pode
precisar especificar colunas utilizando valores numéricos, moedas e sequências de caracteres.
Além disso, é preciso desenvolver um método de pesquisa para possibilitar pesquisas rápidas.
Às vezes, você deve criar um design enquanto pensa na organização física de arquivos. E você
tem que controlar quais usuários podem acessar o banco de dados para garantir a segurança.
Há muitos fatores que devem ser considerados ao projetar um banco de dados. Vamos examinar
alguns desses fatores nos capítulos seguintes.

84 CAPÍTULO 3
4
VAMOS APIZENPER SOBRE 9Q11
ANDAR PELA
CIDADE me FAZ
LEMBRAR MINHA
INFÂNCIA.

VOCÊ MUITAS VEZES


ESCAPAVA PA AULA e
FUGIA PO CASTELO.

VOCÊ NÃO pope SAIR


A55IM PO CASTELO
QUANDO QUISER!

0:2
VOCÊ ME SEGUE
SABE DE UMA COISA, é FUNÇÃO DO PORQUE é SEU
CAIN? VOCÊ PODE AJUDANTE SEGUIR DEVER?
FICAR NO CASTELO A PRINCESA!
SE 56 VAI GRITAR
COMIGO! ACHEI QUE ME BOM...
SEGUIA PORQUE
ERA MEU AMIGO.
HINF/

5EA1 50 P RE5POWEILIPAPEI

5EU 0E30!
NÃO, EU NÃO
QUIS DIZER
1%0-1

ENCONTREI VOCÊ,
PRINCESA RURUNA!!

, r
P// • • "'

VAMOS APRENDER 50BRe SQL! 87


NÃO, VOCÊ NÃO A CULPA é MINHA...
A SENHORITA EU CONVENCI CAIN...
ENTENDE
FOI LONGE A PRINCESA
DEMAIS. RURUNA A SAIR DO
CASTELO...!!

AAI!

O CAIN TEM
CUIDADO DE MIM...

VAMOS DESDE Que


PARA CASA, EU ERA
PRINCESA. CRIANÇA.

j pi:p•
r
d-ogoi,

88 CAPÍTULO 4
ACONTECEU
ALGUMA COISA?

PR ÍNCIPE
RA MINE55... HA, HA, HA
QUANTA
FORM
OSURA!,
ceceei).
L RAMINE5511
rir

COMO VOCÈS
ESTÃO,
ADORÁVEIS VAMOS ESTUDAR
SENHORITAS? UM POUCO DE
BANCOS DE
DADOS.
OH, UM NOVO
LUGAR PARA
ESTUDAR!
Aí ESTÃO
VOCÊSil

em

ESTÁ FRESQUINHO
AQUI FORA.
q" Nwq,
loa
kiwo

FLAP

ENTÃO, CHEGAMOS A PRÓXIMA COISA A


em UM PONTO ONDE FAZER é ESTUDAR
poremos PROJETAR COMO UTILIZAR O
UM BANCO DE DADOS. BANCO De DADOS
Que CRIAMOS.

CONCORDO
COM VOCÊ.

QUANDO USAR
O BANCO ve
DADOS, VOCÊS TÊM PARA FAZER ISSO,
QUE INSERIR OU VAMOS USAR SQL.
RECUPERAR DADOS,
COMO JÁ SABEM.
PARECE
1715CIL...

q0 CAPÍTULO 4
PA MESMA FORMA,
POR EXEMPLO, UTILIZA-se UMA
QUANDO VOCÊ. LINGUAGEM CHAMADA
CONVERSA COM LINGUAGEM ESTRUTURADA
ALeUéM NA REGIÃO OH, VOCE DE CONSULTA (SQL,
FALA O :- 5TRUCTUREP QUERY
QUEDAPÉ NO ALÉM- IDIOMA
MAR, QUEDAPE.
LANUA6E."

VOCÊ PRECISA
PARA CONVERSAR
FALAR A LÍNGUA COM UM BANCO
auevAPé. DE DADOS

ISSO é ÓTIMO!!

O BANCO DE
ESPERE, PAPOS NÃO FALA
O QUÊ? DE VERDADE, VOCÊ
ENTENDE Né?

CLARO, eu SEI
DISSO! N5
Á JÁ
• •
TABELA DE DESTINOS
TABELA DE VENDAS DE EXPORTAÇÃO

CÓDIGO DO I PATA 1 CÓDIGO PEST. CÓDIGO DEST. Nome ves-r. DE EXP.


RELATÓRIO PE exp. DE EXP.

1101 5/3 1Z 12 REINO DE MINAR

1102 7/3 23 23 IMPÉRIO ALFA

1103 8/3 25 Z5 REINO DE RITOL

1104 10/3 12
TABELA DE
1105 12/3 25 PRODUTOS

• CÓDIGO PO NOME DO PREÇO


TABELA 17E DETALHES PRODUTO PRODUTO UNITÁRIO
DE VENDAS MELÃO
101 8000
CÓDIGO DO C612100 PO 102 MORANGO 150G
RELATÓRIO PRODUTO1:5;;TIPAPE
103 MAÇA 120&
1101 101 1100
104 LIMÃO 200G
1101 102 300

1102 103 1700


1103 104 500
(-----
V0CÊS PROJETARAM
1104 101 2500 ESSAS TABELAS NO
1105 103 2000 OUTRO DIA, LEMBRAM?
1105 104 700

VAMOS APRENDER 505R5 SQL! q1


MAS AGORA, VOCÊS
PRECISAM USAR SQL PARA FUNÇÕES DA SQL
INSERIR ESSAS TABELAS e
05 DADOS NO BANCO DE • CRIAÇÃO DE TABELAS
DADOS.
• ENTRADA e EXTRAÇÃO DE vA205
• eageNciAmertro DE USUÁRIOS

USANDO SQL, VOCÊ pope MAS... PARECE QUE


CONVERSAR COM O VAI DAR MUITO
BANCO DE DADOS PARA TRABALHO.
QUE ELE FAÇA TAREFAS
COMO ESSAS...

ll

PARECE QUE
PODEMOS FAZER
TODO O TIPO DE
COISAS!!

SEM PROBLEMAS.

BOM... ISSO é
VERDADE... E EU EU INSERI AS TABELAS E OS
QUERO USAR UM DADOS QUE PROJETAMOS
BANCO DE DADOS ANTES.
O MAIS RÁPIDO
POSSÍVEL.

qZ CAPÍTULO 4
PE5QUI5A DE PA205 USANDO UM COMANDO 5ELECT
BASTA PEDIR AO POR FAVOR,
PREC15AMO5 EXTRAIR BANCO DE DADOS
APENAS 05 NOMES 205 PARA EXTRAIR A
PRODUTOS PARA CRIAR COLUNA DE NOME DO
UMA LISTA DELES USANDO PRODUTO...
SQL.

DA TABELA DE
PRODUTO.

COMO 5E FAZ BANCO PB DADOS..:


1550?

POR FAVOR EXTRAIA


A COLUNA "NOME DO
PRODUTO"...

VOCÊS NÃO PRECISAM


REZAR! é 5c5 USAR O 5QL...

VOCÊ
ESCREVERIA SELECT nome_produto
1550:
FROM produtos;

E55E COMANDO 5G2l.


CON515TE em 2015 GRUPOS
DE PALAVRAS: ~GT
EM 5G1L, UMA CONVERSA é NOMF_FROPIJTO e FROM
CHAMADA DE COMANDO. PIZ0121/7-05,

VAMOS APRENDER SOBRE Sai q3


TABELA PE
ESSES GRUPOS DE PALAVRAS 5,ÃO PRODUTOS
CHAMADOS DE Ca1l5U4A5.
cóvieo DO NOME DO PREÇO
PRODUTO PRODUTO UNITÁRIO
FROM 101 Mel-A0 800

NA SQL, VOCÊ ESPECIFICA 05 NOMES 10Z MORANGO 150&


DAS COLUNAS Guie QUER EXTRAIR 103 MAÇA 120G
COM A CLÁUSULA seLecr e o NOME
104 LIMÃO 200G
DA TABELA DA QUAL VOCÊ QUER
EXTRAI-LA COM A CLÁUSULA FROM.
LECT

AQUI ESTÃO OS DADOS NOME PO


eXTRA005. :•: PRODUTO

Isso PERMITE Que ML-0


VOCÊS EXTRAIAM TODOS
OS NOMES DO PRODUTO
MORANGO
DA TABELA RESPECTIVA.
MAÇA'

LIMÃO

VÁRIOS
ESTAMOS
CONVERSANDO COM
TIPOS... Que TAL PEDIR UMA
HUMM. LISTA DE PRODUTOS
UM BANCO PS DADOS
CUJO PREÇO UNITÁRIO
USANDO 5G21...
é MAIOR OU IGUAL A
ZOOG?

1550 mesmo. TUDO Bem


VOCÊ PODE eNTAO, POR MAIOR
EXTRAIR 05 DADOS eXeMPLO, OU IGUAL
NECESSÁRIOS A 2003
USANDO VÁRIOS
TIPOS DE
CLÁUSULAS.

ci4 CAPÍTULO 4
Nese CASO, VOCÊ NESSES CASOS, VOCÊ
NÃO VAI QUERER SIM, CLARO. ESPECIFICA CONDIÇÕES
TODOS 05 DADOS DE COM UMA CLÁUSULA
PRODUTO. WHERE. POR EXEMPLO,

VOCÊ PRECISA
APENAS RECUPERAR
PRODUTOS COM
PREÇO UNITÁRIO
MAIOR OU IGUAL A
ZOOG.

\-0
WHERE preco_unitario >= 200 Ê INCONVENIENTE
ESPECIFICAR O NOME
DAS COLUNAS TODAS SEM PROBLEMAS!
A5 VEZES, NÃO? PARA ESPECIFICAR
ENTENDO... TODAS AS COLUNAS,
VOCÊ ESCREVE MAS...
ASSIM.

//7
( ESSE COMANDO
RECUPERA TODOS OS Aí E5TÁI
VOCÊ PODE USAR * DADOS DA TABELA DE
(ASTERISCO)! PODEMOS PRODUTOS...
RESUMIR TUDO ASSIM:

PRODUTOS QUE CUSTAM 2006


OU MAIS

SELECT * CÓDIGO 20 Nome DO PREÇO


PRODUTO PRODUTO UNITÁRIO
FROM produtos
WHERE preco_unitario >= 200; 101 MELÃO 8000

104 LIMÃO ZOOG

Guie TENHAM
PREÇO UNITÁRIO
ENTÃO, MAIOR OU IGUAL A
Z006.
AGORA PRECISAMOS
ENTÃO, SE VOCÊ MUDA APRENDER COMO
05 CRTC-RIOS, pove CRIAR ESSES
RECUPERAR PRODUTOS CRITéR105.
COM PREÇO UNITÁRIO
MENOR DO QUE ZOO.

1"
WHERE preco_unitario < 200
111 '

Isso mesmo -
ASSIM!

ESCREVA DESSA FORMA.


QUANDO SE UTILIZAM
ENTÃO COMO EU FAÇO SEQUÊNCIAS DE CARACTERES
PARA LOCALIZAR MA0-5, COMO CONDIÇÃO, l-A9
POR EXEMPLO? PRECISAM ESTAR ENTRE
APÓSTROFES C).
•••::::..:.:•:-:-:

SELECT * C6PISO DO NOME DO PREÇO


PRODUTO PRODUTO UNITÁRIO
FROM produtos
WHERE nome_produto ='maçã';
103 MAÇA izoe

SE VOCÊ
FIZER ISSO,
pope EXTRAIR
EXATAMENTE DADOS
COM A PALAVRA
"41,40-; CRTO?

c -----A-
EXATAMENTE.

q6 CAPÍTULO 4
E SE VOCÊ NÃO TIVER O QUE FAZER
CERTEZA SOBRE NESSE CA5O?
O NOME DE UM
PRODUTO?

VOCÊ COMBINA A
PALAVRA GIKE COM UM
TERMO DE BUSCA.

E ESCREVE A PARTE ISSO VAI RECUPERAR


DESCONHECIDA USANDO %, NOMES DE PRODUTOS
ASSIM... QUE TERMINAM COM
5i0".

GóDIGO DO NOME DO PREÇO


SELECT PRODUTO PRODUTO UNITÁRIO

FROM produtos 101 MELÃO 800&

WHERE nome_produto LIKE '%ão'; 104 LIMÃO 2000

E ASSIM EXTRAÍMOS
MELÃO E LIMÃO!

ç'
R
VAMOS APRENDER SOBRE SQL! A7
1150 DE FUNÇÕES DE TOTALIZAÇÃO

VOCÊS TAMBÉM PARA ORDENAR PRODUTOS


PODEM ORDENAR 05 EM ORDEM ASCENDENTE ASSIM VOCÊ Pope
ResuLTA205 EXTRAÍDOS DEDUZIR INFORMAÇÕES
DE PREÇO, ADICIONE UM
UTILIZANDO UMA COMANDO COMO ORP5 SOBRE 05 PRODUTOS.
CLÁUSULA ORPER 13y. 5Y PIZ5COJNITARIO.

1550 é
ÓTIMO!!
SELECT *
C.C517100 I70 NOME I20 PREÇO
FROM produtos PRODUTO PRODUTO UNITÁRIO
WHERE nome_produto LIKE '%ão' 104 LIMÃO ZOOc
ORDER BY preco_unitario;
101 MELÃO soo e

QUERO
APRENDER MAIS
SOBRE SQL,
TILA!

NA CLÁUSULA DE SELEÇÃO,
É INCRÍVEL.
use Aw(Nome DA COLUNA)
PARA OBTER A MÉDIA DE ZUP
VALORES DE CADA LINHA.

AVGCPRECO UNITARIO)

317,5
SELECT AVC(preco_uni tari o)

FROM produtos;

AGORA SABEMOS O
PREÇO UNITÁRIO MÉDIO
DO5 PRODUTOS.

cle CAPÍTULO 4
A SQL TAMBÉM
NÃO SABIA QUE
N HÁ MUITAS COISAS TEM UMA FUNÇÃO
SOBRE MEU PRÓPRIO QUE TOTALIZA 05
PREÇO MÉDIO ERA PAÍS QUE EU NÃO sel.
ASSIM TÃO ALTO... VALORES DOS DADOS
RecuPeRA1705..

NÃO é ÓTIMO?

ENTÃO PODEMOS CLARO. POR EXEMPLO...


OBTER OUTROS DADOS
ALÉM DA MÉDIA?
A QUANTIDADE DE ITENS,
SUA SOMA, MÉDIA,
VALORES MÁXIMOS
MÍNIMOS, TOPOS
PODEM SER OBTIDOS
ESPECIFICANDO UMA
FUNÇÃO DE TOTALIZAÇÃO.

FUNÇÕES DE TOTALIZAÇÃO em

Função Descrição
COUNT(*) Resulta na quantidade de linhas
COUNT(nome_col una) Resulta na quantidade de itens que não forem nulos na coluna
COUNT(DISTINCT nome_col una) Resulta na quantidade de "itens distintos na coluna
SUM(nome_col una) Resulta na soma dos valores da coluna em todas as linhas
AVC(nome_col una) Resulta na média dos valores da coluna por todas as linhas
MAX(nome_col una) Resulta no valor máximo na coluna
MIN (nome_col una) Resulta no valor mínimo na coluna

ASSIM... UAU!

VAMOS APRENDER SOBRE SQL! Ag


coNsieo O QUE FAZER
DESCOBRIR PARA ENCONTRAR
QUANTOS TIPOS USE COUNT! O PRODUTO COM USE MAX!
DE FRUTAS NÓS PREÇO MAIS ALTO?
VENDEMOS?
'EMPURRA, x/ EMPURRA,
\\ EMPURRA_ X EMPURRA_

COuNT PAPO<

PODE-SE TAMBéM eu PeRcesi QUE


COMO A SQL. PERMITE AGRUPAR 05 DADOS
TOTALIZAR OS DADOS, As FUNÇÕES DE
PARA MANIPULAÇÃO e TOTALIZAÇÃO SÃO
PODEMOS DESCOBRIIZ ANÁLISE POSTERIORES.
MUITAS INFORMAÇÕES. ÓTIMAS.

,----
MAS...

COMO CRIAR
NOSSOS VAMOS CRIAR UM RELATÓRIO
RELATÓRIOS DE DE VENDAS USANDO SQL..
VENDAS?

* TCHARAM
100 CAPÍTULO 4
JUNÇÃO DE TABELAS

PARA CRIAR UM RELATÓRIO


DE VENDAS, É PRECISO CERTO. ERA UMA
RECUPERAR DADOS JUNTANDO TABELA ÚNICA ANTES
A TABELA DE PRODUTOS e AS DA NORMALIZAÇÃO.
DE DESTINO DE EXPORTAÇÃO,
VENDAS e DETALHES DE VENDA.

PARA JUNTAR TABELAS, UMA CHAVE PRIMÁRIA SEJA


A SQL PRECISA DE UMA !SUAI. À ESTRANGEIRA A COMO SE INDICA
CONDIÇÃO EM QUE... QUE ELA SE REFERE. ISSO?

PRODUTOS evngo?e
eY•FoguAÇP'°

se O mesmo NOME
( JUNTAMOS TABELAS DE COLUNA EXISTIR EM
SEPARANDO O VÁRIAS TABELAS, BASTA
,,,.,.........._
NOME DELAS COM ESPECIFICAR COMO
VíROULAS. NOME TA131-A.NO/VW
COLUNA.

\iX/
SELECT vendas.codigo_relatorio, data, vendas.cod_destino_exportacao, nome_
destino_exportacao, detalhes_vendas.codigo_produto, nome_produto,
preco_unitario,destino_exportacao

FROM vendas, detalhes_vendas, produtos, destino_exportacao

WHERE vendas.codigo_relatorio = detalhes_vendas.codigo_relatorio


AND DEPOIS DE JUNTAR AS
detalhes_vendas.codigo_produto = produtos.codigo_produto TABELAS, FILTRAMOS
AND OS RESULTADOS
USANDO MERC._....
destinos_exportacao.cod_destino_exportacao =
vendas.cod_destino_exportacao

VAMOS APRENDER SOBRE SQL! 101


ASSIM, VOCÊ PODE RECUPERAR
DADOS DE RELATÓRIO DE
VENDAS DAS TABELAS, MESMO
QUE et-As ESTEJAM DIVIDIDAS.

CÓDIGO DO CÓDIGO DE5T. NOME DEST. DE CÓDIGO DO NOME DO PREÇO QUANTIDADE


RELATÓRIO DATA PE EXP. EXP. PRODUTO PRODUTO UNITÁRIO
REINO DE MELÃO
1101 5/3 1Z MINAMI 101 800 e 1100

REINO DE MORANGO
1101 5/3 12 MINAMI 102 150 6 300

1102 7/3 23 IMPÉRIO ALFA 103 MAÇÃ izoe 1700

REINO DE LIMÃO 500


1103 8/3 25 RrroL, 104 ZOOe
REINO DE MELÃO
1104 10/3 12 MINAMI 101 800 O Z500
REINO DE MAÇÃ
1105 12/3 25 RITO!. 103 120 e 2000

REINO DE LIMÃO
1105 12/3 25 RITOL 104 ZOO O 700

PODE-SE RECUPERAR DADOS


RELATIVOS A RELATÓRIOS DE
ESSA é A MESMA VENDAS MESMO QUE SE OERENCIE
TABELA ORIGINAL. NÓS A OS PRODUTOS, DESTINOS
RECRIAMOS! DE eXPORTACÃO E VENDAS
INDEPENDENTEMENTE.

VAU!
CRIAÇÃO ve UMA TABELA
GOMO VOCÊ Fez
LEMBREI PE UMA ENTÃO VOCÊ JÁ 1550?
COISA. VOCÊ CRIOU CRIOU A TABELA
E55A5 TABELAS E INSERIU 05
DADOS, CERTO?
USANDO 5a, CERTO
TI CA?

USEI UM COMANDO CREATE


7A13GE PARA CRIAR CADA
TABELA.

CÓDIGO DO 1 Nome 20 I PREÇO


CREATE TABLE produtos PRODUTO I UNITÁRIO
PRODUTO I
(
codigo_produto int NOT NULL, 1-

nome_produto varchar(255), 4- -1

preco_unitario int,
r
PRIMARY KEY(codigo_produto)
);

vocâ DEVE ESPECIFICAR TAMBÉM


UMA CHAVE PRIMÁRIA. eu usei O
CÓDIGO DO PRODUTO PARA 1550.*
A55IM...

TAMBÉM DETERMINAMOS O
TIPO De DADOS DE CADA
COLUNA. VOCE-5 papem VER
QUE O CÓDIGO E O PREÇO 1550 IMPEDE
UNITÁRIO 5"ÃO INTEIROS (INT/ QUE VOCÊ
VAIZCHAg QUER DIZER QUE O INCLUA VALORES
BANCO DE DADOS VAI ESPERAR
TEXTO, E (255) LIMITA Nome
INCORRETOS.
PRODUTO A 255 CARACTERES.

* VEJA A PÁGINA 115 PARA UMA EXPLICAÇÃO COMPLETA SOBRE COMANDOS GREAT& TABLE
VAMOS APRENDER SOBRE SQL! 103
AGORA PODEMOS UTILIZA-5E O COMANDO
INSERIR 05 DADOS NA INSERI PARA INSERIR
TABELA (Rue CRIAMOS, DADOS.
CERTO?

C612100 DO Nome DO PREÇO


PRODUTO PRODUTO UNITÁRIO

I---------r—-r 1

I
e e

CERTO.

PODE-SE TAMBÉM
APAGAR (COMANDO
INSERT INTO produtos (codigo_produto, nome_produto, PE1E7E) E ATUALIZAR
preco_unitario)
(COMANDO 1/PPA7) 05
VALUES (101, 'melão', 800); DADOS.

Có2100 DO NOME DO PREÇO


PRODUTO PRODUTO UNITÁRIO

101 MELÃO 8008

e O PREÇO
UNITÁRIO DE UM
PRODUTO PODE
SER CORRIGIDO
ASSIM, MEU.° FOI USANDO SQL.
INSERIDO FACILMENTE
NA TABELA DE
PRODUTOS.

104 C.AKTULO 4
ASSIM VOCÊS MAS O COMANDO
PODEM eeReNCIAR 55G-7- é A PARTE
EXPORTAÇÃO DE MAIS IMPORTANTE DA
FRUTAS USANDO UM SQL. ENTÃO ESTUDEM
BANCO DE DADOS. BASTANTE.

AINDA HÁ
MUITO PARAll
\APReNIPERJ

EU VOU.

SE SOUBERMOS OH, CéUS, VEJA


USAR SQL A HORA!
PODEREMOS
GERENCIAR BANCOS
DE DADOS...

VAMOS VOLTAR SENÃO O CAPITÃO


PARA O CASTELO DA GUARDA IGOR VAI é, JÁ LEVAMOS
ANTES Guie GRITAR COMIGO DE MUITA BRONCA
ESCUREÇA. NOVO. DELE QUANDO
CRIANÇAS...

é, ACHO
QUE SIM...

CORRE
CORRE
VISÃO GERAI. 5013Re SQL,
Neste capítulo, a princesa Ruruna e o Cain aprenderam a respeito de SQL, ou Linguagem
Estruturada de Consulta, uma linguagem utilizada para operar bancos de dados relacionais.
Os comandos SQL podem ser divididos em três tipos distintos:
Linguagem de Definição de Dados (DDL, Data Definition Language) Para criar
tabelas.

Linguagem de Manipulação de Dados (DML, Data Manipulation


Language) Entrada e recuperação de dados.

Linguagem de Controle de Dados (DCL, Data Control Language) Gerencia


acesso de usuários.
A SQL tem comandos que criam a estrutura geral do banco de dados, e comandos que
criam tabelas dentro do banco de dados. Pode-se usar essa linguagem para modificar e
apagar tabelas da mesma forma. A parte da linguagem que tem essa função é chamada de
Linguagem de Definição de Dados (DDL).
A SQL também tem comandos que manipulam os dados no banco de dados, seja para
inserção, exclusão ou modificação. Há também comandos que permitem a pesquisa de
dados. A parte da linguagem com essa função é chamada de Linguagem de Manipulação de
Dados (DML).
Além disso, a SQL oferece a capacidade de controlar o banco de dados, de forma que
conflitos de dados não ocorrerão mesmo que várias pessoas o utilizem ao mesmo tempo. A
parte da linguagem com essa função é chamada de Linguagem de Controle de Dados (DCL).

PE5G2U15A N05 2A705 USANDO UM COMANDO SEI.CCT


A princesa Ruruna e o Cain começaram a aprender SQL pela sua função de pesquisa básica.
A SQL busca dados quando um comando (uma combinação de cláusulas) é apresentado.
Para pesquisar se certo produto com preço unitário de 200 G existe, por exemplo,
utilizaria-se o seguinte comando SQL.

SELECT *
Cria-se um comando SQL
FROM produtos
combinando-se cláusulas.
WHERE preco_unitario=200

O comando SELECT é o mais básico deles. Ele retorna determinadas colunas de deter-
minadas tabelas (FROM), atendendo certas condições (WHERE). Pode-se combinar essas
cláusulas para criar comandos de consulta intuitivos em SQL - mesmo um usuário que não
esteja familiarizado com bancos de dados pode fazer pesquisas.

106 CAPÍTULO 4
CRIAÇÃO ve CRITéR105
Cain disse anteriormente "Agora precisamos aprender como criar critérios". Vamos examinar
algumas formas de criá-los utilizando SQL.

OPERADORES DE COMPARAÇÃO
Uma forma de criar critérios é utilizando operadores de comparação como >= e =. Por
exemplo, a condição "A é maior ou igual a B" é expressa utilizando >=, e o critério "A é igual
a B" é escrito utilizando =. Mais exemplos de operadores de comparação são mostrados na
tabela abaixo.

OPERADORES DE COMPARAÇÃO

Operador de
Descrição Exemplo Descrição do Exemplo
Comparação

A=B A é igual a B. preco_uni tad o=200 O preço unitário é 200G.

A> B A é maior que B. preco_uni tad o>200 O preço unitário é maior que 200 G.

A>= B A é maior ou igual a B. preco_uni tari o>=200 O preço unitário é maior ou igual a 200 G.

A<B A é menor do que B. preco_uni tad o<200 O preço unitário é menor que 200 G.

A <= B A é menor ou igual a B. preco_uni tari o<=200 O preço unitário é menor ou igual a 200G.

AoB A é diferente de B. preco_uni tari o<>200 O preço unitário não pode ser 200G.

OPeRADOR55 1.601C05
Em alguns casos, é preciso expressar condições que são mais complexas do que uma
simples comparação. Pode-se utilizar os operadores lógicos (AND, "e", OR, "ou" e NOT,
"não") para combinar condições baseadas em operadores de comparação e criar critérios
mais complexos, como mostra a tabela abaixo.

OPERADORES LÓGICOS

Operador
Descrição Exemplo Descrição do Exemplo
Lógico

AND AeB codigo_produto >= 200 O código do produto é maior ou igual a 200 e o
AND preco_unitario = 100 preço unitário é 100G.

OR A ou B codigo_produto >= 200 O código do produto é maior ou igual a 200 ou


OR preco_unitario = 100 o preço unitário é 100G.

NOT Não A NOT preco_unitario = 100 O preço unitário não pode ser 100 G.

VAMOS APRENDER SOBRE SQL! 107


PADRÕES
Quando não se sabe exatamente o que se está procurando, pode-se usar pesquisa de padrões
(pattem matching) em condições utilizando caracteres curinga. Quando se faz isso, utilizam-se
caracteres como % ou _ em um comando LIKE (semelhante a), e isso vai pesquisar por sequên-
cias de caracteres que correspondem aos padrões especificados. Pode-se pesquisar valores que
correspondam parcialmente a uma sequência informada usando %, que indica uma sequência
de caracteres de qualquer tamanho, e _, que indica apenas um único caractere. Um exemplo de
consulta utilizando caracteres curinga é apresentado a seguir. O comando no exemplo procura
por uma sequência de caracteres com "ão" no final, no nome do produto.

Código do Nome do Preço


SELECT * produto produto unitário
FROM produtos Este comando procura padrões 101 Melão 800 G
WHERE nome_produto LIKE '%ão'; utilizando um caractere curinga. Limão
104 200 G

Os caracteres curinga que podem ser usados em SQL são mostrados abaixo.

CARACTERES CURINGA

Sequência
Caractere Exemplo de
Descrição correspondente de
curinga padrão
exemplo

Corresponde a qualquer %ão Limão Melão


quantidade de caracteres m96 Maçã Morango

Corresponde a um único _o aquilo


caractere o_ outra

PESQUISAS
Existe ainda muitos outros métodos de busca. Por exemplo, pode-se especificar BETWEEN
(entre) X e Y para obter um intervalo de valores. Se um intervalo for indicado como
mostrado abaixo, pode-se extrair produtos com preços unitários maiores ou iguais a 150G
e menores que 200 G.

SELECT *
FROM produtos
WHERE preco_unitario
BETWEEN 150 AND 200; Especifica um intervalo de busca

Adicionalmente, pode-se especificar IS NULL (é nulo) quando se efetuam pesquisas em


linhas. Se o comando mostrado abaixo for usado, pode-se recuperar produtos com preço
unitário nulo.

SELECT *
FROM produtos
WHERE preco_unitario is NULL; Procura por nulos

108 CAPÍTULO 4
QUE5TõeS
Agora vamos criar comandos SQL utilizando diversos tipos de condições. Usaremos a
Tabela de Destinos de Exportação a seguir (que utiliza 10.000 como unidade de população).
Responda as perguntas abaixo utilizando comandos SQL. As respostas estão na página 119.

TABELA DE DESTINOS DE EXPORTAÇÃO

Cód. de destino de exportação Nome de destino de exportação População

12 Reino de Minami 100

23 Império Alfa 120

25 Reino de Ritol 150

30 Reino de Sazanna 80

41
Para encontrar países em que a população seja maior ou igual a 1 milhão, extraia a
tabela abaixo.

Cód. de destino de exportação Nome de destino de exportação População

12 Reino de Minami 100

23 Império Alfa 120

25 Reino de Ritol 150

Q2
Para encontrar países em que a população seja menor que 1 milhão, extraia a tabela
abaixo.

Cód. de destino de exportação Nome de destino de exportação População

30 Reino de Sazanna 80

Q3
Determine os países em que o código de destino de exportação seja menor que 20 e a
população maior ou igual a 1 milhão.

Q4
Encontre os países em que o código de destino de exportação seja maior ou igual a 30
e a população maior que 1 milhão.

Q5
Qual a população do Reino de Ritol?

Q6
Encontre países com nomes contendo a letra n.

VAMOS APRENDER SOBRE 5G21,1 10A


FUNçÕES ve AegeeAçÃo NumégicAs
A princesa Ruruna e o Cain aprenderam sobre várias funções de agregação. Elas
são também conhecidas como funções de conjunto. Pode-se utilizá-las para totalizar
informações, para obter, por exemplo, valores máximos e mínimos, quantidade de itens, e
somas.
Se uma cláusula WHERE for especificada juntamente com uma função de conjunto,
pode-se obter a totalização apenas das linhas especificadas. Se uma cláusula como a
mostrada abaixo for usada, pode-se determinar a quantidade de produtos com preços
unitários maiores ou iguais a 200 G.

SELECT COUNT(*)
COUNT(*)
FROM produtos
WHERE preco_unitario>=200; 2

TOTALIZAÇÃO DE DAI705 COM AGRUPAMENTO


Se os dados forem agrupados, pode-se obter valores totalizados facilmente. Por exemplo, se
deseja-se obter a quantidade de produtos e preços unitários médios baseando-se em dis-
tritos, é possível utilizar funções de agrupamento.
Para agrupar dados, combinam-se as funções de agregação com a cláusula GROUP BY
(agrupar por). Vamos utilizar a tabela de produtos mostrada abaixo.

TABELA De PRODUTOS

Código do Nome do
Preço Unitário Distrito
produto produto
101 Melão 800 G Mar do Sul
102 Morango 150G Central
103 Maçã 120G Mar do Norte
104 Limão 200 G Mar do Sul
201 Pinhão 100 G Mar do Norte
202 Caqui 160 G Central
301 Pêssego 130 G Mar do Sul
302 Kiwi 200 G Mar do Sul

Para obter o preço unitário médio por distrito nessa Tabela de Produtos, especifique
a coluna Distrito e a função AVG, bem como a cláusula GROUP BY. Isso agrupará os dados
baseando-se em distritos e informará o valor unitário médio de produtos em cada distrito.

Distrito AVG(preco_unitario)
SELECT distrito,AVG(preco_unitario §~~0.
Mar do Sul 332.5
FROM produtos
GROUP BY distrito; Mar do Norte 110
Ativa o agrupamento
Central 155

110 CAPITULO 4
E se você quiser restringir mais seus resultados, baseando-se em uma propriedade
particular dos dados? Imagine que você queira encontrar médias regionais de preços de
produtos maiores ou iguais a 200G. Nesse caso, não especifique uma condição numa cláu-
sula WHERE, mas sim utilize uma cláusula HAVING. Isso permite que se extraia apenas
distritos em que o preço unitário médio seja maior ou igual a 200G.

SELECT distrito,AVG(preco_unitario) emem11111..


FROM produtos Distrito AVG(preco_unitario)
GROUP BY distrito; Filtra resultados Mar do Sul 332.5
HAVING AVG(preco_unitario)>=200; < após agrupamento

QUE5Te5E5
Responda às questões abaixo utilizando a seguinte Tabela de Destinos de Exportação
(presumindo que a unidade de população seja 10.000). As respostas estão na página 120.

TAI3el-A I7e DESTINOS DE eXPORTAÇÃO

Código de destino de Nome de destino de


População Distrito
exportação exportação
12 Reino de Minami 100 Mar do Sul
15 Reino de Paronu 200 Central
22 Reino de Tokanta 160 Mar do Norte
23 Império Alfa 120 Mar do Norte
25 Reino de Ritol 150 Mar do Sul
30 Reino de Sazanna 80 Mar do Sul
31 Reino de Taharu 240 Mar do Norte
33 Reino de Mariyon 300 Central

07
Qual a menor população?

08
Qual a maior população?

Q9
Qual a população total de todos os países na Tabela de Destinos de Exportação?

010
Qual a população total de todos os países com código de destino de exportação maior
que 20?

011
Quantos países com população maior ou igual a 1 milhão constam na tabela?

012
Quantos países pertencem ao distrito do Mar do Norte?

VAMOS APRENDER SOBRE 5QL.1 111


013
Qual pais do distrito do Mar do Norte tem a maior população?

014
Qual a população total de todos os países exceto o Reino de Ritol?

015
Encontre os distritos com população média maior ou igual a 2 milhões.

016
Encontre os distritos que contenham pelo menos três países.

PE50U15A DE 2A205
Existem métodos mais complexos de consulta disponíveis na SQL, além daqueles que já
discutimos.

USO DE UMA SUESCONSULTA


Por exemplo, pode-se embutir uma consulta dentro de outra. Consultas embutidas são
conhecidas como subconsu !tas. Vamos examinar as tabelas abaixo.

TABELA De PRODUTOS TABELA DE DETALHES 12E VENDAS

Código do Nome do Preço Código do Código do


Quantidade
produto produto Unitário relatório produto
101 Melão 800G 1101 101 1100
102 Morango 150G 1101 102 300
103 Maçã 120 G 1102 103 1700
104 Limão 200 G 1103 104 500

1104 101 2500

1105 103 2000

1105 104 700

Pode-se utilizar essas duas tabelas para pesquisar por nomes de produtos cujo volume
de vendas seja maior ou igual a 1000. O seguinte comando SQL vai efetuar essa pesquisa.

SELECT * FROM produtos


WHERE codigo_produto IN
(SELECT codigo_produto
FROM detalhes_vendas <) Este comando contém uma subconsulta.
WHERE quantidade>=1000);

112 CAPÍTULO 4
Em um comando SQL, o comando SELECT entre parênteses é efetuado primeiro: o
código do produto na Tabela de Detalhes de Vendas é pesquisado em primeiro lugar, e os
códigos 101 e 103 são encontrados (já que são esses os relatórios com volumes de venda
maior do que 1000). Esses códigos são então usados como parte da condição do comando
SELECT fora dos parênteses. Para o termo IN, a condição é satisfeita quando uma linha
corresponde a qualquer valor constante dentro dos parênteses. Dessa forma, produtos que
correspondam aos códigos 101 e 103 serão retornados.
Em outras palavras, no caso de uma subconsulta, o resultado do comando SELECT
dentro dos parênteses será enviado para o outro comando SELECT para pesquisa. As
seguintes informações serão o resultado da consulta completa.

Código do produto Nome do produto Preço Unitário

101 Melão 800 G

103 Maçã 120 G

U50 P UMA 5UE3CONSULTA CORRELATA


Vamos considerar uma subconsulta que esteja contida dentro de outra consulta. Estas são
conhecidas como subconsultas correlatas. No comando abaixo, a tabela detalhes_vendas na
consulta externa recebe temporariamente o nome U para que a subconsulta possa se referir
a ela sem ambiguidade. A sintaxe U.codigo_produto indica com qual coluna codigo_produto
estamos trabalhando, uma vez que existem duas fontes para essa coluna dentro da consulta.
Já que a subconsulta se refere a dados da consulta externa, elas não são independen-
tes, como no exemplo anterior. Essa dependência é chamada de correlação.

SELECT *
FROM detalhes_vendas U Código do Código do Esta consulta extrai
Quantidadej comandos com volume
relatório produto
de vendas maior do
WHERE quantidade> 1104 101 2500
que a média para
1105 103 2000 o produto.
(SELECT AVG(quantidade) 1105 104 700
FROM detalhes_vendas
WHERE codigo_produto=U.codigo_produto);

Vamos examinar o processamento da subconsulta correlata. Numa delas, a consulta


externa é efetuada primeiro.

O SELECT *
FROM detalhes_venda U

Esses resultados são enviados para a consulta interna para serem avaliados linha por
linha. Vamos analisar a avaliação da primeira linha, com código do produto 101.

VAMOS APRENDER SOBRE SQL! 113


o (SELECT AVG(quantidade)
FROM detalhes_vendas
WHERE codigo_produto=101)

O código do produto da primeira linha é 101, ou seja, melões - a quantidade média


de vendas para eles é 1800. Esse resultado é enviado então para a condição da consulta
externa.

O WHERE quantidade>(1800)

Esse processo continua para todas as linhas de detalhes de vendas - os passos O e


C são executados para todos os códigos de produtos possíveis. Em outras palavras, esta
consulta extrai relatórios onde o volume de vendas da fruta seja maior do que a média de
vendas daquela fruta em particular. Consequentemente, apenas a 5a, 6a e 7a linhas de O
são extraídas.

QUESTÕES
Agora, responda às seguintes questões com base na Tabela de Produtos e na de Detalhes
de Vendas. As respostas estão na página 122.

Q17
Encontre o detalhe de venda para frutas com preços unitários maiores ou iguais a
300G, e extraia a tabela abaixo.

Código do relatório Código do produto Quantidade

1101 101 1100

1104 101 2500

018
Obtenha o volume médio de vendas por produto e encontre itens que tenham vendas
abaixo da média.

JUNTANDO TABEI.A5
Depois efetuar uma pesquisa baseada em SQL, a princesa Ruruna e o Cain criaram um
relatório de vendas combinando tabelas. Juntar tabelas combinando colunas com os
mesmos nomes é chamado de equijunção. Nesse tipo de junção, linhas com os mesmos
valores são utilizadas como condição de junção para fundir as tabelas. Juntar colunas com o
mesmo nome numa única é conhecido como junção natural.

114 CAPÍTULO 4
O método de junção no qual apenas linhas que tenham um valor comum como
equijunção são selecionadas é chamado junção interna (innerjoin).
Em contraste, o método de junção que mantém todas as linhas de uma tabela e
especifica um nulo para linhas não incluídas na outra é chamado de junção externa (outer
join). Se você colocar uma tabela criada de uma junção externa à direita ou à esquerda de
um comando SQL, ela é chamada de junção externa à esquerda ou uma junção externa à
direita, dependendo de quais linhas sejam mantidas.

Tabela esquerda Tabela direita

Junção Junção
externa externa
à esquerda à direita

CRIAÇÃO DE UMA TABELA


Finalmente a Princesa Ruruna e o Cain aprenderam sobre a sintaxe de comando que cria
uma tabela, CREATE TABLE. A sintaxe desse comando frequentemente depende do tipo
específico de banco de dados que você usa. Um exemplo é mostrado abaixo.

CREATE TABLE produtos Esse comando cria uma tabela.

codigo_produto int NOT NULL,


nome_produto varchar(255),
preco_unitario int,
PRIMARY KEY(codigo_produto)
);

Quando você cria uma tabela, deve especificar seus nomes de coluna. Adicionalmente,
pode informar uma chave primária e uma chave estrangeira para cada coluna. Neste
exemplo, o código do produto é especificado como uma PRIMARY KEY (chave primária) e
o código do produto não pode ser nulo. Quando se cria uma tabela, pode ser necessário
incluir as seguintes especificações.

VAMOS APRENDER 505R5 5G21.! 115


RESTRIOE5 EM TABELAS

Restrição Descrição

PRIMARY KEY Cria uma chave primária


UNIQUE Deve ser única
NOT NULL Não aceita um valor NULL
CHECK Confere um intervalo
DEFAULT Cria um valor padrão
FOREIGN KEY / REFERENCES Cria uma chave estrangeira

Essas especificações são chamadas de restrições (constraint). Incluir restrições quando


se cria uma tabela ajuda a evitar conflitos de dados posteriormente e permite que se
gerencie de forma correta o banco de dados.

INSERÇÃO, ATUALIZAÇÃO OU EXCLUSÃO DE LINHAS


Você pode usar os comandos INSERT, UPDATE e DELETE para inserir, atualizar ou excluir
dados de uma tabela criada pelo comando CREATE TABLE. Vamos inserir, atualizar e excluir
alguns dados usando SQL.

INSERT INTO produtos Esse comando acrescenta cereja.


(codigo_produto,nome_produto,preco_unitario)
VALUES (200,'cereja',200);

UPDATE produtos

1
Esse comando atualiza
SET nome_produto='cantalupo' melão para cantalupo.
WHERE nome_produto='melão';

DELETE FROM produtos


Esse comando apaga maçã.
WHERE nome_produto='maçã';

Cód. do produto Nome do produto Preço unitário


101 Cantalupo 800 G Atualizado para cantalupo.
102 Morango 150 G
103 Maçã 120 G Maçã é excluída.
104 Limão 200 G
200 Cereja 200 G Cereja é acrescentada.

Quando inserir, atualizar ou excluir uma linha, você não pode violar as restrições esta-
belecidas pelo comando CREATE TABLE. Se um produto com código 200 já existisse, não se
poderia acrescentar cereja, já que você não pode adicionar dados duplicados numa chave
primária. Ao inserir, atualizar ou excluir dados em um banco de dados, deve-se considerar
as restrições da mesma.

116 CAPÍTULO 4
CRIAÇÃO DE UMA VISUALIZAÇÃO (VIEW)
Com base na tabela que criou com o comando CREATE TABLE, você também pode criar
uma tabela virtual que existe apenas quando é visualizada por um usuário. Elas se chamam
visualizações. A tabela da qual uma visualização é derivada chama-se tabela base.

Visualização Tabela base


1 1

♦—

Utilize o comando SQL mostrado abaixo para criar uma visualização.

CREATE VIEW produto_caro Esse comando cria uma visualização.


(codigo_produto, nome_produto, preço_unitario)
AS SELECT *
FROM produtos
WHERE preco_unitario>=200;

A Tabela de Produto Caro é uma visualização baseada na Tabela de Produtos, que é


uma tabela base. Ela foi criada extraindo os dados com preços unitários maiores ou iguais a
200G da Tabela de Produtos.

TABCL.A DE PRODUTO CARO

Código do produto Nome do produto Preço Unitário

101 Melão 800 G

104 Limão 200 G

202 Caqui 200 G

Depois que você criar a visualização Produto Caro, pode procurar por dados da mesma
forma que faria em uma tabela base.

SELECT * Permite que a visualização


FROM produto_caro seja usada da mesma forma
WHERE preco_unitario>=500; que uma tabela base

É prático criar uma visualização quando se quer manter pública parte dos dados em
uma tabela.

VAMOS APRENDER SOBRE 5QL! 117


Há também os comandos SQL para excluir uma tabela base ou visualização. O
comando usado para excluir uma tabela base ou visualização é mostrado abaixo.

DROP VIEW produto_caro;

DROP TABLE produto;

QuesTbes
Crie comandos SQL para as questões a seguir (supondo que a unidade para população é
10.000). As respostas estão na página 123.

019
A Tabela de Destino de Exportação a seguir foi criada usando o comando CREATE
TABLE. Acrescente os dados abaixo.

TABELA DE DESTINO PE EXPORTAÇÃO

Código de destino Nome de destino


População Distrito
de exportação de exportação

12 Reino de Minami 100 Mar do Sul

1.5 Reino de Paronu 200 Central

22 Reino de Tokanta 160 Mar do Norte

23 Império Alfa 120 Mar do Norte

Q20
Usando a Tabela de Destino de Exportação na Q19, crie uma visualização chamada
Região do Mar do Norte que mostre países pertencentes ao distrito do Mar do Norte.

TABELA DE DESTINO DE EXPORTAÇÃO

Código de destino Nome de destino de


População
de exportação exportação

22 Reino de Tokanta 160

23 Império Alfa 120

021
Altere a população do Reino de Tokanta na Tabela de Destino de Exportação para 1,5
milhão.

Q22
Na Tabela de Destino de Exportação, apague todos os dados do Reino de Paronu.

118 CAPÍTULO 4
RESUMO
• Você pode usar funções SQL para definir, operar e controlar dados.
• Para procurar por dados, use um comando SELECT.
• Para especificar uma condição, use uma cláusula WHERE.
• Para inserir, atualizar e excluir dados, use os comandos INSERT, UPDATE e DELETE.
• Para criar uma tabela, use um comando CREATE TABLE.

R&5PO5TA5

SELECT *
FROM destinos_exportacao
WHERE populacao>=100;

Q2

SELECT *
FROM destinos_exportacao
WHERE populacao<100;

Q3

SELECT *
FROM destinos_exportacao
WHERE codigo_destino_exportacao<20
AND populacao>=100;

Código de destino de exportação Nome de destino de exportação População

12 Reino de Minami 100

Q4

SELECT *
FROM destinos_exportacao
WHERE codigo_destino_exportacao>=30
AND populacao>100;

Código de destino de exportação Nome de destino de exportação População

23 Império Alfa 120

25 Reino de Ritol 150

30 Reino de Sazanna 80

VAMOS APRENDER SOBRE SQL! 119


Q5

SELECT populacao
FROM destinos_exportacao
WHERE nome_destino_exportacao='Reino de Ritol';

População

150

Q6

SELECT *
FROM destinos_exportacao
WHERE nome_destino_exportacao LIKE '%n%';

Código de destino de exportação Nome de destino de exportação População

12 Reino de Minami 100

30 Reino de Sazanna 80

Q7

SELECT MIN(populacao)
FROM destinos_exportacao;

MIN(populacao)

80

Q8

SELECT MAX(populacao)
FROM destinos_exportacao;

MAX(populacao)

300

Q9

SELECT SUM(populacao)
FROM destinos_exportacao;

SUM(populacao)

1350

120 CAPÍTULO 4
010
SELECT SUM(populacao)
FROM destinos_exportacao
WHERE codigo_destino_exportacao>20;

SUM(populacao)
1050

Q11
SELECT COUNT(*)
FROM destinos_exportacao
WHERE populacao>=100;

COUNT(*)
7

Q12
SELECT COUNT(*)
FROM destinos_exportacao
WHERE distrito='mar do norte';

COUNT(*)
3

Q13

SELECT MAX(populacao)
FROM destinos_exportacao
WHERE distrito='mar do norte';

MAX(populacao)
240

VAMOS APRENDER SOBRE eau


Q14
SELECT SUM(populacao)
FROM destinos_exportacao
WHERE NOT(nome_destino_exportacao = 'Reino de Ritol');

SUM(populacao)

1200

Q15

SELECT distrito, AVG(populacao)


FROM destinos_exportacao
GROUP BY distrito
HAVING AVG(populacao) > 200;

Distrito AVG(populacao)
Central 250

Q16
SELECT distrito, COUNT(*)
FROM destinos_exportacao
GROUP BY distrito
HAVING COUNT(*)>=3;

Distrito COUNT(*)
Mar do Norte 3
Mar do Sul 3

017

SELECT *
FROM detalhes_vendas
WHERE codigo_produto IN
(SELECT codigo_produto
FROM produto
WHERE preco_unitario>=300);

1ZZ CAPITULO 4
Q18

SELECT *
FROM detalhes_vendas U
WHERE quantidade<
(SELECT AVG(quantidade)
FROM detalhes_vendas
WHERE codigo_produto = U.codigo_produto);

Código do relatório Código do produto Quantidade

1101 101 1100


1102 103 1700
1103 104 500

Q19

INSERT INTO destino_exportacao(codigo_destino_exportacao,


nome_destino_exportacao, populacao, distrito)
VALUES(12, 'Reino de Minami', 100, 'mar do sul');
INSERT INTO destino_exportacao(codigo_destino_exportacao,
nome_destino_exportacao, populacao, distrito)
VALUES(15, 'Reino de Paronu', 200, 'central');
INSERT INTO destino_exportacao(codigo_destino_exportacao,
nome_destino_exportacao, populacao, distrito)
VALUES(23, 'Imperio Alfa', 120, 'mar do norte');
INSERT INTO destino_exportacao(codigo_destino_exportacao,
nome_destino_exportacao, populacao, distrito)
VALUES(22, 'Reino de Tokanta', 160, 'mar do norte');

Q20

CREATE VIEW regiao_mar_norte(codigo_destino_exportacao,


nome_destino_exportacao, populacao)
AS SELECT codigo_destino_exportacao, nome_destino_exportacao, popu-
lacao
FROM destinos_exportacao
WHERE distrito = 'mar do norte';

021

UPDATE destinos_exportacao
SET populacao = 150
WHERE nome_destino_exportacao = 'Reino de Tokanta';

022

DELETE FROM destinos_exportacao


WHERE nome_destino_exportacao = 'Reino de Paronu';

VAMOS APRENDER SOBRE 5G2L.! 123


PADRONIZAÇÃO De 5Q1,
SQL é padronizado pela Organização Internacional para Padronização (150, International
Organization for Standardization). No Japão, ela é padronizada pelo JIS (Padrões Indus-
triais Japoneses).
Padrões SQL incluem o SQL91 criado em 1992, e o SQL99, criado em 1999. Pro-
dutos de bancos de dados relacionais são feitos para que consultas possam ser feitas de
acordo com esses padrões.
Alguns produtos de bancos de dados relacionais possuem suas próprias especifi-
cações. Consulte o manual de operação de seu produto de banco de dados para mais
informações.

1Z4 CAPÍTULO 4
O QUE é UMA TRANSAÇÃO?

TEC, TEC,
00
51P

BIP
//////// 1"/"1///17/////

rec,
rec,
TEC...

rec, rec,
rec...

VEJA, ESSE E ESSE


SÃO papiros NOVOS.

ESTÁ BEM, PRINCESA. AI, DÁ PRA


VOU ADICIONÁ-LOS ESTAMOS FINALMENTE APARECER DE
AO BANCO DE DADOS APRENDENDO A USAR FORMA NORMAL?
IMEDIATAMENTE. UM BANCO DE DADOS,
NÃO?

GIM

PLOP!
1Z6 CAPiTULO 5
NA VERDADE, POR EXEMPLO, me PERGUNTO
EU TENHO QUE MAS AINDA
POR QUE UM BANCO DE
AGRADECER... TEMOS
DADOS AINDA PODE OPERAR
MUITO PARA
QUANDO TANTOS USUÁRIOS O
APRENDER.
ACESSAM AO MESMO TEMPO.

E FALANDO NISSO,
A QUESTÃO DE
SEGURANÇA
TAMBÉM ME
PREOCUPA UM
POUCO.

BOM, PARA
APARENTEMENTE, ENTENDER
VOCÊ TEM ALGUMAS MELHOR esAs
QUE5TõEy >_,/
PREOCUPAÇÕES EM
RELAÇÃO A SEU BANCO
DE DADOS.

CU FIZ UMA
PEQUENA
( ACHO QUE PESQUISA. AH é?
5IM.

O TÍTULO DE MINHA
APRESENTAÇÃO É:

COMO UM BANCO DE
DADOS PODE DEIXAR
UM GRANDE NÚMERO DE
USUÁRIOS AcessÁ-Lo EU ATÉ PREPAREI
SIMULTANEAMENTE? UMAS ILUSTRAÇÕES
PARA AJUDAR em
seu ENTENDIMENTO!

ADORO UM BOM
5HOW!
AGORA vencem EU UM DIA, O ANDY
COMEÇAR. E A BECKY
ACESSARAM O
BANCO DE DADOS
AO MESMO
TEMPO.

NO BANCO DE DADOS, O ANDY


LEU A TABELA DE PRODUTO, õóõ
E5PECIFICAMENTE A5 MAÇÃS.
AU vejo
30
AGORA. TÁ.

ELE ENTÃO ACRESCENTOU 10


AO ESTOQUE ESCREVENDO UMA (..V.
OU ADICIONAR 10
OPERAÇÃO DE BANCO DE DADOS.

TEREI 40
ENTÃO.

r /tu wir"..
TEM 30
ENQUANTO ISSO, A BECKY 30 MAÇÃS AGORA!
TAMBÉM LEU O NÚMERO DE CU VEJO
30
MAÇÃS, 30, E ACRESCENTOU 10. Ae0RA. I5S0
C ESTÁ

CERTO?
,Po; •
• •

MAS DEPOIS DESSA e -01.1 ADICIONAR 10)


/.

(15)U ADICIONAR 10")

OPERAÇÃO, O BANCO DE • 10
DADOS MOSTRA O NÚMERO
ATUAL DE MAÇÃS COMO 40. TEREI 40 10
ENTÃO.

Ome, 9
kgm...4m..

126 CAPÍTULO 5
NÃO DEVERIAM ( 1550 ENTÃO ONDE
SER 50 MESMO. FORAM PARAR AS
AGORA? 10 MAÇÃ5?

O ANDY
ADICIONOU 10.
A BECKY
----
""z------ADICIONOU 10.

DE JEITO NENHUM!
O CAIN A5 ELAS JÁ NÃO
COMEU! E5TAVAM LÁ DESDE
O INÍCIO!

eU?!

TAPAM TAPAAAM

ADICIONE
NA VERDADE, NE55A 10.
5EQU1✓NCIA, A BECKY
NÃO DEVERIA EXECUTAR ANCO DE DADO
QUALQUER OPERAÇÃO
ENTÃO 10 MAÇÃS
PE BANCO DE DADOS NUNCA IRIAM
ENQUANTO O ANDY ESTIVER DESAPARECER.
TRABALHANDO.

ENTÃO A QUESTÃO é, COMO


PARA PERMITIR QUE O UM BANCO DE DADOS
ANDY E A BECKY USEM CONTROLA A5 opegAções DE
O BANCO PE DADOS USUÁRIO?
AO MESMO TEMPO,

DEVE HAVER ELE é


VOU EXPLICAR 1550 AGORA!
UM MECANISMO SHOW!
PARA IMPEDIR
INCONSISTÊNCIAS E
DUPLIcivAres como
ESSA. VERDADE.

CAIN E-5TA
ÓTIMO
HOJE.
,
1
EM PRIMEIRO UMA UNIDADE DE OPERAÇÕES ve
LUGAR, UM BANCO DADOS é CHAMADA DE TRAN5A0-0.
DE DADOS é- FEITO
PARA PROCESSAR
OPERAÇÕES DE
DADOS EM GRANDES
BLOCOS.

NESTE EXEMPLO, UMA


OPERAÇÃO DE LEITURA,
UMA DE ADIÇÃO e
UMA DE ESCRITA SÃO LER
PROCESSADAS COMO UMA DADOS.
ÚNICA TRANSAÇÃO.

ADICIONAR

ESCREVER ESCREVER
O O
RESULTADO RESULTADO

1 ~1~11

ENTÃO, AS OPERAÇÕES
E A5 DA BECKY
DO ANDY FORMAM UMA
FORMAM OUTRA.
TRANSAÇÃO,

130 CAPÍTULO 5
O QUE é UMA TRAVA (nomeio)?
EM UM BANCO
DE DADOS, AS QUANDO ELES
OPERAÇÕES PARA ESSE PROPÓSITO,
ACESSAM O UM MÉTODO CHAMADO DE
FEITAS POR MUITOS BANCO DE DADOS
USUÁRIOS SÃO TRAVA (OU BLOQUEIO) é
SIMULTANEAMENTE. USADO.
CONTROLADAS PARA
QUE NADA SAIA
ERRADO...

ENTENDO.

VOCÊ CHAMA DE
"TRAVA" COMO em
"TRAVA E CHAVE"?

DEIXE EU EXPLICAR
VOCÊ TRAVA USANDO O EXEMPLO
(BLOQUEIA) DADOS ANTERIOR.
PARA IMPEDIR
QUE ELES SEJAM
PROCESSADOS
ERRONEAMENTE.

\\'

FLIP

VAMOS USAR UM BANCO P& PAPOS! 131


O ANDY TRAVA 05 DADOS ANTES QUANDO A BECKY TENTA EXECUTAR
DE EXECUTAR UMA SÉRIE DE A5 OPERAÇÕES DELA, ELA DEVE
OPERAÇÕES. ESPERAR ATÉ Que O ANDY TERMINE.

30
30 MAÇÃS
MAÇÃS
e5T011
ESPERANDO
EM UMA
..4 ESPERANDO ATE QUE FILA!
O ANDY TERMINE O
PIROCE5E0.
ADICIONAR 10

40 MAÇA5 40
MAÇÃS

ADICIONAR 10

--------
A BECKY PODE APENAS 50 MAÇÃS
(
EXECUTAR SUAS OPERAÇõES
DEPOIS Que O ANDY TIVER
TERMINADO A5 5UA5.
50 MAÇAS

COMO RE5ULTADO, O BANCO DE


DADOS APRESENTA O VALOR 50,
COMO DEVERIA.
NO55A1 CAIN, ESTOU
imprze51ONAI2A.

isso mesmo.

132 CAPÍTULO 5
BANCO De DADOS

E-55A FINALIZAÇÃO é
ENTÃO, ENTENDO QUE A5 CHAMADA DE OPERAÇÃO
OPERAÇÕES NO BANCO DE ve FTIVAÇÀ-0
DADOS SEJAM FINALIZADAS (COM/11177.
QUANDO CADA TRANSAÇÃO
É PROCESSADA
CORRETAMENTE.

EMBORA UMA TRAVA TENHA ENTÃO UTILIZAMOS


SEU PAPEL EM UM BANCO TIPOS DIFERENTES DE
DE DADOS, E55A OPERAÇÃO TRAVAS DEPENDENDO
NÃO ceve SER USADA DA SITUAÇÃO.
ABUSIVAMENTE. ELA PODE
IR CONTRA O PROPÓSITO
DE UM BANCO PE. DADOS:
COMPARTILHAR DADOS COM
MUITAS PESSOAS.

COMO FAZEMOS 1550?

POR EXEMPLO, VOCÊ


PODE USAR UMA TRAVA ENQUANTO UMA TRAVA
MAS NÃO PODEM
COMPARTItHAPA ESTIVER
COMPARTILHADA PARA EXECUTAR UMA
APLICADA, OUTROS
UMA OPERAÇÃO PE OPERAÇÃO DE
USUÁRIOS PODEM LER
LEITURA QUANDO ELA ESCRITA NELES.
DADOS...
FOR A ÚNICA OPERAÇÃO
NecesÁRIA.

TW-1
COMPARTILHADA

VAMOS USAR UM BANCO DE PAPOS! 133


QUANDO UMA
QUANDO EXECUTA UMA
TRAVA EXCI-U5IVA é
OPERAÇÃO DE ESCRITA,
APLICADA, OUTROS
UM USUÁRIO APLICA UMA USUÁRIOS NÃO PODEM
TRAVA EXCLUSIVA.
LER OU ESCREVER NO55A.
DADOS.

'Vtz•MP.'\\IP
CY•C''\)

cl

LEITURA? ESCRITA?

VEJO QUE HÁ TIPOS


DIFERENTES DE
TRAVAS. QUANDO UMA TRAVA é USADA
PARA CONTROLAR DUAS OU MAIS
TRANSAÇÕES, ISSO é CHAMADO DE
CONTROLE DE 5MIIJI-TAN/PA12.
1550
FAZ
SENTIDO.

O MAIOR NÚMERO
po9ívei. DE USUÁRIOS
EM UM BANCO DE
USANDO UM BANCO DE
DADOS, CONTROLE
DADOS DE UMA VEZ
DE SIMULTANEIDADE ENQUANTO IMPEDE QUE
PERMITE
CONFLITOS DE DADOS
OCORRAM.

134 CAPÍTULO 5
FICOU el.& é TÃO
VOCÊ DEVE TER COM e5A Re9PON5ÁVeL, pai
IMPRESSÃO? NÃO, RURUNA? 1'
ESTUDADO MUITO!

TUDO BEM,
PODE
ACHO QUE SIM... DEIXAR.

DEIXA EU ANDY
EM ALGUNS CASOS, CONTROLE PE
VOLTAR AO SIMULTANEIDADE COM UMA TRAVA
TÓPICO iI%
PODE CAUSAR UM PROBLEMA.
ANTERIOR. d)C5d

POR EXEMPLO...

C SUPONHA QUE
SUPONHA QUE O ANDY A BECKY TENHA
TENHA APLICADO UMA APLICADO UMA TRAVA
TRAVA EXCLUSIVA NOS EXCLUSIVA NO5
DADOS DA MAÇÃ.
DADOS DO MORANGO.

TRAVA

,$),Liltuu7/4 r7g
DADOS DA MAÇÃ DADOS 120
MORANGO
A SEGUIR, O ANDY O QUE
E A BECKY PODE ACONTECERIA
PODE TENTAR APLICAR
TENTAR APLICAR ENTÃO?
UMA TRAVA EXCLUSIVA
UMA N05 DADOS DA
NOS DADOS DO
MAÇÃ.
MORANGO,

4- -0 TRAVA

PAPOS PA PAPOS PO
ÓMÕAÇÂ6 i(( MORANGO

L__

NENHUM 905 DOIS


JÁ QUE CADA UM DELES
PODE PROCEDER
DEVE ESPERAR A TRAVA FAzeR
COM QUALQUER NADA.
APLICADA PELO OUTRO
OPERAÇÃO. é
USUÁRIO SER LIBERADA,
1550?

DEIXA ELI
PENSAR...
EXATAMENTE'

E55A SITUAÇÃO,
Guie é CHAMADA POR EXEMPLO, VOCÊ QUANDO VOCÊ-
DE 1;',4PI-OCK, PODE OBSERVAR CANCELA UMA
NÃO PODE SER TRANSAÇÕES Que TRANSAÇÃO,
RESOLVIDA A NÃO FORAM ENFILEIRADAS 1550 é CHAMADO
5ER QUE UMA POR UM CERTO 12e REVERSÃO
DA5 TRAVAS SEJA TEMPO... GZOL-113ACK).
LIBERADA.

E CANCELÁ-LAS! REVERSÃO?

//
136 CAPÍTULO 5
VOCÊ QUER DIZER SIM! POR EXEMPLO, SE UMA
QUE PODE CANCELAR TRANSAÇÃO PARA "FRUTAS COM
TODAS AS OPERAÇÕES DESCONTO COM PREÇOS MENORES
EM UMA TRANSAÇÃO OU IGUAIS A 150G" FALHOU,
DE UMA VEZ?

OPERAÇÕES PARA MAÇÃS e


MORANGOS DEVEM SER TODAS
CANCELADAS, CERTO?

ENTENDI.

ENTÃO O BANCO
DE DADOS Se 5E ALGO QUE
COMPORTA COMO IMPOSSIBILITE A
SE A OPERAÇÃO FINALIZAÇÃO OCORREU
NUNCA TIVE555 5120 DURANTE UMA
EXECUTADA?
TRANSAÇÃO,

Z•zZ
ENTÃO UMA
@ig
REVERSÃO É
(1.
EXECUTADA EM VEZ O
é, MAIS OU DE UMA OPERAÇÃO
MENOS ISSO. DE EFETIVAÇÃO. REVERSÃO

TUDO BEM!
ISSO MESMO. UMA AGORA, TILA,
TRANSAÇÃO SEMPRE O PRÓXIMO
TERMINA COM UMA TÓPICO é...
OPERAÇÃO 2e EFETIVAÇÃO
CCOMMIT) OU DE
REVERSÃO (ROLLBACK).

NÃO HÁ MEIAS MEDIDAS, EM


OUTRAS PALAVRAS.

VAMOS USAR UM BANCO PE DADOS! 137


SEGURANÇA DE BANCOS DE PAI705

AAAAH!
ENTENDI. MESMO QUANDO
Ê COMPARTILHADO
ENTRE MUITAS PESSOAS
SIMULTANEAMENTE, UM
BANCO DE DADOS pope
EVITAR PROBLEMAS SE FOR
PROJETADO CORRETAMENTE.

DESCULPE POR
RAMINes! VOCÊ DIZER... 00 50U A
SURGIU DO NADAI "TICA", SEJA 1.-Á
QUEM FOR.
5;1

RAMINe9 SURGE
COMO O VENTO.

o QUE VOCÊ ESTÁ CU é QUE DEVERIA ESTAR


FAZENDO AQUI? IRRITADO.

VEJA 1550.
NO55A TABELA
DE PRODUTOS. CÓDIGO PRODUTO Nome PRODUTO PREÇO UNITÁRIO

101 MELAO l0000 e


102 MORANGO 12500 6

103 MAÇÃ 8000 e


104 LIMÃO 6000 6
201 PINHÃO ci000 e
ZOZ CAQUI 12400 6
301 PÊ 55E60 S000 e
302 KIM 60006

o aus TEM DE 05 PREÇOS.-------


ERRADO COM
05 PREÇOS!
ELA?

05 przeço9?
09 VALORES
NA COLUNA PE
PREÇO UNITÁRIO
ESTÃO TODOS
BAOUNÇA1705!

COMO POPE?!
ole/ww
-

COM TODA ESSA CONFUSÃO


EM SUAS NOTAS FI5CAI5,
MEU PAÍS, UM IMPORTADOR,
ESTÁ UM CAOS.

91
I 1
1
e
POR QUE você NÃO ACEITA
HL UM BANCO DE DADOS MEU PEDIDO, PRINCE5A
RURUNA? VENHA AO MEU PAr5
é UMA COISA MUITO E SEJA MINHA NOIVA.
PERIGOSA.

Lu_
l'" ---
COMO PARTE DA
COMPENSAÇÃO POR
ese PROBLEMA...

ALGUéM COM INTENÇÃO


MALDOSA DEVE TER
EXECUTADO UMA
SOBREPOSIÇÃO DE DADOS
NÃO-AUTORIZADA.

QUE
HORROR!

VOCÊ5
ESTÃO 55
COMPORTANDO
COMO 55 eu
NÃO 55T1V555E peviM05
AQUI.
DESCULPA.

140 CAPÍTULO 5
fl

PROMETEM05 TOMAR
MEDIDAS PARA PROTEGER
O BANCO DE DADOS E
IMPEDIR QUE E55E TIPO DE
COISA ACONTEÇA DE NOVO.

PERDOE-N05 VOCÊ DIZ QUE VAI


POR 1550, POR CONSERTAR, MAS... NÃO
FAVOR. ESTOU T-40 CERTO...
VOCÊ pope SER MAIS
especíFico?

A CAUSA DESSE EM PRIMEIRO LUGAR,


PROBLEMA é QUE TEMOS QUE CRIAR UM
QUALQUER UM NO REINO CONTROLE DE ACE550
DE KOD TEM LIVRE PARA LIMITAR 05
ACESSO AO BANCO DE USUÁRIOS DO BANCO DE
DADOS. DAD05.

E 1550 QUER
DIZER...?

SEGUNDO, IREMOS
UMA BOA SOLUÇÃO PODE 5ER CONFIGURAR
EXIGIR NOMES DE USUÁRIOS OPÇÕES PARA
E SENHAS PARA Acesketiz DAR PERMISSÃO
O BANCO DE DADOS, PARA A CERTAS
ASSEGURAR QUE CADA USUÁRIO OPERAÇÕES APENAS
É DIGNO De CONFIANÇA PARA PARA USUÁRIOS
TER DIREITO pe. ACESSO. AUTORIZADOS.

PO G`\1>" 91\9°
\1..\01-\1-
"O
.04 Pg-0-001".
\42-1Ps oz.0,00
5707.14"
PARECE UMA -00°, p,P-P v
SOLUÇÃO 0
INTELIGENTE! ni5:00‘2V
o0-1),.,414,P0

VAMOS USAR UM BANCO PE DADOS! 141


• O PESSOAL. DO DEPARTAMENTO DE MERCADORIAS PODE PESQUISAR, INSERIR, ATUALIZAR e EXCLUIR
DADOS DO PRODUTO.
• O PESSOAL DO DEPARTAMENTO cie NEGÓCIOS INTERNACIONAIS Pope PESQUISAR e INSERIR DADOS
DO PRODUTO, MAS NÃO PODE ATUALIZÁ-LOS OU EXCLUÍ-LOS.
• O PESSOAL DO DEPARTAMENTO DE EXPORTAÇÃO PODE PESQUISAR DADOS DO PRODUTO, MA5 NÃO
PODE INSERIR, ATUALIZAR OU EXCLUIR. 7

BANCO DE
DADOS

DEPTO. DE DEPTO. DE NEGÓCIOS DEPTO. DE


MERCADORIAS INTERNACIONAIS EXPORTAÇÃO

‘N.

PESQUISAR SIM PESQUISAR SIM PESQUISAR SIM


INSERIR SIM INSERIR SIM INSERIR NÃO
ATUALIZAR SIM ATUALIZAR NÃO ATUALIZAR NÃO
EXCLUIR SIM EXCLUIR NÃO EXCLUIR NÃO

TO-IARA/1M
00 VAMOS APENAS
RESTRINGIR O NÚMERO DE AH, SIM... DEIXANDO
USUÁRIOS - VAMOS TAMBÉM ISSO DE LADO, O QUE
CONFIGURAR PERMISSÕES EU QUERIA DIZER é...
PARA CADA USUÁRIO QUE
PUDER ACESSAR O BANCO DE
DADOS.

ESSA é UMA BOA


OPORTUNIDADE PARA AH, MA5
VOCÊ CONSIDERAR
CASAR COMIGO, E... ESPERE...!

DESSA FORMA, PODEMOS


EVITAR PROBLEMAS e O BANCO
DE DADOS AINDA PODE seg
COMPARTILHADO.

142 CAPÍTULO 5
ACELERANDO P6 C015A5 COM INDEXAÇÃO
ENTENDO O QUE
( VOCÊ QUER
CONFORME O BANCO DE
DADOS AUMENTA e CADA VEZ
IGNORADO MAIS PESSOAS O UTILIZAM,
PE NOVO...
HMM...

OUTROS POR EXEMPLO,


PROBLEMAS PODEM QUANTO MAIOR
FICAR O VOLUME DE
DADOS,

Ê SEGURO CONFIAR EM UM CASO COMO


MAIS LENTA UMA EM UM BANCO DE ESSE...
OPERAÇÃO DE DADOS?
pe5aul5A PODE
FICAR.

/HEN?

SIM, DE FATO.

INDEXAÇÃO PARECE SER UMA UM ÍNDICE COMO


SOLUÇÃO PROMISSORA. AQUELE NO FIM DE
UM LIVRO?

PRINCESA...EU NÃO
LIGO MUITO. EM VEZ
DISSO, VAMOS DISCUTIR
NOSSO CASAMENTO.

VOCÊ ESTÁ CERTA.

VAMOS USAR UM BANCO PB DADOS! 143


UMA PESQUISA À5 CEGAS
SUPONHA QUE VAMOS PROCURAR PELO TERMO PODERIA
O SIGNIFICADO DO TERMO SER TRABALHOSA, ENTÃO
TRAN5A0-0 CONSULTANDO ESTE CHEGAMOS O iNDICE EM
LIVRO SOBRE BANCOS DE DADOS. VEZ DISSO.

NO TRECHO PARA
TRAN5,40-0, AS PÁGINAS
QUE FALAM SOBRE ELA
ESTÃO LISTADAS.

E é A MESMA
USANDO UM COISA PARA UM
ÍNDICE, PODEMOS ÍNDICE DE BANCO
RAPIDAMENTE DE DADOS. POR
ENCONTRAR A EXEMPLO...
PÁGINA QUE
PROCURAMOS.

ISSO MESMO.

144 CAPÍTULO 5
SE VOCÊ CRIAR ÍNDICES ELE INFORMA em QUE
PARA CÓDIGOS DO LUGAR NO DISCO 05
PRODUTO DADOS DO PRODUTO ESTÃO
LOCALIZADOS.

PODE INSTANTANEAMENTE PAPOS


DESCOBRIR ONDE OS
DADOS DO PRODUTO
ESTÃO ARMAZENADOS
PARA UM PRODUTO
COM CÓDIGO 101, POR
EXEMPLO.

/EXAMINAR TODAS AS LINHAS


INDEXAÇÃO AJUDA A QUANDO PROCURAMOS
ACELERAR A PESQUISA. CERTO TIPO DE DADO
Devo
REPETIR CONSOME MUITO TEMPO.
MINHA
EXPL.ICAÇÃO
Despe O
INíCIO?
NÃO,
NÃO...

BOM, NÃO ACHO


TÃO FÁCIL, De
ACOMPANHAR...
MAS...

ei! COM
Quem
USANDO ÍNDICES, VOCÊ ESTÁ
REDUZA A TAXA DE
PODEMOS REDUZIR A FALANDO?
ACESSO A DISCO, e
TAXA DE Acesso AO
NOSSA BUSCA SERÁ
DISCO.
MUITO MAIS VELOZ!
XI!
0.QUE
É

L.UP!

VAMOS USAR UM BANCO DE PAPOS! 145


56 ESTOU HA, HA,
FALANDO TICA HA
AGORA, PRESTEM ATENÇÃO,
COMIGO EM UM BANCO DE DADOS
MESMA! PADRÃO, sei QUE é FUNÇÃO
DO ADMINISTRADOR
DO BANCO DE DADOS
ADICIONAR ÍNDICES.
00P5, O RAMIN555
NÃO CONSEGUE
VÊ-LA.

TEM
MAIS...?

1550 ENTÃO UM ÍNDICE


eSTÁ BOM OU RUIM?
C5RTO?
POR OUTRO LADO, CRIAR
ÍNDICES DEMAIS pope
CAUSAR INEFICIÊNCIA.

ENTENDA, FUNCIONA
ASSIM. SUPONHA Que UM ENTÃO, é
LIVRO TENHA UM NÚMERO A55IM QUE
EXCESSIVO PE ÍNDICES. ISSO FUNCIONA.
NÃO FARIA O MENOR SENTIDO,
NÃO? H?
HE
HE

ALÉM DO MAIS, QUANDO


ATUALIZA DADOS, VOCÊ
DEVE ATUALIZAR seus
ÍNDICES TAMBéM, e isso
GASTARIA MUITO MAIS
TEMPO.

ASSIM DIZ A TICA1

146 CAPÍTULO 5
MAS ELE NÃO DEVERIA
ENTENDO. O BANCO ME IMPRESSIONAR
DE DADOS é MAIS ASSIM! POIS TEM
INTELIGENTE DO QUE OUTROS PROBLEMAS
PENSEI. TAMBÉM!

DE ONDE
a
VEIO
AQUELA
ROSA?
O BANCO DE UGH! POR EXEMPLO,
DADOS...

E 5E O SISTEMA NO QUAL
O BANCO DE DADOS ESTÁ
FUNCIONANDO FALHA
DEVIDO A QUEDA DE
ENERGIA?

DADOS
O
-rum
DADOS

ISSO SIGNIFICA QUE


UMA FUNÇÃO PE O BANCO DE DADOS
RECUPERAÇÃO DE RECUPERAÇÃO
DE DESASTRE? PODE 9e RECUPERAR
DESASTRE é APLICADA. PE PROBLEMAS
APROPRIADAMENTE, SE
ELES OCORREREM.

L
r
r ENTENDO.

VAMOS USAR UM BANCO DE DADOS! 147


RECUPERAÇÃO DE PE5A5TRE5

DENTRO DE UM BANCO LOe


DE DADOS, REGISTROS
CHAMADOS De WG'S
SÃO CRIADOS SEMPRE LOO
Que UMA OPERAÇÃO é
EXECUTADA, NÃO?

é ASSIM QUE A5 MUDANÇAS


NO CONTEÚDO DO
BANCO ve DADOS SÃO
EXATO. REGISTRADAS.

LOGS, é.2
( O MAIS IMPORTANTE SÃO
REGISTROS DE VALORES ANTES
E 2EP01c, DE UMA ATUALIZAÇÃO
NO BANCO DE DADOS.

el, eLe TAMBÉM


eSTifk Se
INTERESSANDO POR
BANCOS DE PAPOS.

VOCÊ QUER DIZER


O RAMINESS?
TEM CeRTeZA?

148 CAPÍTULO 5
QUANDO UM PROBLEMA O MéTODO DE
OCORRER, PRIMEIRO SE RECUPERAÇÃO VARIA
REINICIA O SISTEMA. DEPENDENDO DE SE
A TRANSAÇÃO FOI
EFETIVADA OU NÃO.

DEPOIS UTILIZAM-5E 05 BLÁ,


BLÁ,
LOO5 PARA RECUPERAR BLÁ
O BANCO DE DADOS.

APARENTEMENTE, ELE
TRANS - NÃO ESTÁ ENTENDENDO
O QUÊ? NADA... é UMA PENA.

5E O PROBLEMA OCORREU DEPOIS


QUE UMA TRANSAÇÃO JÁ TINHA SIDO
EFETIVADA, 1550 QUER DIZER Que AS
OPERAÇÕES JÁ ESTAVAM FINALIZADAS
PARA AQUELA TRANSAÇÃO.
ENTÃO, PODE-5E RECUPERAR
05 DADOS REAPLICANDO-SE
AS OPERAÇÕES NO BANCO DE
DADOS.

DADOS A

AVANÇO

Niee TIPO DE
RECUPERAÇÃO, O BANCO
DE DADOS CONFIRMA 05 DADOS A
VALORES POSTERIORES À DEPOIS DE UMA OPERAÇÃO
DE ATUALIZAÇÃO
ATUALIZAÇÃO.

E55E MéTODO DE RECUPERAÇÃO


é CHAMADO DE AVAWO CROGGING
FORWARM.

VAMOS USAR UM BANCO DE DADOS! 14q


O QUE ACONTECE DADOS A
SE A TRANSAÇÃO NUMA OPERAÇÃO
NÃO TIVER SIDO DE COIJ
EFETIVADA AINDA ROGGBACK), O VALOR
QUANDO O ANTES DA ATUALIZAÇÃO
PROBLEMA OCORRE? Ê CONFIRMADO,
PARA CANCELAR A
TRANSAÇÃO.
REVERSÃO

EM OUTRAS
PALAVRAS, O
DADOS A
ESTADO DO BANCO
DE DADOS ANTES ESTADO
QUE A TRANSAÇÃO
TENHA INICIADO é-
RESTAURADO.
NÃO SE PREOCUPE!
NE55E CASO, UMA
REVERSÃO é EFETUADA.

O SISTEMA RECUPERA 05 NÃO ESTOU


DADOS e GARANTE QUE FAMILIARIZADO COM
eLes ESTEJAM LIVRES DE TERMOS COMO
INCONSISTÊNCIAS. CCOMMIT) E
TRANSAÇÃO.

HUMM
HUMMM...

NO ENTANTO, PARECE SABE, BANCOS


QUE AS MEDIDAS DE DE DADOS SÃO
SEGURANÇA 20 seu ROBUSTOS! MESMO
BANCO DE DADOS QUANDO DESASTRES
SÃO BOAS. OCORREM!

AGORA VOCÊ
PERCEBEU?

150 CAPÍTULO 5
Bem, TENDO EM VISTA
TUDO 1550, VOU
PERDOAR VOCÈS
DESTA VEZ.

ESTOU FALANDO
SÉRIO SOBRE
NO550 CASAMENTO,
MA5... ENTENDE?

ME PERGUNTO
Quem SERIA...

VOCÊ NÃO
NOTOU...?
EU e CAIN FICAREMOS JUNTOS
PARA SEMPRE, E COM O
PODER DO N0550 BANCO DE
I2A205,

VAMOS GARANTIR
QUE O REINO DE K017
pRospegei

EM Nome 705 VOCÉ PREFERE


ALGUÉM POR QUE
CÉUS... NÃO... HUMILDE como VOCÊ ESTÁ SE
NÃO FAÇA 1550 O CAIN? DESCULPANDO,
CAIN?
COMIGO...

SINTO
MUITO. BEM, SIM, AH, NÃO,
QUER DIZER, EU NÃO
PERDOE-ME. DEVIA, ME
DESCULPE...

FIQUE
COMIGO
PARA ELES FORMAM
SEMPRE, UM ÓTIMO
CAIN.
CASAL.
SIM, SIM,
VOSSA
ALTEZA!

„ss
POR QUE, OH, POR
QUÊ? s4W
wro

152 CAPÍTULO 5
PROPRIel2ADeS 12A5 TRANSAÇõeS
A pesquisa de Cain mostrou que usuários de um banco de dados podem pesquisar, inserir,
atualizar e excluir dados. Um conjunto de operações bem-sucedidas efetuadas por um único
usuário é chamado de transação.

o[

Quando se compartilha um banco de dados, é importante garantir que múltiplas tran-


sações possam ser processadas sem causar conflitos nos dados. É também importante
proteger os dados para evitar inconsistências na eventualidade de falhas durante o proces-
samento de uma transação. Nesse sentido, listamos na tabela seguinte as propriedades que
uma transação precisa apresentar, que de forma memorável formam a palavra ACID.

PROPRIEDADES OBRIGATÓRIAS PARA UMA TRANSAÇÃO

Propriedade Significado Descrição

A Atomicidade Uma transação precisa sempre terminar com uma operação


de efetivação ou de reversão.

C Consistência Processar uma transação nunca pode resultar em perda de


consistência no banco de dados.

Isolamento Mesmo quanto transações são processadas


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

D Durabilidade O conteúdo de uma transação completa não pode ser


afetado por falhas.

Vamos examinar cada uma dessas propriedades em detalhes.

ATOMICIDADE
A primeira propriedade obrigatória para uma transação, atomicidade, significa que uma
transação precisa terminar com uma efetivação ou com uma reversão para manter o banco
de dados livre de inconsistências. Em resumo, ou todas as ações da transação são concluí-
das, ou todas são canceladas. Uma efetivação finaliza as operações de uma transação. Uma
reversão as cancela.

VAMOS U5AR UM BANCO DE PAPOS! 153


Em alguns casos, urna efetivação ou uma reversão são efetuadas automaticamente.
Pode-se também especificar qual das duas deve ser utilizada. Por exemplo, pode-se
ordenar uma reversão se um erro ocorrer. Para efetuar essas operações, utilizam-se os
comandos COMMIT (efetivar) ou ROLLBACK (reverter) da SQL.

COMMIT; Use este comando para


1.1 efetivar uma transação

ROL LBACK; < Use este comando para


reverter uma transação.

C2115TõE5

Responda a estas questões para ver quão bem entendeu a atomicidade. As respostas estão
na página 167.

01
Escreva um comando SQL que possa ser usado para finalizar uma transação.

Q2
Escreva um comando SQL que possa ser usado para cancelar uma transação.

CON5I5TâNCIA
Uma transação não deve gerar erros. Se o banco de dados estava consistente antes do pro-
cessamento de uma transação, ele precisa continuar consistente depois que a transação se
encerra.
O Cain deu como exemplo Andy e Becky, cada um tentando adicionar 10 maçãs em um
total de 30 maçãs. Em vez de obter o valor correto de 50 maçãs, o banco de dados mostra
um total de 40. Este tipo de erro é chamado de atualização perdida.

154 CAPÍTULO 5
Quando transações são 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 operações em uma transação são chamadas de recursos.
Em um banco de dados, transações devem ser capazes de acessar os mesmos recursos
simultaneamente sem criar inconsistências.

ISOLAMENTO
Quando duas ou mais transações simultâneas produzem os mesmos resultados que seriam
obtidos se elas tivessem sido processadas em momentos diferentes, diz-se que elas são
serializáveis. A propriedade de isolamento exige que as transações sejam serializáveis, o que
serve como proteção contra erros.
Para conseguir que as transações sejam serializáveis, é preciso ter controle sobre
aquelas que ocorrem simultaneamente. O método 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.

VAMOS USAR UM BANCO [29 DADOS! 155


Quando uma trava compartilhada está em uso, outro usuário pode aplicar uma trava
compartilhada em outras transações, mas não uma trava exclusiva. Quando uma trava
exclusiva está aplicada, outro usuário não pode aplicar nem uma trava compartilhada nem
uma exclusiva em outras transações. A tabela a seguir resume o relacionamento entre tra-
vas compartilhadas e exclusivas.

RELACIONAMENTO DE COEXISTÊNCIA ENTRE TIPOS DE TRAVA a3Loaueio)

Trava compartilhada Trava exclusiva

Trava compartilhada SIM NÃO

Trava exclusiva NÃO NÃO

QUESTc3E5

Você entendeu as travas? Responda às questões e verifique as respostas na página 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?

TRATAMENTO EM PUAS FASES


Para ter certeza de que as transações são serializáveis, precisamos obedecer certas regras
para aplicar e remover travas. Uma dessas regras é o travamento em duas fases - para
cada transação, 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
transação O observa a regra do travamento em duas fases, mas a O não. Serialização só
pode ser obtida se todas as transações atendem a regra do travamento em duas fases.

156 CAPÍTULO 5
O TRAVA A TRAVA A
A fase para travamentos
TRAVA B LEITURA A
LEITURA A ESCRITA A
LEITURA B DESTRAVA A Travas foram removidas
ESCRITA A TRAVA B antes que escritas
LEITURA B tenham sido feitas
ESCRITA B
DESTRAVA A A fase para ESCRITA B
remover as travas DESTRAVA B
DESTRAVA B

GRANUGARIPAPE PE TRAVA
Existem diversos recursos que podem ser travados (bloqueados). Por exemplo, pode-se
travar dados usando tabelas ou linhas como unidade. A extensão do travamento do recurso
é conhecida como granularidade. Granularidade grossa ocorre quando muitos recursos são
travados ao mesmo tempo, enquanto que granularidade fina ocorre quando menos são.

Travar usando tabelas Travar usando linhas como


como unidade implica unidade implica numa
numa granularidade granularidade mais fina
grossa nos travamentos. para os travamentos.

Quando a granularidade é grossa (ou alta), o número de travas necessárias por tran-
sação é reduzido, o que torna gerenciar a granularidade mais fácil. Por um lado, isso reduz
a quantidade de processamento necessária para a CPU que executa o banco de dados. Por
outro lado, conforme mais recursos vão sendo travados, o tempo de espera de transações
aguardando remoção de travas tende a aumentar. Dessa forma, a quantidade de transações
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 transação, resultando em mais operações para gerenciar o travamento. Isso
resulta em mais processamento sendo imposto à CPU. No entanto, já que menos recursos
estão travados, menos tempo será empregado esperando que outras transações removam
travas. Assim, o número de transações que se pode efetuar tende a aumentar.

01/557-c35.5
Responda às questões, e confira as respostas corretas na página 1.68.

Q7
A unidade de travamento para recursos foi alterada de tabelas para linhas. O que
acontece com a quantidade de transações que se pode efetuar simultaneamente?

Q8
A unidade de travamento para recursos mudou de linha para tabela. O que acontecerá
com o número de transações que se pode executar ao mesmo tempo?

VAMOS USAR UM BANCO 175 DA1705! 157


OUTKO5 CONTIZOI-E5 PE EXECUÇÃO 51411/1-TÂNEA

Pode-se utilizar travamento para executar com sucesso duas ou mais transações ao mesmo
tempo. No entanto, utilizar travas implica no fardo do gerenciamento de travamento, uma
vez que deadlocks - momentos em que ações entram em conflito - podem ocorrer. Métodos
mais simples de controle de execução simultânea podem ser usados quando se tem uma
quantidade menor de transações ou um grande número de operações de leitura. Nesses
casos, os seguintes métodos podem ser utilizados:

Controle timestamp
Um rótulo contendo o momento do acesso, conhecido como estampa de tempo
(timestamp), é atribuído aos dados acessados durante uma transação. Se outra com uma
estampa mais adiantada no tempo já atualizou os dados, a operação não será permitida.
Quando uma operação de leitura ou escrita é bloqueada, a transação é revertida.

Controle otimista
Este método permite operações de leitura. Quando se tenta uma operação de escrita,
os dados são verificados para ver se qualquer outra transação está ocorrendo. Se outra
transação já tiver atualizado os dados, a transação é revertida.

NIVE15 DE 150~NT°

Em um banco de dados no mundo real, pode-se configurar o nível em que transações serão
processadas simultaneamente. Isso é chamado de nível de isolamento.
Na SQL, o comando SETTRANSACTION (configurar transação) pode ser usado para
especificar os seguintes níveis de isolamento:
• READ UNCOMMITTED
• READ COMMITTED
• REPEATABLE READ
• SERIALIZABLE

SETTRANSACTION ISOLATION LEVEL READ UNCOMMITTED;

Dependendo do nível de isolamento configurado, os seguintes problemas podem ocorrer.

Leitura suja Leitura não reproduzível Leitura fantasma


READ UNCOMMITTED Possível Possível Possível
READ COMMITTED Não ocorre Possível Possível
REPEATABLE READ Não ocorre Não ocorre Possível
SERIALIZABLE Não ocorre Não ocorre Não ocorre

• Uma leitura suja ocorre quando uma segunda transação lê uma linha antes que uma
primeira a efetive.
• Uma leitura não reproduzível ocorre quando uma transação lê duas vezes os mesmos
dados e obtém valores diferentes.
• Uma leitura fantasma ocorre quando uma transação procura linhas que obedecem um certo
critério, mas encontra as linhas erradas devido a alterações feitas por outra transação.

158 CAPÍTULO 5
DURABILIDADE
Um banco de dados gerencia dados importantes, de modo que garantir a segurança e
durabilidade no caso de falhas é essencial. Segurança é também importante para evitar que
usuários não autorizados substituam dados e criem inconsistências.
Em uni banco de dados, pode-se configurar permissões 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 segurança.
Em um banco relacional, o comando GRANT (conceder) é utilizado para conceder per-
missões para que outros usuários possam efetuar processamento nas tabelas que você cria.
Configurar permissões é uma tarefa importante na operação de um banco de dados.

GRANT SELECT, UPDATE ON produtos Este comando concede permissões


TO Departamento_Negocios_Internacionais; para processar os dados.

Pode-se conceder os seguintes privilégios (permissões) com comandos SQL.

PRIVIVéGIOS EM BANCOS PB PAPOS

Comando Resultado

SELECT Permite que usuários pesquisem linhas numa tabela.

INSERT Permite que usuários acrescentem linhas numa tabela.

UPDATE Permite que usuários atualizem linhas numa tabela.

DELETE Permite que usuários apaguem linhas numa tabela.

ALL Concede todos os privilégios.

Conceder privilégios com WITH GRANT OPTION permite que o usuário conceda privilé-
gios que recebeu a outros. Como o comando mostrado abaixo, o departamento de negócios
internacionais pode permitir a outros usuários a atualização do banco de dados.

GRANT SELECT, UPDATE ON produtos O usuário que recebe os privilégios


TO Departamento_Negocios_Internacionais WITH GRANT OPTION; pode concedê-los a outros.

Pode-se também retirar privilégios. Para fazer isso, utiliza-se o comando REVOKE.

REVOKE SELECT, UPDATE ON produtos Este comando revoga os


FROM Departamento_Negocios_Internacionais; privilégios concedidos ao usuário.

Alguns produtos de banco de dados podem agrupar uma série de privilégios e


concedê-los a diversos usuários ao mesmo tempo. O agrupamento pode facilitar o geren-
ciamento de permissões.

VAMOS USAR UM BANCO PE PAPOS! 15q


Concede privilégios a diversos
BANCO 2& DADOS usuários utilizando grupos.

t ti PEPTO. PE
PEPTO. PE
N6c5G105
AAERCAPORIAS INTeRNALIONAl

Utilizar visualizações, como descrito na página 117, permite um gerenciamento ainda


mais controlado para melhorar a segurança. Primeiro, extraia parte de um banco de dados
para criar uma visualização. Configurar privilégios para ela significa que esses também
foram aplicados na parte dos dados que foi selecionada para a visualização.
Visualização Tabela base

4-

Usuários podem efetuar Usuários não podem efetuar


processamento nos dados processamento no restante
nesta visualização. dos dados da tabela.

Q1JTõE-5

Tente responder às seguintes questões sobre durabilidade. As respostas estão na página 168.

09
Escreva um comando SQL que permita ao departamento de exportações a pesquisa
nos dados da tabela de produtos.

010
Crie um comando SQL para revogar o privilégio dado ao departamento de negócios
internacionais de excluir dados da tabela de produtos.

all
Privilégios foram configurados como segue na tabela de produtos criada pelo
administrador. Responda SIM ou NÃO em cada célula da tabela abaixo para indicar a
presença ou ausência de um privilégio para cada departamento, respectivamente.

GRANT ALL produtos TO Departamento_Negocios_Internacionais;


GRANT INSERT, DELETE ON produtos TO Departamento_Mercadorias;
GRANT UPDATE, DELETE ON produtos TO Departamento_Exportacoes;

Pesquisar Inserir Atualizar Excluir


Depto. negócios internacionais
Depto. mercadorias
Depto. exportação

160 CAPiTULO 5
QUANDO UM DE5A5TRE OCORRE
Um banco de dados precisa ter um mecanismo que possa proteger dados no sistema em
caso de falha. Para garantir a durabilidade das transações, é obrigatório que nenhuma falha
possa criar dados incorretos. Para proteger a si mesmo de falhas, um banco de dados exe-
cuta várias operações, o que inclui a criação de cópias de segurança e logs de transação.

TIPOS DE FALHAS
Uma falha no banco de dados pode ocorrer sob várias circunstâncias. Tipos possíveis de
falhas incluem os seguintes:
• Falhas na transação
• Falhas no sistema
• Falhas de mídia
Falha de transação ocorre quando uma transação não pode ser concluída devido a um
erro nela própria. Ela é revertida quando a falha ocorre.
Falha de sistema ocorre quando o sistema cai devido à queda de energia ou outro pro-
blema do tipo. No caso de uma falha de sistema, a recuperação de desastre acontece após
a reinicialização do sistema. Geralmente, transações que ainda não foram efetivadas quando
acontece a falha são revertidas, e aquelas que já foram são avançadas (reaplicadas).
Falha de mídia ocorre quando o disco rígido que contém o banco de dados é danificado.
No caso de uma falha dessas, a recuperação de desastre é feita com a utilização de cópias
de backup. As transações efetuadas após a criação dos arquivos de backup são avançadas.

PONTOS DE CHECAGeM CCHeCKPOINTS)


Para melhorar a eficiência das operações de escrita em um banco de dados, um buffer (um
segmento de memória usado para armazenar dados temporariamente) é usado com fre-
quência para gravar dados a curto prazo. Os conteúdos do buffer e o banco de dados são
sincronizados, e então um ponto de checagem é criado. Quando o banco de dados escreve
um ponto de checagem, ela não tem que executar qualquer recuperação contra falhas para
transações que foram efetuadas antes dele. As transações que não foram efetivadas antes
do ponto de checagem devem ser recuperadas.
Agora, suponha que as transações mostradas abaixo estejam sendo executadas no
momento em que ocorra uma falha de sistema. Quais transações devem ser revertidas? E
quais devem ser reaplicadas?

Ponto de checagem Ocorrência de falha Tempo

Início
T1 ...,

Início Efetivação
T2

Início Efetivação
T3

VAMOS USAR UM BANCO PB PAPOS! 161


QUESTõe5
Tente responder às questões seguintes na tabela da página anterior. As respostas estão na
página 168.

012
Como T1 deve ser processado?

013
Como T2 deve ser processado?

014
Como T3 deve ser processado?

Nos casos de falha no banco de dados, os mecanismos de recuperação descritos acima


protegerão o banco contra inconsistências. É por isso que você pode estar seguro a respeito
da integridade do banco quando a utiliza.

ÍNDICES
Um banco de dados gerencia grandes quantidades de dados, de modo que buscar por valores
específicos pode tomar muito tempo. Mas você pode usar índices para acelerar as buscas!

Cód. do produto Nome do produto Preço unitário Distrito

101 Melão 800 G Mar do Sul

102 Morango 150 G Central

103 Maçã 120 G Mar do Norte Leva muito tempo


104 Limão 200 G Mar do Sul para procurar por
cada item linha
201 Pinhão 100 G Mar do Norte
por linha.
202 Caqui 160 G Central

301 Pêssego 130 G Mar do Sul

302 Kiwi 200 G Mar do Sul


Um índice é uma ferramenta que permite acessar rapidamente o local do dado pro-
curado. Quando procura-se por algum dado em um grande banco de dados, a busca com
índices promete resultados rápidos.

Cód. do produto Nome do produto Preço unitário Distrito


101 Melão 800 G Mar do Sul
102 Morango 150 G Central
103 Maçã 120 G Mar do Norte
104 Limão 200 G Mar do Sul A localização do dado
procurado pode ser
201 Pinhão 100 G Mar do Norte acessada rapidamente
202 Caqui 160 G Central usando seu índice.

301 Pêssego 130 G Mar do Sul


302 Kiwi 200 G Mar do Sul

162 CAPÍTULO 5
Métodos de indexação incluem árvore binária (B-tree) e métodos de hash. Um índice
de árvore-B é composto de nós ancestrais e filhos, que podem ter mais nós filhos. Os nós
são dispostos de forma ordenada. Cada ancestral contém informações sobre os valores
mínimo e máximo contidos em todos os seus nós filhos. Isso permite que o banco de dados
navegue rapidamente até o local desejado, pulando seções inteiras da árvore que não
podem conter o valor que se busca.

200 Em um índice de árvore B,


o local desejado pode ser
acessado rapidamente.

120 150 310 340

O método de índice por hash encontra o local dos dados procurados aplicando uma
função de hash ao valor chave dos dados. O hash age como uma impressão digital única
para um valor. O método de índice por hash pode executar consultas específicas de corres-
pondência total (full-match searches), tal como uma busca pelo código do produto 101. No
entanto, ele não serve para buscar com eficiência por condições comparativas como códigos
do produto maiores que 101 ou por referências parciais como produtos cujos nomes termi-
nam em ão.

Em um índice por hash,


o local procurado pode ser
encontrado rapidamente.

Função
de
hash

Em alguns casos, usar um índice pode não acelerar a busca - usar um índice não
poupa tempo a menos que você esteja procurando apenas por uma pequena parte dos
dados. Além disso, há casos onde os índices são recriados sempre que os dados são atuali-
zados, o que resulta em um processamento mais lento de uma operação de atualização.

VAMOS USAR UM BANCO In DADOS! 163


QuesTões
Tente responder às seguintes questões sobre indexação. As respostas estão na página 168.

015
Qual índice seria mais produtivo em uma busca com um sinal de igual, um de árvore-B
ou um de hash?

016
Qual índice seria mais produtivo em uma busca com um sinal de diferente, um de
árvore-B ou um de hash?

OTIMIZAÇÃO DE UMA GON5ULTA


Quando você consulta um banco de dados, ele analisa a consulta SQL e considera se deve
utilizar um índice para que possa processar a consulta mais rapidamente. Vamos examinar o
procedimento para processar uma consulta.
O banco de dados pode decidir sobre uma ordem ideal para processar uma consulta.
A maioria das consultas pode ser realizada em diversas ordens com os mesmos resultados,
mas com velocidades diferentes possíveis. Por exemplo, suponha que haja uma consulta
para extrair datas de venda e nomes para produtos com um preço unitário maior que
200G. Essa consulta pode ser dividida nos seguintes passos.

SELECT data, nome_produto


FROM produto, vendas
WHERE preco_unitario>=200
AND produtos.codigo_produto = vendas. codigo_produto;

1. Junte as Tabelas de Produto e de Vendas

2. Selecione os produtos cujos preços unitários sejam maiores que 200G.

3. Extraia as colunas de datas e de nomes do produto.


Por exemplo, a figura à esquerda abaixo mostra a consulta processada na ordem de 1
a 3. A figura à direita mostra a consulta processada na ordem de 3 a 1. De qualquer forma,
as consultas são equivalentes.

TABELA DE TABELA PC TABELA DE


VENDAS PRODUTO PRODUTO

TABELA PC
JUNÇÃO VENDAS
PROJEÇÃO

SELEÇÃO
PROJEÇÃO SELEÇÃO

PROJEÇÃO JUNÇÃO

164 CAPÍTULO 5
No entanto, quando processada de 1 a 3, a mesma consulta geralmente exigiria um
tempo de processamento maior, porque quando a primeira junção é feita, uma tabela
intermediária com muitas linhas pode ser criada. Por outro lado, o procedimento de 3 para
1 exige um tempo de processamento menor, já que a seleção e a projeção acontecem pri-
meiro, eliminando dados indesejados o mais rapidamente possível. Assim, a mesma consulta
pode exigir um tempo de processamento diferente, dependendo da ordem na qual a proje-
ção, seleção e junção são executadas.
Geralmente, o banco de dados deve usar as seguintes regras para encontrar a melhor
ordem para consultas:
• Executar seleção primeiro para reduzir o número de linhas.
• Executar projeção primeiro para reduzir o número de colunas irrelevantes ao resultado.
• Executar junção (join) mais tarde.
Há diferentes técnicas para executar projeção, seleção e junção, respectivamente. Para
seleção, pode-se usar tanto uma busca de correspondência total quanto uma baseada em
índice. Para a junção, os métodos a seguir estão disponíveis.

LAÇOS ANINHADOS
0 método de laços aninhados compara uma linha em uma tabela a várias linhas em outra
(veja a figura abaixo). Por exemplo, um dos valores em uma linha na Tabela T1 é usado para
encontrar linhas correspondentes na Tabela T2. Se os valores forem os mesmos, então uma
linha de junção é criada.

TABELA TZ
TABELA T1
101
101
101
102
102 Cada linha é
103 comparada com
102 todas as outras.
104

VAMOS USAR UM BANCO DE DADOS! 1E5


FUSÃO ORDENADA CSORT MeRGE)
Esse método ordena (sort) e então funde (merge) linhas em várias tabelas (veja a figura
abaixo). Primeiro, as Tabelas Ti e T2 são ordenadas parcial ou inteiramente. Então são
comparadas começando pela linha de cima, e uma linha de junção é criada sempre que o
mesmo valor é encontrado. Já que as linhas já foram ordenadas, o processamento só pre-
cisa ser feito em uma direção, de modo que isso levará menos tempo. Você deve ter em
mente, no entanto, o tempo necessário para a ordenação inicial.

TABELA T1 TABELA TZ

1
y
Primeiro ordena,
depois compara.

11A5H
Um hash divide uma das tabelas usando uma função hash e então a funde com uma linha
em outra tabela que tenha o mesmo valor. Esse método seleciona efetivamente a linha para
a junção.

TABELA T1 TABELA TZ

Função Função
Hash Hash

166 CAPÍTULO 5
OTIMIZADOR
Quando uma consulta é processada, decide-se entre essas técnicas diferentes para obter
um ótimo desempenho. Em um banco de dados, a função responsável pela otimização de
consultas é chamada de otimizador. Há dois tipos comuns.

PROCE554MENTO COM BASE EM1ZE&R45

Certas regras são estabelecidas antes que qualquer operação seja executada. Por exem-
plo, algumas operações podem ser combinadas ou reordenadas quase da mesma forma
que uma equação algébrica pode ser manipulada e ainda querer dizer a mesma coisa. O
otimizador tenta encontrar a forma mais eficiente de processar a consulta que forneça os
mesmos resultados

FROCE55AMENTO COM 8,45E EM CUSTO


Esse método tenta estimar o custo do processamento da consulta, baseado em estatísticas
que o banco de dados mantém. Esse tipo de processamento às vezes é mais flexível do que
o baseado em regras, mas exige atualizações periódicas das estatísticas do banco de dados.
Gerenciar e analisar essas estatísticas leva muito tempo.

Resumo
• Você pode estabelecer privilégios de usuário em um banco de dados.
• O uso de travas (bloqueios) garante consistência quando um banco de dados tem muitos
usuários.
• A indexação permite buscas rápidas.
• Um banco de dados contém funções para recuperação contra desastre.

RE5P05TA5

Q1

COMMIT;

Q2

ROLLBACK;

Q3 Sim

Q4 Não

Q5 Não

VAMOS USAR UM BANCO PC DADOS! 167


Q6 Não

Q7 Vai aumentar

Q8 Vai diminuir

Q9

GRANT SELECT ON produtos TO Departamento_Exportacao;

1210

REVOKE DELETE ON produtos FROM Departamento_Negocios_Internacionais;

011

Pesquisar Inserir Atualizar Excluir

Depto. de negócios
SIM SIM SIM SIM
internacionais

Depto. de mercadorias NÃO SIM NÃO SIM

Depto. de exportação NÃO NÃO SIM SIM

012
Unia reversão é executada, uma vez que não ocorreu efetivação no momento da
ocorrência de falha.

013
Um avanço (reaplicação) é executado, uma vez que ocorreu efetivação no momento da
ocorrência da falha.

014
Nenhuma operação de recuperação é necessária, uma vez que a efetivação já tinha
ocorrido no momento do ponto de checagem.

015
Hash

Q16
Árvore-B

168 CAPÍTULO 5
6
09 BANG05 ve DA909 e9TÃ0 EM
T0209 05 LUGARES!

.\\
fi

sei
NT111#11111911I1,--
"nnasionzir

wer

QUE Puíam DECERTO


eSTA FRUTA é DO
REINO DE KOD!

NÃO, NÃO!

SIM? ALGO
ERRADO? QUER
UMA BANANA
TAMBÉM, RURUNA?

ME PERDOE!
PAI, COMER MAS NENHUMA
FRUTAS é TUDO OUTRA FRUTA SE
O QUE VOCÊ COMPARA COM
TEM FEITO AS NOSSAS!
DESDE QUE
RETORNOU.

MAS ADMITO, RURUNA


MANTEVE O REINO ÓTIMO REALMENTE, UM
ENQUANTO ESTIVEMOS FORA.• BANCO DE DADOS
É Al-e0 TÃO
PODE—SE VER PRODUTIVO!
COMO O REINO
DE KOD ESTÁ
PROSPERANDO!

vegvéeõe'.

HA-1-1A-HA •HO -HO -HO


\\ "X,/ „
MAS vocã DEVE
TER VINDO TRATAR A T...TICA... TICA?
DE OUTROS VOCêS A
ASSUNTOS, VIRAM?
CERTO?

Isso mesmo!

DO QUE vocã ELA AJUDOU MUITO O


M. AH... A TICA é ESTÁ FALANDO? CAIN E A MIM ENQUANTO
UMA MENINA MAIS NUNCA A VI ANTES. VOCÈS ESTIVERAM FORA.
OU MENOS DESTE
TAMANHO, E ELA
VOA...

ELA SAIU DO LIVRO


QUE vocãME veu,
PAI.

VOCÊ A VIU?
PENSEI QUE MEU NÃO VI.
PAI A CONHECERIA
PORQUE ELA SAIU DO
LIVRO QUE ELE ME
DEU.

MAs COMO
peNsei, A TICA é
INVISÍVEL EXCETO
PARA O CAIN E
PARA MIM. o
A TILA DESAPARECEU! ONDE, peL05 CÉUS,
ELA PODERÁ TER
120?

e ELA NÃO PARECE


ESTAR NO LIVRO,
TAMBÉM.

VOU PROCURAR NA5


TeRRA5 120 CASTELO
NOVAMENTE.

OH, DESCULPEM-ME...
MAJESTADES.

v055A ALTEZA,
e55e5 2015 e5TÃo,
REALMENTE...

5e DANDO BEM, NÃO?


ELA 5e FOI!

1-15

Que .50M,
NÃO?

grau tív
ik,As.
)
1

ELA NÃO ESTÁ EM


LUGAR NENHUM! EU QUERIA A
CHANCE ve
DIZER A ELA...

TICA, POR QUE VOCÊ-


DESAPARECEU ASSIM
DE REPENTE?

PELO
MENOS UMA
vepe2112A.
QUEM VOCÊS
ESTÃO
PROCURANDO?

ri

05 BANCOS I7E DADOS e5TÃO EM TOI705 05 LUOARES! 173


RURUNA, NÃO FIQUEI
NÃO é FIQUE NeFZVO5A1
PREOCUPADA
EDUCADO FICAR COM VOCÊ.
RINDO ASSIM!

ONDE você
ESTAVA?

eu ESTAVA
OCUPADA...

erzAçAs AO
PELO VISTO, TOPO O BANCO DE DAD05,
REINO PE KOP JÁ 5E 05 NEGÓCIOS
ACOSTUMOU A USAR OS ESTÃO MUITO MAIS
BANCOS PE PAPOS, Ni? EFICIENTES.

i
r
Met MeffilyáloiN7Wra."-C
",, ffi ~Ni

'‘"171411
0
14
144 1 0 41' moiº
41E

PeLo MUNDO AFORA,


EXISTEM PAÍSES ONDE 05
BANCOS DE DADOS 5ÃO
USA1705 PARA DIFERENTES
PROP651T05.

174 CAPÍTULO 6
BANCO De DADOS EM 1J50
SUPONHA QUE
POR EXEMPLO, em UM SISTEMA DE
ALGUNS PAiSES, BANCOS MOVIMENTAÇÃO
DE I7ADO5 SÃO USADOS DE CONTAS
EM BANCOS PARA POSSA SER
OERENCIAR AS CONTAS \\ COMPARTILHADO
DE POUPANÇA! POR VÁRIAS
PESSOAS...

`z2l Í BANCO
VOCÊ PODERIA
art.", o
FAZER RETIRADAS
DA SUA PRÓPRIA
CONTA,
Bem COMO
BANCOS COM TRANSFERIR
BANCOS DE 17A17051 DINHEIRO PARA A
CONTA DE OUTRA
PESSOA.

ISSO PARECE TÃO ALGUMAS VEZES,


PRÁTICO! SISTEMAS DE RESERVAS
DE PASSAGENS DE TREM
PAGAMENTOS UTILIZAM BANCOS DE
PODERIAM DADOS.
SER FEITOS
VIA BANCOS
DE DADOS!

LEMBRAM-5E DA LIÇÃO
COM UM BANCO DE SOBRE OPERAÇÕES
DADOS, RESERVAS COM BASE EM TRAVAS
PODERIAM SER FEITAS CBLOQuelosr
EM QUALQUER ESTAÇÃO.

•cRP►VP
EXATAMENTE.

05 BANCOS DE DADOS ESTÃO EM TODOS 05 LUGARES! 175


RESERVAS
SIM.
ESSA é UMA FUNÇÃO
NECESSÁRIA PARA
ERA SOBRE PERMITIR QUE MUITAS
CONTROLE PE PESSOAS FAÇAM
TRANSAÇÕES USANDO RESERVAS
TRAVAS, CERTO?

EM DIFERENTES
ESTAÇÕES AO
OS BONS mesmo TEMPO SEM
E VELHOS PERMITIR excesso
ANDY E
BECKY DE LOTAÇÃO.

CORRETO! E BANCOS PE
E SEGURANÇA E BANCO
PAPOS DE BANCOS COM
MEDIDAS CONTRA DE
DADOS CERTEZA PRECISARÃO
FALHAS TAMBéM DESSAS FUNÇÕES.
TÊM Que SER
USADAS.

MEDIDAS SERIA HORRÍVEL


CONTRA SE ALGUÉM
FALHAS RETIRASSE TODO
SEU DINHEIRO,
NÃO É VERDADE?

EU FICARIA
FALIDA SE MINHA
OS BANCOS DE PAPOS CONTA FOSSE NÃO Só ISSO, 05 BANCOS PE
SÃO ÚTEIS EM MUITOS ESVAZIADA. PAPOS ESTÃO EM TOPOS 05
LUGARES, NÃO? LUGARES.

VOCÊ TEM TOPA


A RAZÃO.

176 CAPÍTULO 6
BANCOS DE DADOS E A WEB
UM SISTEMA
DE BANCO DE
DADOS LIGADO À
WEB.

UAU, EU
/ ESTAVA
QUERENDO
ESTE LIVRO.
NO MUNDO TODO, AS
PESSOAS PODEM COMPRAR ALIÁS, VOU
VÁRIAS COISAS EM PÁGINAS COMPRÁ-LO.

NA WEB.

POR EXEMPLO, ENTÃO... VOCÊ NÃO TEM


ISSO PARECE TÃO VOCÊ PODE QUE FAZER UMA LISTA
FÁCIL! COMPRAR DE TÍTULOS e IR ATé UMA
QUALQUER LIVRO LIVRARIA!
Que QUISER...
EU APOIO
TOTALMENTE UM
5I5TEMA A55IM!
GIETA DE
NAVEGANDO NUMA COMPRAS
PÁGINA DA WEB. PO REI
o Oo

VAMOS
VER,
MARAVILHOSO! QUAL O
PRÓXI-
MO?

05 BANCOS DE DADOS E5TÃO EM TOPOS 05 LUGARES! 177


\:\\\\\\\:\s,
. ri \\\\\‘ 1 11, f(//
QUANDO FOR
PROCURAR
POR UM CERTO PE5421/15A PA 77CA
PESQUISA pie
LIVRO QUE LIVROS >IB.>
VOCÊ TENHA EM
MENTE,
I CATEGORIAS
C.
(PALAVRA-CHAVE)

BASTA DIGITAR UMA


PALAVRA-CHAVE
NUM NAVEGADOR DA PE5QUI.f.
DA TILA '
INTERNET.

PIGA UMA
CATEGORIA PE
ALGUM LIVRO QUE
VOCÊ PROCURA.
ENTÃO DIGITE
FRUTA NESTE
(PALAVRA-CHAVe
CAMPO DE
PALAVRA-CHAVE. IFruta

BOM, DEIXE-ME VER... ACHO


QUE SERIA "FRUTA", IMAGINO.

PESQUISA DE UM COMANDO SQL é


ESSA PALAVRA-CHAVE LIVROS GERADO NO SERVIDOR,
Ê ENVIADA NUMA EU SUPONHO.
REQUISIÇÃO HTTP.
I CATEGORIAS

e PALAVRA-CHAVE)
Fruta

UM COMPUTADOR QUE
RECEBE UMA REQUISIÇÃO
E A PROCESSA é UM
5,R'V/ DOR.

178 CAPÍTULO 6
( SERVIDOR 12? BANCO DE

SERVIDOR
SQL DA1205

SELECT nome_produto
FROM produtos
WHERE nome_produto
BANCO DE
.e. LIKE '%frutaW; 0 0 0
0 0 0 PAPOS

QUE LEGAL!

p, PESQUISA DA TIDA
LIVROS .” --

. _
9
ENTÃO, ese COMANDO
eNTÃo,
SQL é ENVIADO PARA O
BANCO DE DADOS PARA
CONSULTA.

POR SUA VEZ, O BANCO DE TÁ.


DADOS RETORNA 05 DADOS
DOS PRODUTOS COMO
RESULTADO.

SERVIDOR
DE BANCO
DE DADOS

OS BANCOS DE DADOS ESTÃO EM TOPOS 05 LUGARB5i 17q


SERVIDOR

O SERVIDOR CRIA UMA esw, é A RESPOSTA HT7P.


PÁGINA WEI3 Que CONTÊM
ESSE RESULTADO DE
PESQUISA e A ENVIA PARA
O USUÁRIO. .e.

SERVIDOR PE BANCO DE 7
SERVIDOR PAPOS
DADOS

.0.
EXTRAÇÃO

ROTEADOR

RESULTADOS
DE PESQUISA

ROTeADOR
7

,V,7.7;fj
CI

O Par.,

4v,
i'

180 CAPÍTULO 6
QUANDO 5E COMPRA UM
é A55IM QUE VOCÊ PRODUTO, UM PROCE550
PODE VER UMA L15TA SEMELHANTE ACONTECE.
DE LIVROS EM UMA
PÁGINA WEB.
LIA ,
ADORARIA
COMPRAR
ess

NE55E CA50, UM COMANDO


5QL é EXECUTADO PARA ENTÃO... 5QL MAI5
REDUZIR A QUANTIDADE UMA VEZ.
DE ITENS EM E5TOQUE NA
TABELA DE ESTOQUE,
O QUE é
ISTO?

PRINCESA
E ENTÃO O ITEM (Rue 1
RURUNA,
FOI COMPRADO é
QUER DAR
ACRESCENTADO NA
UMA OLHADA
TABELA DE REMESSA.
NI550?

O QUE é QUANDO
SERÁ QUE
O QUE PODERIA 1550? MEU PAI
SER? PUBLICOU
1550?

AAARGH!!
AMO
FRUTAS RECOMENDADO:
AMO FRUTAS
PELO REI DE KOD

ALGUMAS vezes
OH ENCONTRAMOS C015A5
Beabí CéUS! ESTRANHAS, NÃO?

7in
05 BANCOS DE DADOS ESTÃO EM TODOS 05 LUGARES! 181
IMAGINE MUITOS CLIENTES
ACESSANDO UMA LIVRARIA
NA WEB AO MESMO
TEMPO.

LIVRARIA NA
MESMO QUE TRAVAS WEB
E FUNÇÕES DE
SEGURANÇA ESTEJAM
PROTEGENDO
TOTALMENTE O BANCO DEVE SER -----
MUITO
DE DADOS, PROCESSAMENTO.

NESSE CASO,
A CARGA DE SIM, A CARGA é DISTRIBUÍDA ENTRE
PROCESSAMENTO DIVERSOS SERVIDORES, POR
É DIVIDIDA ENTRE EXEMPLO, UM SERVIDOR WEB E UM
UMA SÉRIE DE SERVIDOR De APLICAÇÕES.
SERVIDORES

o
VOCÊ QUER DIZER SERVIPOR
PE APL-1-
Que 5e USA MAIS DE cAções
UMSERVIDOR?

Isw! e UM SERVIDOR DE
UM SERVIDOR WEB é APLICA4"õ5 FICA ENCARREGADO
AQUELE RESPONSÁVEL DE COMPOR OS COMANDOS
POR CRIAR AS PÁGINAS 5ERVIPOR
SQL, ENTRE OUTRAS COISAS.
WEB
WEB, CERTO?

PÁGINA
WEB

16Z CAPÍTULO 6
BANC05 17E PAI205 715TRIBIJ005

A CARGA Pope 5ER é UM BANCO


DISTRIBUÍDA ENTRE DE DADOS
SERVIDORES DE GERENCIADO POR
BANCO DP PA1705? UMA 5éRIE DE
SERVIDORES.

SIM, E QUANDO 1550


ACONTECE, DIZEMOS QUE
Tem05 UM BANCO 17'
PAPOS 121577ZIBUIDO.

0135ERVE, NO ENTANTO,
QUE ESSES SERVIDORES
TÊM QUE AGIR COMO
5E FOSSEM UM ÚNICO
BANCO DE DADOS.

é BEM PRÁTICO QUE UMA


5égie DE SERVIDORES
POSSA AGIR COMO 5E
Fo55e UM ÚNICO BANCO
DE DADOS.

1550 POSSIBILITA
QUE CADA SERVIDOR
PROCESSE DE ACORDO
COM SUA CAPACIDADE.

05 BANCOS DE 17A1705 ESTÃO EM TODO5 05 LUOARE51 183


MUITOS
SERVIDORES
OFERECEM
PROTEÇÃO EXTRA
CONTRA FALHAS,
TAMBÉM!
Nocaute
TI-CA!
TI-CA!

ISSO SIGNIFICA QUE 0


SISTEMA DO BANCO DE
DADOS COMO UM TODO
NÃO VAI CAIR, MESMO SE
A FALHA OCORRER EM
ALGUNS SERVIDORES NO
SISTEMA.

MAS LEMBREM-SE: é NECESSÁRIO


CERTO CUIDADO PARA LIDAR COM
O SEU BANCO pie DADOS DESSA
FORMA.

ALÉM DISSO, TODOS


OS SERVIDORES DEVEM
SER ATUALIZADOS
APROPRIADAMENTE CA50
OCORRA QUALQUER
PROBLEMA NA REDE.
QUANDO UMA TRANSAÇÃO
É EFETIVADA, VOCÊ DEVE
GARANTIR CONSISTÊNCIA EM
TODO SEU BANCO DE DADOS
DISTRIBUÍDO.

184 CAPÍTULO 6
PROCEDIMENTOS ARMAZENADOS E GATILHOS

UMA REDE é ISSO! é Ar QUE 05


OBRIGATÓRIA EM PROCEDIMENTOS
QUALQUER AMBIENTE ARMAZENADOS
ONDE UM CONJUNTO CSTORED
DE SERVIDORES é PROCEDURES) VÃO
USADO. aTEIS;

ELES SÃO CRIADOS ÀS VEZES


PARA AJUDAR A REDUZIR A
SOBRECARGA NA REDE.

EM OUTRAS PALAVRAS,
ARMAZENAR NÃO SIGNIFICA
COLOCAR NA MEM6RIA?

SIM!

PARA REDUZIR A SOBRECARGA


NA REDE, opegAções
FREQUENTEMENTE USADAS
PODEM SER ARMAZENADAS EM
BANCO DE DADOS.

OPERAÇÕES
FREQUENTEMENTE BOM, JÁ Que ESTAMOS
USADAS, VOCÊ FALANDO SOBRE
visse...Que TIPO DE OPERAÇÕES PARA
OPERAÇÕES SÃO ESSAS, COMPRAR UM LIVRO,
EU me PERGUNTO. SUBTRAIR DA CONTA DE
ESTOQUE NA TABELA DE
ESTOQUE e ADICIONAR
DADOS NA TABELA DE
REMESSA,

H UMMM?

ELAS NÃO SÃO


OPERAÇÕES
COMUNS?

05 BANC0512E17A1705 ESTÃO EM TOPOS 05 LUARES! 185


OPERAÇÕES QUE TENHAM
DE PROBABILIDADE DE SER
FATO. USADAS FREQUENTEMENTE
COMO PROCEDIMENTOS

PODEM SER
ARMAZENADAS NO BANCO
DE DADOS, DE ANTEMÃO!

E O NO550
SE PREPARARMOS TRABALHO TAMBÉM.
UM PROCEDIMENTO
ARMAZENADO, NÃO ENTENDI.
-regemos QUE CRIAR
UM COMANDO SQL

CADA VEZ QUE


QUISERMOS REDUZIR
O ESTOQUE e
PROCESSAR UMA
OPERAÇÃO DE ENVIO.
DESSA FORMA, A
CARGA OPERACIONAL AH, SIM, VOCÊ
NA REDE é REDUZIDA. TEM RAZÃO!

ALÉM DISSO, VOCÊ SABE,


HÁ PROCEDIMENTOS
ARMAZENADOS QUE.
SÃO AUTOMATICAMENTE
INICIADOS.

AUTOMATICAMENTE?

166 CAPÍTULO 6
QUANDO 05 DADOS SÃO GATILHO...
ATUALIZADOS, POR EXEMPLO, 1550 é CHAMADO DE
UM PROCEDIMENTO GATILHO CTRIeGER).
ARMAZENADO pope INICIAR
AUTOMATICAMENTE. AH, TÁ!

PORQUE ELE FAZ O 5eRIA ÓTIMO se, DE


QUE UM GATILHO De FATO, AO FAZER UM
UMA ARMA FAZ! PEDIDO E ATUALIZAR
O BANCO De DADOS

OR Que EU"
TAMBéM ESTOU
OM ESTA ROUIPA.
,
•.` ' W~

AUTOMATICAMENTE
LANÇASSEM
UMA OPERAÇÃO
PARA REDUZIR
O ESTOQUE E
PREPARAR O
ENVIO.

O SIMPLES FATO DE
COMPRAR UM LIVRO CRIA
UM MONTE DE TRABALHO
NOS BASTIDORES, NÃO
é?
APERTE O GATILHO e UMA
BALA SERÁ DISPARADA.
ATUALIZE 05 DADOS e UM
PROCEDIMENTO ARMAZENADO
é ATIVADO.

OS BANCOS DE DADOS ESTA() EM TOPOS 05 LUGARES! 187


DE NO55A PARTE,
EXATAMENTE. VERDADE. PRECISAMOS
APRENDER MAIS
SOBRE Isso, PASSO
EMBORA, NA MAIORIA A PAS50.
DO5 CASOS, O BANCO
DE DADOS P055A NÃO
SER VISTO

GUANDO VOCÊ "4411spdAt


COMPRA UM LIVRO
NA INTERNET.
oiake, d41 VOCÊ 00
ACHA, CAIN?

SIM, CONCORDO, r
CERTO!
PRINCESA. g

A TICA NO5 AJUDOU NÃO ESQUEÇAM QUE


A APRENDER COMO BANCOS pie DADOS SÃO
U5AR UM BANCO DE A MANEIRA PRINCIPAL
DADOS, E PODEMOS DE ORGANIZAR
IR EM FRENTE A CONVENIENTEMENTE seus
PARTIR DAQUI. DADOS.

r--
1 1 I 1 1 111111111! 1 1 1 1 1 1

VAMOS FAZER
PARECE ÓTIMO! EU O MELHOR!
PROMETO. USANDO
BANCOS DE DADOS,

51-1-1-Mil

VOU CONSTRUIR UM
PA15 MARAVILHOSO
ONDE TODOS
POSSAM GOZAR DE
UMA FORMA DE VIDA
PRODUTIVA.
'\\
VOCÊS D015 50-
VOCÊ.S
PROGREDIRAM COM
COMEÇARAM MUITO... CERTEZA..
DO QUE VOCÊ
RECENTEMENTE A ENTENDER ESTÁ FALANDO?
05 MECANISMO5 DE UM
515TEMA DE BANCO DE
MA5 HÁ TANTA VOCÊ VAI FICAR
DADOS. COISA QUE CONOSCO, NÃO
AINDA NÃO
APRENDEMOS! VAI, TICA?
MA5 TENHO CERTEZA
DE QUE FICARÃO BEM
50ZINH05.

DESCULPEM,

NÃO POSSO.

TENHO MAIS
MEU TRABALHO PE550A5 PARA
VISITAR.
AQUI ESTÁ FEITO.

VOCÊ-5 SABEM, HÁ MUITA5


PE550A5 QUE QUEREM
APRENDER SOBRE BANCOS
DE DADOS!

AFINAL, EU sou...

ENTÃO VOCÊ VAI VI5ITAR


MAIS ALeUéM QUE
ABRIU UM LIVRO SOBRE
BANCOS DE DADOS?

05 BANCOS DE DADOS E5TÃO EM TODOS' O LUGARES! Isq


FADA PO S EU 56 VIM me
DESPEDIR HOJE.

BANCO S
PADO SI

7417,44,1
MA5 NÃO PUDE
EVITAR FAZER MAIS
Que iso.

ee TEMPO QUE eu
//
TICA, ESPERE!
pAsei COM VOCÊ5
FOI CURTO, MA5 Feto

EU TENHO
QUE...

TICA FIQUE!

190 CAKTULO 6
TEMOS QUE.
IMPLEMENTAR O
NÃO GOSTO CONHECIMENTO
DE VER VOCÊ QUE A TICA NO5
TÃO TRISTE,
OFERECEU
PRINCESA.
ESTÁ INDO BEM SEU
LIVRO SOBRE BANCOS
DE DADOS, PRINCESA?

TÃO FOFINHO...
VOCÊ QUER CLARO!
DAR UMA é UMA BOA
SIM! OLHADA? IDEIA FAZÊ-LO
EM FORMA DE
QUADRINHOS.
EU ESTOU
FACILITANDO AS
COISAS PARA TODO E os
MUNDO ENTENDER. DESENHOS 170
CAIN ESTÃO
EXCELENTES.

e OLHE!

1q2 CAPÍTULO 6
FALANDO DO CAIN, 0
REI ESTÁ ESPERANDO
POR VOCÊ PARA
CONVERSAR 50BRE
05 PREPARATIVOS
DO CASAMENTO.

MEU PAI ESTÁ


ESPERANDO?

TUDO BEM. CU JÁ
ESTOU INDO. ERA UMA VEZ,

UM PEQUENINO PAÍS
CHAMADO REINO DE
KOD.

ÓTIMO.

UM DIA, DE DENTRO
DE UM LIVRO ANTIGO •
SOBRE BANC05 DE
DADOS,

vr)9
g?so
\Ao
o

SURGIU UMA
MINÚSCULA MENINA
CHAMADA...

FIM
BANG05 DE DA1205 NA INTERNET
Bancos de dados são usados para muitos propósitos diferentes, como para sistemas de
reserva de poltronas em trens e de depósitos bancários. Elas são indispensáveis na vida
cotidiana e nas operações comerciais. Como eu mostrei para a Ruruna e o Cain, sistemas de
bancos de dados com base na web são comuns também. Em um sistema com base na web,
o protocolo de comunicações usado é o Protocolo de Transferência de Hipertexto (HTTP). O
software servidor sendo executado em um servidor web espera por uma requisição de um
usuário. Quando uma requisição de usuário (requisição HTTP) é enviada, o software res-
ponde a ela e retoma uma página correspondente (resposta HTTP).
Uma página web consiste em arquivos de texto em formato HTML. Outros arqui-
vos especificados por URLs (Uniform Resource Locators - Localizadores Uniformizados de
Recursos) são embutidos na página para apresentar informações, como imagens.

CLIENTE wee SERVIDOR wee

REQUISIÇÃO HTTP

RESPOSTA HTTP
PÃeINA
WEB

Quando um banco de dados é usado em conjunto com uma página web, um servidor
de banco de dados é adicionado ao sistema mostrado acima. Esse sistema pode ser con-
figurado em três camadas e é chamado de sistema cliente/servidor de três camadas. Esse
sistema consiste em uma camada de apresentação, uma de lógica e uma de dados.

CAMADA DE GAMADA DE DADOS

SERVIDOR DE
BANCO DE PAP05

I ROTEAPOR

INTERNET

ROTEAPOR

CAMADA PE APRESENTAÇÃO

CLIENTE I—

1q4 CAPÍTULO 6
A camada de apresentação recebe entradas de usuário, como condições de consulta,
que precisam ser passadas para o banco de dados. A camada de apresentação também
processa resultados de consultas recebidas pelo banco de dados para que eles possam ser
exibidos. Uni browser (como o Internet Explorer ou o Firefox) funciona como uma ferra-
menta de apresentação para o usuário.
A camada de lógica efetua o processamento dos dados. Essa camada é onde os
comandos SQL são compostos. Os processos executados aqui são escritos em uma ou mais
linguagens de programação. Dependendo dos conteúdos e da carga dos processos, diversos
servidores, tal como uni servidor de aplicações e um servidor web, podem ser usados para
lidar com o processamento.
A camada de dados processa dados em um servidor de banco de dados. Os resultados
de consultas são retornados do banco de dados em resposta a consultas SQL.

Faz consultas ao Gerencia o


banco de dados e banco de dados
processa os dados CAMADA ve GAMAVA PE PAPO5

SERVIDOR PE
BANCO PE PAPOS

5ERVIPOR

ROTEAPOR

INTERNET

ROTEAPOR Recebe entrada de


usuário e exibe
resultados

GAMAVA PE APRESENTAÇÃO

CLIENTE

A configuração de cliente/servidor de três camadas é um sistema flexível e simples.


Por exemplo, quando modificar ou acrescentar algo em uma aplicação, você pode separar
a parte que deseja editar como uma camada de lógica. Na camada de apresentação, você
pode usar um browser, eliminando a necessidade de instalar um programa separado.

05 BANCOS DE PAPOS ESTÃO EM TOPOS OS LUGARES! 1q5


Torna mais fácil a
adição e modificação
de funções
CAMADA DE LÓGICA CAMADA DE DADOS

SERVIDOR PE
BANCO DE PAPOS

I I 1
SERVIDOR

1 ROTEAPOR

INTERNET

ROTEAPOR
.., Um browser pode
ser usado aqui para
efetuar operações

GAMADA PE APRESENTAÇÃO

CLIENTE

U50 DE PROCEDIMENTOS ARMAZENAI705


Em um sistema com base na web, muito tráfego na rede pode ser um problema. Por sorte,
pode-se manter lógica de programação dentro do próprio servidor de banco de dados como um
procedimento armazenado (stored procedure).
Procedimentos armazenados nos servidores de bancos de dados ajudam a reduzir a carga
na rede, porque eliminam a necessidade de transferências frequentes de consultas SQL. Além
disso, armazenar procedimentos também toma mais fácil desenvolver aplicativos, uma vez que
processos padronizados podem ser encapsulados em procedimentos fáceis de usar. Na realidade,
os procedimentos armazenados são apenas um tipo especial de uma categoria mais abrangente
chamada de programas armazenados. Os outros dois tipos de programas armazenados são as
funções armazenadas e os gatilhos (triggers).

TIPOS DE PRO&RAMA5 ARMAZENADOS

Programa Definição

Procedimento armazenado Programa que não retorna valores após o processamento

Função armazenada Programa que retorna valores após o processamento

Gatilho Programa que é executado automaticamente antes e depois


de operações no banco de dados

QUESTÕES
Você consegue responder às próximas questões? As respostas corretas estão na página
205.

121
Num sistema cliente/servidor de três camadas, em qual delas o banco de dados opera?

1q6 CAPÍTULO 6
Q2
Em um sistema cliente/servidor de três camadas, em qual delas ocorrem as interações
com o usuário e onde os resultados são apresentados?

O QUE é UM BANCO DE DADOS DISTRIBUÍDO?


Em um sistema com base na web, o processamento é distribuído entre um servidor de
banco de dados, um servidor de Internet e um programa navegador, cada um responsável
por diferentes tarefas. Esse tipo de sistema distribuído permite flexibilidade e diminui a
capacidade de processamento necessária em cada servidor.
Mas um servidor de banco de dados por si só pode ser distribuído entre diversos ser-
vidores. Servidores de bancos de dados distribuídos podem estar em locais diferentes ou na
mesma rede. Observe, no entanto, que um banco de dados distribuído pode ser tratado como
se fosse uni banco de dados único. Se o banco distribuído parece ser um servidor único, o
usuário não precisa se preocupar com a localização dos dados ou com transferências.
Um banco de dados pode ser distribuído horizontalmente e verticalmente.

DISTRIBUIÇÃO HORIZONTAL
Distribuição horizontal utiliza diversos servidores de banco de dados em colaboração iguali-
tária. Cada servidor de banco de dados pode usar dados dos outros e, por sua vez, cada um
está disponível para todos os demais. Essa estrutura é utilizada para sistemas de bancos de
dados extendidas que operam separadamente em departamentos isolados.
Um banco de dados distribuído horizontalmente é um sistema projetado para ser
resistente a falhas, uma vez que problemas num servidor não afetarão a operação do banco
como um todo.

SERVIDOR A SERVIDOR B

Mesmo quando uma


t falha ocorre no
servidor no Depto. A,

ROTEAPOR

I ROTEADOR

Os outros servidores
continuam a operar
12_ II a
I
normalmente.
SERVIDOR C SERVIDOR D

OS BANCOS PE DADOS ESTÃO em TODOS OS LUGARES! 1q7


1:715TRIBUIÇÃO VERTICAL
Distribuição vertical atribui diferentes funções para diferentes servidores de banco de dados.
Um deles funciona como servidor principal e executa um papel central, enquanto outros estão
encarregados de tarefas de processamento enviadas a eles. Um banco de dados distribuído
verticalmente facilita o gerenciamento do servidor principal, embora ele possa receber uma
grande carga. Um exemplo de distribuição vertical incluiria um servidor único atendendo toda
uma empresa e servidores individuais operando em cada um de seus departamentos.

SERVIDOR A
SERVIDOR
PRINCIPAL
Este servidor
executa todo
o sistema.

I ROTEADOR

I ROTEAPOR

I
5ERVIDOR SERVIDOR C

PARTICIONAMENTO PE PAP05
Em um banco de dados distribuído, os dados ficam espalhados entre diversos servidores de
armazenamento. Deve-se considerar cuidadosamente como dividir os dados. Eles podem
ser separados das seguintes formas.

PARTICIONAMeNTO HORIZONTAL
Um particionamento horizontal é uma divisão tendo linhas como unidade. Linhas resultantes
dessa separação são distribuídas por vários servidores. Este tipo de particionamento é muito
utilizado quando dados que podem ser ordenados em grupos relacionados, frequentemente
acessados ao mesmo tempo, são armazenados em um mesmo servidor.
REGIÃO A REGIÃO
DEPARTAMENTO ADMINISTRATIVO DEPARTAMENTO ADMINISTRATIVO
Nome do Preço
produto unitário Distrito Responsável

1q8 CAPÍTULO 6
PARTICIONAMENTO VERTICAL
Um particionamento vertical é o que divide dados utilizando colunas como unidade. Colunas resul-
tantes dessa divisão são distribuídas entre servidores. Por exemplo. uma partição vertical pode ser
utilizada para gerenciar e unir bancos de dados independentes que pertençam a departamentos
diversos como o de mercadorias, o de negócios internacionais e o de exportação.

DEPARTAMENTO Nome do Preço DEPARTAMENTO


Distrito Responsável DE NEGÓCIOS INTERNACIONAIS
DE MERCADORIAS Produto Unitário

1— —

EVITANDO INCON5I5TâNCIA5 COM eFe-rivAçÃo eM DUAS FA5E5


Bancos de dados em servidores diferentes num sistema distribuído podem ser configurados
para agir como se fossem um único banco no ponto de vista dos usuários. Para conseguir
isso, vários passos têm que ser seguidos para lidar com o fato de que os dados estão na
realidade espalhados entre diversos servidores.
Primeiro, sempre que ocorrer efetivação, os dados em todos os servidores precisam ser
atualizados de forma consistente.
Em um sistema de banco de dados distribuído, o método-padrão de efetivação pode
fazer com que um dos servidores seja atualizado e outros não, como mostrado abaixo. Isso
é uma violação da propriedade de atomicidade das transações. uma vez que elas estariam
sendo encerradas não por uma efetivação (commit) nem por uma reversão (rollback). Isso
também faria com que o sistema de banco de dados como um todo se tornasse inconsistente.
U5UÁRIO

SERVIDOR A SERVIDOR R

OPERAÇÃO
PE ATUALIZAÇÃO
OPERAÇÃO
PE ATUALIZAÇÃO

EFETIVAÇÃO

EFETIVAÇÃO

Dessa forma, uma efetivação em duas fases é adotada em um sistema de banco de


dados distribuído. Cria uma única operação de efetivação a partir de duas ações diversas.

OS BANCOS PE PAPOS ESTÃO EM TOPOS 05 LUGARES! 1PA


Uma operação de efetivação em duas fases envolve um coordenador e outros par-
ticipantes. Na primeira fase de uma operação desse tipo, o coordenador pergunta aos
participantes se a operação de efetivação é possível. Os participantes enviam urna men-
sagem OK se for o caso. Esse passo é conhecido como preparação. Na segunda fase, o
coordenador envia instruções para uma efetivação, e todos os participantes procedem de
acordo.

COORDENADOR

PARTICIPANTE PARTICIPANTE

OPERAÇÃO
PE ATUALIZAÇÃO
OPERAÇÃO
PE ATUALIZAÇÃO

ESTÁ ASSEGURADA?
ESTÁ ASSEGURADA?

OK
OK

EFETIVAÇÃO
CCOMMIT)

epervAçÃo
CCOMMIT)

Se qualquer ponto falhar em assegurar o procedimento de efetivação nessa operação


em duas fases, todos os participante recebem comandos para reversão. É por isso que os
bancos de dados em todos os servidores permanecem consistentes entre si.

COORDENADOR

PARTICIPANTE PARTICIPANTE

OPERAÇÃO
PE ATUALIZAÇÃO
OPERAÇÃO
PE ATUALIZAÇÃO

ESTÁ ASSEGURADA?
ESTÁ ASSEGURADA?

OK
OK

REVERTER
OZOLLE5ACK)

REVERTER
CROLLE3ACK)

200 CAPÍTULO 6
GluesTões
Tente responder às seguintes questões sobre efetivação em duas fases. As respostas estão na
página 205.

Q3
Em um esquema de efetivação em duas fases, quais instruções o coordenador dá
durante a primeira fase?

Q4
Em um esquema de efetivação em duas fases, quais instruções o coordenador dá
durante a segunda fase?

REPLICAÇÃO DE BANCO PC DADOS


Alguns bancos de dados distribuídos contêm um banco de dados em duplicidade, ou
réplica, que reduz a carga na rede. Essa prática é chamada de replicação. O banco de
dados primário é chamado de banco de dados principal, e a cópia é chamada de réplica. Há
diversos tipos de replicação.

SOMENTE LEITURA (READ-ONLY)


Uma réplica somente para leitura é criada e baixada do banco de dados principal no servi-
dor principal. Para alterar os dados, os usuários devem conectar-se ao servidor principal.

SERVIDOR PRINCIPAL
RÉPLICA
RÉPLICA

.10

OS BANC05 12E DADOS ESTÃO EM TO1705 05 LUGARES! 201


RePLICAÇÃO ATIVA EM TOPOS 05 SERVIDORES
Nesse método, o mesmo banco de dados principal é compartilhado por todos os servidores.
Atualizações em qualquer um dos servidores são feitas em todos os outros.

Operações feitas neste


servidor são executadas
em todos os outros.
1 Operações feitas neste
servidor são executadas
em todos os outros.
SERVIDOR
PRINCIPAL.

SERVIDOR A

Operações feitas neste


servidor são executadas
em todos os outros.

OUTRAS APLICAÇ 'õeS DE BANCOS DE DADOS


Essa seção final introduz tecnologias aplicadas relacionadas aos bancos de dados.

XML
A Linguagem Extensível de Marcação (XML) é cada vez mais popular como um método de
armazenamento de dados. O XML representa dados delimitando-os com tags. Já que essas
tags podem trazer informações sobre os dados que contêm, essa linguagem é útil para
armazenamento e recuperação de dados.
O XML é útil porque sua sintaxe estritamente estruturada facilita processos programa-
dos. Além do mais, o XML aparece em arquivos de texto (que são fáceis de editar) e pode
se comunicar com outros sistemas. Por essas razões, o XML é às vezes usado como um
método de representação de dados no lugar de um banco de dados.

202 CAPÍTULO 6
<?xml version="1.0" ?>
<produtos>
<fruta>
<codigo_produto>101</codigo_produto>
<nome_produto>Melão</nome_produto>
<preco_unitario>800</preco_unitario>
</fruta>
<fruta>
<codigo_produto>102</codigo_produto>
<nome_produto>Morango</nome_produto>
<preco_unitario>150</preco_unitario>
</fruta>
<fruta>
<codigo_produto>103</codigo_produto>
<nome_produto>Ma0</nome_produto>
<preco_unitario>120</preco_unitario>
</fruta>
</produtos>

BANCOS DE DADOS ORIENTADO A OBJETO


Um banco de dados relacional armazena dados em formato de texto em tabelas. No
entanto, ele pode ser inadequado quando se lida com certos tipos de dados. É aí que entra
um banco de dados orientado a objeto (BD00).
O método orientado a objeto utiliza objetos - conjuntos de dados e instruções sobre
como esses dados devem ser usados. Você pode ocultar os dados e expor apenas as ope-
rações sobre os dados para lidar com o objeto como um componente independente. Essa
técnica é chamada de encapsulamento.
Em um banco de dados orientado a objeto, cada objeto é representado com um identi-
ficador. Às vezes, um objeto é também chamado de instância.
Em um banco de dados orientado, você pode também gerenciar objetos compostos -
um objeto definido dentro de outro. Isso significa, por exemplo, que você pode armazenar
dados que consistem em uma imagem com texto como um único objeto. O banco de dados
orientado a objeto permite gerenciamento flexível de dados complexos.

RURUNA KOD
BANCO DE PAPOS REINO DE KOP
ORIENTADO A OBJETO PRINCESA
PERFIL

05 BANCOS PE PAPOS ESTÃO EM TOPOS 05 LUGARES! 203


Em um banco de dados orientado a objeto, vários conceitos podem facilitar o desen-
volvimento orientado a objeto. O modelo para objetos é chamado de classe. Por exemplo,
suponha que você tenha criado uma classe Maçã. Os objetos (instâncias) dessa classe
podem ser Maçã A, Maçã B e assim por diante. A classe Maçã permite a criação desses
objetos.

`J

Em um esquema orientado a objeto, uma classe pode também ter relacionamentos


hierárquicos. Você pode criar uma classe filha que tenha os mesmos dados e funções de
uma classe base. Esse relacionamento é chamado de herança. Você também pode dar
funções exclusivas à classe filha.
Por exemplo, a classe Maçã e a classe Laranja podem herdar os dados e funções
da classe Fruta, mas cada um deles tem seus próprios dados e funções únicas. Em um
esquema orientado a objeto, você pode usar relacionamentos hierárquicos para permitir um
desenvolvimento eficiente.

FRUTA

204 CAPÍTULO 6
RESUMO
• Um sistema de cliente/servidor de três camadas é um método de configuração de sis-
tema baseado na Internet.
• Um banco de dados age como uma camada de dados.
• Um sistema de banco de dados distribuído lida com bancos de dados que estão dispersos.
• Um método de efetivação em duas fases é usado em um banco de dados distribuído.

REPOSTAS
Q1 Camada de dados

Q2 Camada de apresentação

Q3 Preparação

Q4 Efetivar (commit) ou reverter (rollback)

COMENTÁRIOS FINAIS
Gostou de estudar bancos de dados? Você vai precisar aprender ainda mais antes que
possa dominar todos os aspectos para operar um banco de dados, mas o básico sobre
eles sempre é o mesmo. Entendendo profundadamente o básico, você pode identificar
dados significativos no mundo real e assim criar e operar bancos de dados. Você pode
adquirir habilidades avançadas sobre bancos de dados trabalhando sobre seu conheci-
mento fundamental. Boa sorte!

05 BANCOS PE DADOS ESTÃO EM TOPOS 05 LUGARES! 205


COMANDOS %21. USADOS COM
FReQUÊNCIA

CONSULTA BÁSICA

SELECT nome_coluna, .
FROM nome_tabela;

CONSULTA CONDICIONAL
SELECT nome_coluna, .
FROM nome_tabela
WHERE condição;

CONSULTA POR PADRÃO

SELECT nome_coluna, .
FROM nome_tabela
WHERE nome_coluna LIKE 'padrão';

CONSULTA ORDENADA

SELECT nome_coluna,
FROM nome_tabela
WHERE condição
ORDER BY nome_coluna;

TOTALIZAÇÃO E AGRUPAMENTO
SELECT nome_coluna, .
FROM nome_tabela
WHERE condição
GROUP BY nomes_colunas_para_agrupamento
HAVING condição_para_linhas_agrupadas

JUNÇÃO 2e TABELAS
SELECT tabela_nomel.nome_coluna, ...
FROM nomel_tabela, nome2_tabela, ...
WHERE tabela_nomel.nome_coluna = tabe7a_nome2.nome_coluna
CRIAÇÃO DE UMA TABELA
CREATE TABLE nome_tabela(
nomel_coluna tipo_de_dado,
nome2_coluna tipo_de_dado,

);

CRIAÇÃO DE UMA VISUALIZAÇÃO (VIEW)


CREATE VIEW nome_visualizacao
AS SELECT comando

EXCLUSÃO DE UMA TABELA REAL


DROP TABLE nome_tabelza;

EXCLUSÃO DE UMA VISUALIZAÇÃO (vem


DROP VIEW nome_visualizacao;

INSERÇÃO DE UMA LINHA


INSERT INTO nome_tabela(nome_colunal, .
VALUES (valorl, ...)

ATUALIZAÇÃO DE UMA LINHA


UPDATE nome_tabela
SET nome_coluna = valorl, .
WHERE condição;

EXCLUSÃO DE UMA LINHA


DELETE FROM nome_tabela
WHERE condição;

208 COMANDOS 5GIL. IJ5ADO5 COM FREQUÊNCIA


ReFeRâNciA9
Chen, P. P. 1976. "The Entity-Relationship Model: Toward a Unified View of Data,"
ACM Transactions on Database Systems 1 (1): 9-36.

Codd, E. F. 1970. "A Relational Model of Data for Large Shared Data Banks," Communications
of the ACM, 13 (6): 377-387.

Date, C.J. and Hugh Darwen. 1997. A Guide to the SQL Standard, 4th ed. Reading, MA:
Addison-Wesley.

Masunaga, Yoshifumi. 1990. Basics of Relational Database. Tokyo: Ohmsha.

Database Language: SQL, JIS X3005-1-4, 2002.

ISO/IEC 9075, Information Technology—Database Languages—SQL, 1992.

ISO/IEC 9075, Information Technology—Database Languages—SQL, 1995.

ISO/IEC 9075, 1, 2, 3, 4, Information Technology—Database Languages—SQL, 1999.

IT Engineers' Skill Standards—Technical Engineers (Database), Information-Technology


Promotion Agency. Japan.
ÍNDIGO
A SELECT. 93-97, 98, 105. 106, 113, DELETE (comando), 104, 116, 118, 119,
119,159 159
agrupamento. 110, 159
SET TRANSACTION, 158, 160 direitos de acesso, 19, 106,126-129.
ALL (comando). 159
UPDATE, 104, 116, 119, 159 141-142, 159-160, 167
atomicidade, 153-154
comentários, 30-31 distribuição horizontal, 197
AVG (coluna) função, 98, 99, 110
COMMIT (comando), 133, 137, 150, 154, distribuição vertical, 198
205 divisão de tabelas. Veja normalização
compartilhamento de dados, problemas DML (Data Manipulation Language). 106
B-tree indexação, 163 com. 12. 20, 21, 129,175 DROP TABLE/DROP VIEW (comando), 118
backup, 161 condição real, 52, 55-56, 59, 74 durabilidade, 153, 159-160
bancos de dados consistência, 153. 154-155, 184
definição. 6, 10, 15, 187
eficiência de, 3-4, 15, 19, 146, 174
consultas. Veja SQL; comandos SQL e
consultas full-match, 163
encapsulamento, 203
tipos de, 32-39 controle de acesso de usuários, 19. 106,
entidades, 52-54, 74
uso de, 19-21, 175-182 126-129, 141-142, 159-160, 167
entrada de dados, 21, 90-92. 103-104,
bancos de dados da Internet. Veja siste- controles de execução simultânea
106. 116
mas de banco de dados com base controle com base em trava. 131-137,
esquema conceituai. 81
na web 155-157. 167
esquema externo, 81
bancos de dados orientado a objeto controle otimista, 158
esquema interno, 81
(00DB). 203-205 controle timestamp, 158
esquemas, 81
banco de dados primário, 201-202 níveis de isolamento, 158
Extensible Markup Language (XML). 202
buffers, 161 controles com base em trava. 131-137,
extração de dados, 36-37, 39-47, 90-92,
155-157,167, 175-176, 182
95-99. 101-102, 106. 180, 202
c controle otimista. 158
camada de apresentação, 205 controle timestamp, 158
COUNT funções, 99-100.110 F
camada de dados, 194-196. 205
CREATE TABLE (comando). 103. 115-119 falhas de mídia, 161
camada de lógica, 194-196
CREATE VIEW (comando), 117 falhas no banco de dados. 161
campos, 27-28. 30, 34. 35, 48
criação de views. 117, 160 falhas no sistema, 161
cardinalidade, 74
curinga, 97, 108 forma desnormalizada, 62. 78-79
chaves
formas, 62-70, 81-82
estrangeiras, 44, 48, 72, 101
funções armazenadas, 196
primárias. 35, 44, 48, 65, 67, 72, 17
funções de conjunto, 98, 110
78-79, 101, 103, 115 dados conflitantes. 13, 17-18. 21, 60, 71,
funções de totalização, 98-100, 110-111
checkpoints, 161-162 116, 153, 158
colunas, 34. 84 dados corrompidos, 20, 154
comandos SQL dados duplicados, 11, 16, 18, 19. 21, 29 C
ALL, 159 dados inconsistentes, 153, 154. 159, gatilhos (triggers). 187, 196
COMMIT, 133. 137. 150, 154. 205 199-201 gerenciamento de dados de forma não
CREATE TABLE, 103. 115-119 dados perdidos, 20. 154 coordenada, 10
CREATE VIEW, 117 Data Control Language (DCL), 106 gerenciamento de dados uniforme, 19
DELETE, 104, 116, 118, 119. 159 Data Definition Language (DDL), 106 GRANT (comando), 159, 168
DROP TABLE/DROP VIEW, 118 Data Manipulation Language (DML). 106 granularidade, 157
GRANI 159, 168 Database Management System (DBMS). granularidade de trava, 157
INSERT, 104, 116. 119, 159 21 granularidade fina. 157
LIKE, 97,108 DBMS (Database Management System), granularidade grossa, 157
ORDER BY. 98 21 GROUP BY (cláusula), 110
REVOKE, 159, 160, 168 DCL (Data Control Language). 106
ROLLBACK, 136-137. 150, 153-154, DDL (Data Definition Language). 106
154, 205 deadlocks, 136. 158
hash função, 167
HAVING (cláusula), 111
HyperText Markup Language (HTML), 194 modelo entidade-relacionamento (E-R), P
HyperText Transfer Protocol (HTTP), 178, 50-55, 74-77, 81 particionamento de dados, 198-199
180,194
partição horizontal, 198
N partição vertical, 199
níveis de isolamento, 158 permissões. 19, 141-142, 159-160, 167
indexação por hash, 163 nomes de usuários, 141 permissões de usuários, 19, 106,
indices/indexação, 143-147, 162-164, normalização, 60-72, 78-81 126-129, 141-142, 159-160, 167
167 null, 30,108 pesquisa de padrões, 108
inner join, 115 primeira forma normal, 62-64, 66, 78-79
INSERT (comando), 104. 116, 119, 159 problemas no gerenciamento de dados
O
instância, 203 dados conflitantes, 13, 17-18, 21, 60,
objetos compostos, 203
International Organization for Standard- 71, 116, 153, 158
0008 (object-oriented databases),
ization (150), 124 dados corrompidos/perdidos, 20. 154
203-205
International Standard Book Number falhas em banco de dados, 161
operações
(ISBN), 45 dificuldade para alterar dados, 13, 14,
conjunto, 39-42
ISBN (International Standard Book 17, 18
diferença, 37, 39, 41
Number), 45 duplicidade de dados. 11, 16,18, 19,
divisão, 37, 43, 45
ISO (International Organization for Stan- 21, 29
extração de dados, 39-47
dardization), 124 dados inconsistentes. 153, 154, 159,
intersecção, 37, 39, 41
isolamento, 153, 155-158 199-201
junção (join), 37, 43, 44, 48, 165
dados compartilhados, 12, 20, 21,
produto cartesiano, 37, 39, 42
129, 175
J projeção, 36, 37, 43, 165
processamento com base em custo, 167
Japanese Industrial Standards 124 relacionais, 43-47
processamento com base em regras, 167
junção de tabelas, 44,101-102, 114-115 seleção, 37, 39, 43, 47, 48, 165
processamento de dados, 35-37, 47-48,
união, 37, 39, 40, 48
130, 159, 167, 182, 195-198
operações de conjunto, 39-42
projeto de banco de dados, 19, 26
operações de diferença, 37, 39, 41
leitura fantasma, 158 determinar as condições dos dados, 74
operações de divisão, 37, 43, 45
leitura não reproduzível, 158 modelo E-R (entidade-relacionamen-
operações de efetivação (commit) em
leitura suja, 158 to), 50-55, 74-77, 81
duas fases. 199-201, 205
LIKE (comando), 97, 108 normalização, 60-72, 78-81
operações de escrita, 130, 133-134, 159
linguagens de programação, 178, 180, passos para, 81, 84
operações de extração de dados, 36-37,
194, 202
39-47
linhas, 34, 84, 116 R
operações de intersecção, 37, 39, 41
logs, 148-149
operações de junção (join), 37, 43. 44, READ COMMITTED (transação), 158
48,165 READ UNCOMMITTED (transação), 158
M operações de leitura, 130, 133, 134, 159 recuperação de dados. 20, 147-152,
MAX (coluna) função, 99-100, 110 operações de projeção, 36, 37, 43,165 161-164, 167
mecanismos de recuperação de desastres, operações de seleção, 37. 39, 43, 47, recuperação de desastre, 20, 147-150,
20, 147-150, 161-164. 167 48, 165 161-164, 167
memória. Veja procedimentos armaze- operações de união, 37, 39, 40, 48 recursos em transações, 155
nados operações matemáticas. Veja operações registros, 27-28, 34, 48, 148-149
método de laços aninhados, 165 operações produto cartesiano, 37, 39, 42 relacionamento
método rolling forward. 149 operações relacionais, 43-47 conceito de. 54, 74
método sort merge, 166 operadores, 107 modelo E-R (entidade-relacionamen-
métodos de consulta, 93-97, 106, 108, operadores de comparação, 107 to), 50-55, 74-77, 81
112-115, 163. Veja também SQL operadores lógicos, 107 relacionamento hierárquico, 32, 33,
MIN (coluna) função, 99,110 ordenação. Veja funções de totalização; 39. 204
modelos de dados, 32-39 índices/indexação relacionamento muitos-para-muitos,
modelo de dados hierárquico, 32, 33, ORDER BY (comando), 98 55, 74, 75, 81
39, 204 otimização de consulta, 164-167 relacionamento um-para-muitos, 55,
modelo de dados relacional, 33-34, 35, otimizadores, 167 75, 81
39, 47, 48 outer join, 115 relacionamento um-para-um, 74, 81
REPEATABLE READ (transação), 158

212 1NDICE
replicação do banco de dados, 201-202 junção de tabelas, 44, 101-102, terceira forma normal, 62, 68, 69-70,
réplicas, 201-202 114-115 78-79, 81, 82
réplica somente leitura (read-only), 201 manipulação de dados, 90-92, 100, termos de banco de dados, 26-31
REVOKE (comando), 159, 160, 168 106, 116
right outer join, 115 métodos de consulta, 93-97, 106, 11
ROLLBACK (comando), 136-137, 150, 108.112-115, 163
unique, 30
153-154, 205 operadores de comparação, 107
UPDATE (comando), 104, 116, 119, 159
operadores lógicos, 107
usuários autorizados. 141, 159
otimização de consulta, 164-167
padronização de, 124
segunda forma normal, 62. 64. 66-69, V
pesquisa de padrões, 108
78-79. 82
subconsultas, 112-114 valores funcionalmente dependentes, 79
segurança de dados, 19, 127. 138-142,
visão geral de, 90-92, 106, 116, 124 valores transitivamente dependentes, 79
159-160. 161-164, 167. 176, 182,
WHERE (cláusula), 94-97, 106, 110,
184
SELECT (comando), 93-97, 98,105, 106,
119 w
SQL92/SQL99, 124
113, 119, 159 WHERE (cláusula), 94-97, 106. 110, 119
stored procedures, 185-188, 196
senhas, 141
strings caractere, 84, 108
SERIALIZABLE (transação), 155, 156, X
Structured Query Language. Veja SQL
158 XML (Extensible Markup Language), 202
(Structured Query Language)
servidores. 178-185, 194-197, 205
subconsultas, 112-114
servidores de aplicações, 182, 195
subconsulta correlata, 113-114
SET TRANSACTION (comando). 158. 160
SUM função, 99, 110
sistemas cliente/servidor em três cama-
das. 194-196, 197, 205
sistemas com base em arquivos. 3.10, T
16, 21, 32 tabela base, 160
sistemas de bancos de dados com base tabelas
na web, 177-182, 194-197 base. 160
sistemas de bancos de dados distribuídos bidimensionais, 34, 79
distribuição horizontal, 197 conceito de, 34, 39, 48
distribuição vertical, 198 criação. 57-59, 91-92, 103-105, 106,
operações de efetivação (commit) em 115-119
duas fases em, 199-201, 205 formas para, 62-70, 81-82
particionamento de dados. 198-199 junção, 44, 101-102, 114-115
replicação em, 201-202 múltiplas, 59
visão geral de, 183-184, 197-199, normalização de, 60-72, 78-81
205 normalizadas, 72, 91
sistemas resistentes a falhas, 184, 197 restrições em, 116
sobreposição de dados não-autorizada, views, 117, 160
140 tabelas normalizadas, 72, 91
SQL (Structured Query Language) tabulação. 34, 47, 57. Veja também
bancos de dados com base na web e, normalização
178-179, 195-196 tags de dados, 202
cláusulas usadas em, 94-97, 106, transações
110-111. 119 definição. 126-130
condições, 95-96, 101, 107-109 falhas em, 161
criação de tabelas, 91-92,103-105, operações de leitura/escrita. 130, 133,
106,115-119 134, 159
criação de views, 117, 160 propriedades de, 153-160
curinga, 97, 108 recuperação de desastre e, 149-150
funções de totalização. 98-100, trava compartilhada, 133, 155-156
110-111 trava exclusiva, 134-136, 155-156
GROUP BY (cláusula), 110 travamento em duas fases, 156-157
HAVING (cláusula), 111 taxa de acesso ao disco, 145

ÍNDICE 213
oe•rze O AUTOR
Mana Takahashi é formada pela Faculdade de Economia da Universidade de Tóquio, Japão. Ela é
uma escritora técnica ativa e publicou alguns livros sobre tópicos como Java, C, XML, Engenharia
da Informação e Administração de Sistemas.

ATUALIZAÇõe5
Visite http://www.novatec.com.br para atualizações, erratas e outras informações.

CONHEÇA MAIS GUIAS MANCA


A série The Manga Guide em português é uma co-publicação da Novatec Editora com a editora
americana No Starch Press e a editora japonesa Ohmsha, uma das mais antigas e mais respei-
tadas editoras de livros técnicos e científicos do Japão. Cada título desta coleção de sucesso é
produto do trabalho conjunto de um ilustrador, um roteirista e um acadêmico ou um profissional
especializado. O resultado é a versão que você tem em suas mãos.
Encontre mais Guias Mangá em sua livraria favorita, e saiba mais sobre a série em http://
www.novatec.com.br.

ELETRICIDADE

RELATIVIDADE

GWA MANGA

ANÁLI5E. ve
1,113E-RE- O POPE-R 205 BANCOS DADOS!

15500011

VAMOS PROJETAR
UM BANCO DE DADOS
DE VERDADE.

PRINCe5A? C CC-C9C9CC ,9 .9 C:9 CCCC


. . „. .

A PRINCESA RURUNA e CAIN TÊM UM PROBLEMA: e APLICAR O MODELO ENTIDADE-


SEU IMPÉRIO DE VENDA DE FRUTAS é UM RELACIONAMENTO PARA REPRESENTAR COM
AMONTOADO DE DADOS CONFLITANTES e PRECISÃO seus PRÓPRIOS DADOS
DUPLICADOS, E SEPARAR 05 MELÕES DAS MAÇÃS
e CONTROLAR PERMISSÕES DE USUÁRIOS E
E MORANGOS ESTÁ CAUSANDO MUITA DOR cie
UTILIZAR BLOQUEIOS PARA EVITAR CONFLITOS
CABEÇA. MAS 0 QUE ELES PODEM FAZER?
E DUPLICIDADE DE DADOS
ORA, CRIAR UM BANCO DE DADOS RELACIONAL,
e UTILIZAR SQL. PARA ATUALIZAR OU CONSULTAR
é CLARO, COM A AJUDA DE TICA, A FADA MÁGICA
DADOS e CRIAR RELATÓRIOS
DOS BANCOS DE DADOS. ACOMPANHE NO 6UIA
MANGÁ PE BANCOS DE DADOS COMO TICA E VOCÊ AINDA VAI APRENDER OS FUNDAMENTOS
ENSINA RURUNA E CAIN A CRIAR UM BANCO DE INDEXAÇÃO, SEGURANÇA, RECUPERAÇÃO DE
DE DADOS PARA OERENCIAR A5 VENDAS, DESASTRES, REPLICAÇÃO e MUITO MAIS.
MERCADORIAS E EXPORTAÇÕES DE SEU REINO.
VOCÊ APRENDERÁ COMO 05 BANCOS DE DADOS SE A SUA CABEÇA DÁ VOLTAS Só DE OUVIR
FUNCIONAM e O SIGNIFICADO DE TERMOS OUTRAS PESSOAS DIZENDO "BANCO DE DADOS",
COMO ESQUEMAS, CHAVE-5, NORMALIZAÇÃO e OU se você' SIMPLESMENTE se SENTE PERDIDO
TRANSAÇÕES. NUMA CONFUSÃO PE NÚMEROS e DADOS QUE
PARECEM ESTAR FORA DE CONTROLE, APRENDA
JUNTO COM RURUNA E CAIN VOCÊ VAI APRENDER JUNTO COM RURUNA E CAIN TUDO O QUE ELES
COMO: PRECISAM SABER NAS PÁGINAS DO 61/IA MANGÁ
DE BANCOS DE PAP05.
e EXTRAIR DADOS DE UM BANCO RELACIONAL
UTILIZANDO OPERAÇÕES RELACIONAIS E DE
CONJUNTO

Fique conectado:
twitter.com/novateceditora SBN 978 85-7522 163
facebook.com/novatec
alk• ‘•
www.novatec.com.br
III
Ohmsha 788575 221631

Você também pode gostar