Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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)
09-09515 CDD-005.7565
PREFÁCIO IX
1 1
O Que é UM BANCO PE DADOS? 1
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
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!
A COLHEITA
DESTE ANO FOI
MAIS ABUNDANTE
QUE NUNCA!
SE PELO MENOS
DESSE PARA
OTIMIZAR O
TRABALHO...
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.
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!
ENTÃO, O QUE
ELE. MANDOU
PRA MIM? E UMA CARTA.
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."
IZA5&
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Ê?
SIM...
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
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
KOLONE DIZ:
1550 MESMO.
"é UM
5I5TEMA
EFICIENTE",
C CADA MAS...
DEPARTAMENTO TEM
DADOS SEPARADOS.
DE vez EM
QUANDO
ELE CAUSA
PROBLEMAS.
100 G 1ZOG
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.
_/-50 57-Á
CERTO.
ESTRANHO...
PEPTO 12E DEPTO,
DEPTO. DE NES6C105 DE
MERGADORIA5 INTERNACIONAI5 EXPORTAÇÃO
O PReÇOI2A5
MAÇÃ5 E5TÁ
ERRADO...
CERTO.
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...
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?
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.
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?
111~1111111111~
11111111111111111111E 111.111~111
911111111111•11~ ~11.1111111111111
MUDE O PREÇO
DAS MAÇÃS DE
loo 6 PARA 120 O
REPTO. PC
REPTO. DE REPTO. PC
Ne&O.GIOS
MERCADORIAS EXPORTAÇÃO
INTERNACIONAIS
JÌ
m
TURISMO
j
Novos arquivos
precisam ser criados.
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.
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.
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.
TCHARAM!
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?
(((
VAMOS COMEÇAR A
CRIAR UM BANCO PE
PAPOS.
ESPERE UM
POUCO.
VAMOS DAR
OUUH... i O MÁXIMO.
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?
ffirj~
ZWA"
**IWIng eribh,~f
,/~~
if4lalk
1
O 2. MORANGO 1506
1° 3 MAÇÃ 1200
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&
OU SEJA, MESMO
QUE VOCÊ SAIBA
QUE O PREÇO
DE UMA FRUTA é
ÚNICO?
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
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
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.
é 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
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...
RELACIONAL?
* TCHARAM!
O QUE é UM BANCO PE DADOS RELACIONAL? 33
BANCOS PE DADOS R&LACIONAI5
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.
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,.
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.
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.
TOCA
AQUI/
1550 Aí!
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.
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.
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.
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.
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.
.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.
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.
PRODUTO CARTESIANO
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
SELEÇÃO
A operação seleção extrai linhas de uma tabela.
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".
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.
Cód. Dest. Exp. Nome Dest. Exp. Data Cód. Dest. Exp. Nome Dest. Exp.
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.
Cód. Dest. Exp. Nome Dest. Exp. Cód. Dest. Exp. Nome Dest. Exp.
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
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 6/3
25 10/3
1
Cód. Dest. Exp. Data Nome Dest. Exp.
• 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.
E?
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.
/\(
R/sc
R/sc
CÓDIGO DO
E ASSOCIAR PRODUTO
UMA ENTIDADE Nome Po
COM SUAS PRODUTO
PROPRIEDADES
RESULTA EM...
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
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
é 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
@ 800e X 1.100 =
@ 150e 880.000e
x
300 = 45.0006
\\
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
9 AH...
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!
DESCOBRIR AS
CONDIÇÕES
REAIS...
USANDO UM
MODELO
C-R...
TÁ BOM...
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
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.
-----
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
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!
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
PORQUE, 5E VOCÊS
RECEBESSEM LARANJAS
MANDARIM,
NÃO PODERIAM
ADICIONÁ-LAS
A ESSA TABELA
POR ELAS AINDA
NÃO TEREM
SIDO VENDIDAS.
CÓDIGO
PO NOME DO
PRODUTO PRODUTO
TABELA DE PRODUTOS
(SEGUNDA FORMA NORMAL Cl))
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...
.40
-a.
N
I CIPOrt4' "'"'
.1
`kalido, 44551""
-
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?
SEGUNDA FORMA
NORMAL.
VUPT
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?
/ /
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.
TABELA De VENDAS
HEIN?
(SEGUNDA FORMA NORMAL (3))
dir
ewo 7/3 23 IMPÉRIO ALFA
e'r 8/3 25 REINO DE RITOL
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
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\ \\-\
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"!
1104 10/3 12
1105 12/3 25
TABELA DE
PRODUTO5
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.
EXATAMENTE! ELA é
RELACIONAL.
11 12 REINO DE MINAM
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,
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.
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
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
PREÇO UNITÁRIO )
QUANTIDADE
J
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.
FRUTAS
Um membro da equipe gerencia vários clientes. Um cliente nunca será contactado por
mais de um membro da equipe.
Q2
Uma pessoa pode consultar diversos livros. Estes podem ser lidos por 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.
FORMA PeSNORMALIZAPA
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
ISBN Quantidade
Empréstimo
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.
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.
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.
• 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.
PROFESSORES
Q7
SZ CAPÍTULO 3
Q8
Q9
84 CAPÍTULO 3
4
VAMOS APIZENPER SOBRE 9Q11
ANDAR PELA
CIDADE me FAZ
LEMBRAR MINHA
INFÂNCIA.
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// • • "'
AAI!
O CAIN TEM
CUIDADO DE MIM...
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
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
1104 10/3 12
TABELA DE
1105 12/3 25 PRODUTOS
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.
VOCÊ
ESCREVERIA SELECT nome_produto
1550:
FROM produtos;
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?
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:
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!
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 ASSIM EXTRAÍMOS
MELÃO E LIMÃO!
ç'
R
VAMOS APRENDER SOBRE SQL! A7
1150 DE FUNÇÕES DE TOTALIZAÇÃO
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?
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!
COuNT PAPO<
,----
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
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
REINO DE MORANGO
1101 5/3 12 MINAMI 102 150 6 300
REINO DE LIMÃO
1105 12/3 25 RITOL 104 ZOO O 700
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?
nome_produto varchar(255), 4- -1
preco_unitario int,
r
PRIMARY KEY(codigo_produto)
);
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?
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.
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.
é, 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.
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 é 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.
NOT Não A NOT preco_unitario = 100 O preço unitário não pode ser 100 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
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
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.
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.
Q2
Para encontrar países em que a população seja menor que 1 milhão, extraia a tabela
abaixo.
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.
SELECT COUNT(*)
COUNT(*)
FROM produtos
WHERE preco_unitario>=200; 2
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.
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.
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?
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.
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.
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.
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);
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.
O WHERE quantidade>(1800)
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.
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.
Junção Junção
externa externa
à esquerda à direita
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.
Restrição Descrição
UPDATE produtos
1
Esse comando atualiza
SET nome_produto='cantalupo' melão para cantalupo.
WHERE nome_produto='melão';
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.
♦—
Depois que você criar a visualização Produto Caro, pode procurar por dados da mesma
forma que faria em uma tabela base.
É prático criar uma visualização quando se quer manter pública parte dos dados em
uma tabela.
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.
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.
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;
Q4
SELECT *
FROM destinos_exportacao
WHERE codigo_destino_exportacao>=30
AND populacao>100;
30 Reino de Sazanna 80
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%';
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
SUM(populacao)
1200
Q15
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);
Q19
Q20
021
UPDATE destinos_exportacao
SET populacao = 150
WHERE nome_destino_exportacao = 'Reino de Tokanta';
022
1Z4 CAPÍTULO 4
O QUE é UMA TRANSAÇÃO?
TEC, TEC,
00
51P
BIP
//////// 1"/"1///17/////
rec,
rec,
TEC...
rec, rec,
rec...
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.
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; •
• •
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.
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.
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
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
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.
TW-1
COMPARTILHADA
'Vtz•MP.'\\IP
CY•C''\)
cl
LEITURA? ESCRITA?
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__
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?
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).
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.
VEJA 1550.
NO55A TABELA
DE PRODUTOS. CÓDIGO PRODUTO Nome PRODUTO PREÇO UNITÁRIO
05 przeço9?
09 VALORES
NA COLUNA PE
PREÇO UNITÁRIO
ESTÃO TODOS
BAOUNÇA1705!
COMO POPE?!
ole/ww
-
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...
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.
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
BANCO DE
DADOS
‘N.
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.
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...
/HEN?
SIM, DE FATO.
PRINCESA...EU NÃO
LIGO MUITO. EM VEZ
DISSO, VAMOS DISCUTIR
NOSSO CASAMENTO.
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.
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!
TEM
MAIS...?
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
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
L
r
r ENTENDO.
LOGS, é.2
( O MAIS IMPORTANTE SÃO
REGISTROS DE VALORES ANTES
E 2EP01c, DE UMA ATUALIZAÇÃO
NO BANCO DE DADOS.
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.
APARENTEMENTE, ELE
TRANS - NÃO ESTÁ ENTENDENDO
O QUÊ? NADA... é UMA PENA.
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.
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.
HUMM
HUMMM...
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
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[
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.
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.
QUESTc3E5
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?
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.
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?
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
• 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.
Comando Resultado
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.
Pode-se também retirar privilégios. Para fazer isso, utiliza-se o comando REVOKE.
t ti PEPTO. PE
PEPTO. PE
N6c5G105
AAERCAPORIAS INTeRNALIONAl
4-
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.
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.
Início
T1 ...,
Início Efetivação
T2
Início Efetivação
T3
012
Como T1 deve ser processado?
013
Como T2 deve ser processado?
014
Como T3 deve ser processado?
Í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!
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.
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.
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.
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.
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?
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
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.
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
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
Q7 Vai aumentar
Q8 Vai diminuir
Q9
1210
011
Depto. de negócios
SIM SIM SIM SIM
internacionais
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
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.
vegvéeõe'.
Isso mesmo!
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?
OH, DESCULPEM-ME...
MAJESTADES.
v055A ALTEZA,
e55e5 2015 e5TÃo,
REALMENTE...
1-15
Que .50M,
NÃO?
grau tív
ik,As.
)
1
PELO
MENOS UMA
vepe2112A.
QUEM VOCÊS
ESTÃO
PROCURANDO?
ri
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
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.
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.
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.
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.
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.
VAMOS
VER,
MARAVILHOSO! QUAL O
PRÓXI-
MO?
PIGA UMA
CATEGORIA PE
ALGUM LIVRO QUE
VOCÊ PROCURA.
ENTÃO DIGITE
FRUTA NESTE
(PALAVRA-CHAVe
CAMPO DE
PALAVRA-CHAVE. IFruta
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.
SERVIDOR
DE BANCO
DE DADOS
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
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
0135ERVE, NO ENTANTO,
QUE ESSES SERVIDORES
TÊM QUE AGIR COMO
5E FOSSEM UM ÚNICO
BANCO DE DADOS.
1550 POSSIBILITA
QUE CADA SERVIDOR
PROCESSE DE ACORDO
COM SUA CAPACIDADE.
184 CAPÍTULO 6
PROCEDIMENTOS ARMAZENADOS E GATILHOS
EM OUTRAS PALAVRAS,
ARMAZENAR NÃO SIGNIFICA
COLOCAR NA MEM6RIA?
SIM!
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?
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
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Á!
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.
SIM, CONCORDO, r
CERTO!
PRINCESA. g
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.
AFINAL, EU sou...
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.
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.
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.
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.
SERVIDOR PE
BANCO PE PAPOS
5ERVIPOR
ROTEAPOR
INTERNET
GAMAVA PE APRESENTAÇÃO
CLIENTE
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
Programa Definição
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?
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
ROTEAPOR
I ROTEADOR
Os outros servidores
continuam a operar
12_ II a
I
normalmente.
SERVIDOR C SERVIDOR D
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.
1— —
SERVIDOR A SERVIDOR R
OPERAÇÃO
PE ATUALIZAÇÃO
OPERAÇÃO
PE ATUALIZAÇÃO
EFETIVAÇÃO
EFETIVAÇÃO
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)
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?
SERVIDOR PRINCIPAL
RÉPLICA
RÉPLICA
.10
SERVIDOR A
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>
RURUNA KOD
BANCO DE PAPOS REINO DE KOP
ORIENTADO A OBJETO PRINCESA
PERFIL
`J
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
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!
CONSULTA BÁSICA
SELECT nome_coluna, .
FROM nome_tabela;
CONSULTA CONDICIONAL
SELECT nome_coluna, .
FROM nome_tabela
WHERE condiçã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,
);
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.
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.
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.
Fique conectado:
twitter.com/novateceditora SBN 978 85-7522 163
facebook.com/novatec
alk• ‘•
www.novatec.com.br
III
Ohmsha 788575 221631