Você está na página 1de 22

Sumrio

Prefcio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
O que um Banco de Dados? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Por que precisamos de Bancos de Dados? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
O que est acontecendo no reino? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Os dados esto duplicados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Podem ocorrer conflitos nos dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Dados so difceis de atualizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Um Banco de Dados - a nossa soluo! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Como usar um Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
O que um banco de dados relacional? . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Terminologia de Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Bancos de Dados relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Tipos de modelos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operaes de extrao de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operaes de conjunto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operaes relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
O Banco de Dados relacional vence! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24
34
39
39
39
43
45
47
48
48

3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Vamos projetar um banco de dados! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
O modelo E-R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Normalizao de uma tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
O que o modelo E-R? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Como analisar um modelo E-R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 Caso: Relacionamento um-para-um . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Caso: Relacionamento um-para-muitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Caso: Relacionamento muitos-para-muitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Normalizando uma tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Passos para projetar um Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50
56
74
74
74
75
75
76
78
79
81
81
82

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

vi SumRIO

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

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

162
164
164
165
166
166
167
167
167

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

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

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

Sumrio vii

Bom, pelo
menos ela
parece
inofensiva...

Bom, acho
que sim...
sim...

No vamos falar de
mim! Vocs abriram
o livro para
aprender sobre
bancos de dados...

Ento
vamos
comear.
Para criar
um banco de
dados...

certo?

Sei que uma


pergunta muito
bsica...

Espere,
espere!!

Mas o que um
banco de dados?

Ah, vocs
no sabem
o que .
Vocs esto
lidando com
vrios valores e
nmeros, no?

os valores e
nmeros sobre
produtos,
clientes e
vendas

Cu l
ie

Produt
o

temos
administrado
criando
arquivos por
departamento.

nte

Sim, e temos
muitos
problemas...

Ah, ento cada


departamento por si, n.

sei, sei...

ven das

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 so, exatamente? Vamos ver em detalhes.
O Reino tem trs departamentos: o de mercadorias, o de negcios internacionais e o
de exportao. O de mercadorias mantm registro de todas as frutas produzidas no pas,
o de negcios internacionais responsvel pelos pases estrangeiros que so parceiros de
negcios do reino e o de exportao registra as quantidades de frutas que o reino exporta.

Os dados esto duplicados


A princesa Ruruna no est satisfeita com o sistema atual. Mas por qu? Cada departamento no reino gerencia seus dados independentemente. Por exemplo, o departamento de
mercadorias e o de exportao criam cada um arquivos para gerenciar dados sobre frutas.
Dessa forma, os dados so duplicados sem necessidade entre todos os departamentos.
Cada um deles gasta tempo inserindo seus dados, e ocupa espao desnecessrio em seus
discos rgidos, para s, depois imprimir formulrios de checagem, e todo esse processo
um desperdcio. Alm disso, dados mantidos em um departamento em particular nunca so
compartilhados eficientemente com os outros.
Os dados so duplicados.

Princesa
Ruruna

Depto. de
Mercadorias

16 Captulo 1

Depto. de
Negcios
Internacionais

Depto. de
Exportao

Princesa
Ruruna

No posSo
acesSar dados
de vendas.

Eu posSo
acesSar dados
de vendas.

banco de dados

Depto. de
Exportao

Depto. de
Negcios

Depto. de
Mercadorias

Internacionais

O novo sistema pode ter outros problemas tambm. O banco de dados pode ser usado
por muitas pessoas ao mesmo tempo. Suponha que algum no departamento de negcios
internacionais e algum no departamento de exportao 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.

Princesa
Ruruna

banco de dados

m?

ma?

Depto. de
Mercadorias

Depto. de
Negcios

Internacionais

Depto. de
Exportao

Voc tambm deve ter cuidado para no perder nenhum dado. Alm disso, o sistema
pode ficar fora do ar ou um disco rgido pode falhar, fazendo com que dados sejam corrompidos. O banco de dados precisa ter mecanismos para recuperar-se desses tipos comuns de
falhas.

banco de dados

20 Captulo 1

preciso estar
preparado para falhas.

cada registro contm


campos do mesmo tipo.

Cdigo do
Produto

Registro

ah, Entendi.

Nome do
Produto

Preo
Unitrio

Comentrios

Melo

800g

com sementes

Morango

150g

Ma

120g

Limo

200g

azedo

Pinho

100g

com casca

Caqui

160g

Pssego

130g

Kiwi

200g

Alta qualidade

campo

Por exemplo,
Cdigo do
Produto um
valor de trs
dgitos...
cdigo do
produto

E Nome do
Produto tem dez
caracteres ou
menos.

cdigo do
produto

nome do produto

Ento, em seguida,
vamos pensar
sobre o cdigo
do produto
um pouco mais
detalhadamente.
Hmmm...
Registro...
Campo...
tanta
coisa para
decorar...

mel o
m or a
m a
l i mo
p i n h o
c aq u i

28 Captulo 2

aqui!

in
Ca

Papel
importante?

Alm disso,
algumas vezes
um campo tem um
papel importante
no banco de
dados.

Sim. Por
exemplo,

O cdigo do
produto no
arquivo que
voc viu agora
h pouco.

Esse campo
especial
chamado de chave
(key).

Esse campo tem um


papel importante:
identificar os dados.

chave
primria

Bom, eu sei alguma


coisa sobre
tabelas.
fcil de entender
se voc j lida com
dados usando uma
tabela.

Esse cdigo
chamado de
chave primria
(primary key).

No sabia que
existiam tantos
termos.

rdo.
Cp

dueto
od
d
p.rco

Esse um dos
mritos do
modelo de dados
relacional.

Mesmo pessoas
que no sabem
muito sobre
bancos de dados
podem trabalhar
com dados.

o que um banco de dados relacional? 35

Diferena

Diferena uma operao que extrai linhas de apenas uma das tabelas. Por exemplo,
uma operao de diferena pode extrair todos os produtos da primeira tabela que no
esto includos na segunda. Os resultados dependem de qual tabela contm as linhas
para extrair, de qual tabela inclui as linhas para subtrair.
Nome do Produto

Preo Unitrio

Nome do Produto

Preo Unitrio

Ma

120G

Pinho

100G

Limo

200G

Caqui

350G

tabela de
produto 1

Ma
Limo

Melo
Morango

tabela de
produto 2

tabela de
produto 1

Pinho
Caqui

Ma
Limo

tabela de
produto 2

Melo
Morango

Pinho
Caqui

Interseco

Voc tambm pode extrair produtos que esto inclusos em ambas as Tabelas de Produto 1
e 2. Essa operao chamada de operao de interseco. Aqui vemos o resultado da interseco das Tabelas de Produto 1 e 2.
Nome do Produto

Preo Unitrio

Melo

800G

Morango

150G

tabela de
produto 1

Ma
Limo

tabela de
produto 2

Melo
Morango

Pinho
Caqui

o que um Banco de Dados relacional? 41

A Tica diz que o


procedimento
correto criar um
modelo e analisar
o gerenciamento de
exportao atual
baseando-se nele.

Em primeiro lugar,
pensamos que seria
mais fcil criar um
banco de dados...

uma
lio meio
longa...

Ko
d

Por
favor
sente-se.

Obrigada.

Se consegussemos
entender as
condies reais do
Reino de Kod...

Ento temos que


estudar algo novo.

Bom, esto
prontos?
Usaremos um
modelo de
anlise chamado...

Modelo E-R!

Entidade e
relacionamento...

E de Entidade e R de
Relacionamento.

E = de
a
tid
n
E

Nem eu.
Rela

R =
cion
a me

nto

E-R...?

52 Captulo 3

No conheo
esses nomes...

Esse ... um
relatrio que
fazemos quando
exportamos
frutas para um pas
estrangeiro.

Este relatrio
demonstra bem o
estado atual das
exportaes.

Sim, de fato! Ento,


usamos os dados de
todos os relatrios...

FluP

Tabular!!

Para criar uma


tabela no banco de
dados.

VUsh

Ainda no.
Primeiro...

vamos...

Aqui est.
Cdigo Do
Relatrio

DatA

1101

5/3

Cdigo Dest.
de Exp.

12

nome Dest.
de Exp.

Reino de
Minami
Imprio
Alfa
Reino de
Ritol

1102

7/3

23

1103

8/3

25

1104

10/3

12

Reino de
Minami

1105

12/3

25

Reino de
Ritol

CDIGO DO
PRODUTO

101

Nome do
produto

PREO
QuantiDADE
Unitrio

Melo

800g

1100

102

morango

150g

300

103

ma

120g

1700

104

Limo

200g

500

101

Melo

800g

2500

103

ma

120g

2000

104

limo

200g

Tabela criada a partir dos relatrios


de vendas

700

57

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

Data

Cdigo
do
Cliente

Nome
do
Cliente

Cdigo
do
Produto

Nome
do
Produto

Preo
Unitrio

Cdigo de
Classificao
do produto

Nome de
Classificao
do Produto

Quantidade

Passos para projetar um Banco de Dados


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

Esquema interno

Esquema Conceitual

Esquema externo

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

Resumo

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

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

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

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

Aqui estou eu!

Oh, um novo
lugar para
estudar!
A esto
vocs!!

flip
Fl

ap

Est fresquinho
aqui fora.

Flap

Ento, chegamos
em um ponto onde
podemos projetar
um banco de dados.

Finalmente...

A prxima coisa a
fazer estudar
como utilizar o
banco de dados
que criamos.

Hip, hip,
hurra!

Concordo
com voc.

Quando usar
o banco de
dados, vocs tm
que inserir ou
recuperar dados,
como j sabem.

Para fazer isso,


vamos usar SQL.

Sql??

Hi
hi!

90 Captulo 4

Parece
difcil...

H muitas coisas
sobre meu prprio
pas que eu no sei.

No sabia que o
preo mdio era
assim to alto...

A SQL tambm
tem uma funo
que totaliza os
valores dos dados
recuperados..

)oirati n u_ocerp(gva

5 ,71 3
No timo?

Exato.

Ento podemos
obter outros dados
alm da mdia?

Claro. Por exemplo...

A quantidade de itens,
sua soma, mdia,
valores mximos
e mnimos, todos
podem ser obtidos
especificando uma
funo de totalizao.

Funes de Totalizao em SQL

Funo

Descrio

COUNT(*)

Resulta na quantidade de linhas

COUNT(nome_coluna)

Resulta na quantidade de itens que no forem nulos na coluna

COUNT(DISTINCT nome_coluna)

Resulta na quantidade de itens distintos na coluna

SUM(nome_coluna)

Resulta na soma dos valores da coluna em todas as linhas

AVG(nome_coluna)

Resulta na mdia dos valores da coluna por todas as linhas

MAX(nome_coluna)

Resulta no valor mximo na coluna

MIN(nome_coluna)

Resulta no valor mnimo na coluna

Assim...

Uau!

Vamos Aprender Sobre SQL! 99

Assim, voc pode recuperar


dados de relatrio de
vendas das tabelas, mesmo
que elas estejam divididas.

cdigo dest. nome dest. de cdigo do


de Exp.
produto
Exp.

nome do
produto

preo
Unitrio

Melo

800g

1100

102

morango

150g

300

Imprio Alfa

103

ma

120g

1700

104

limo

200g

500

Melo

800g

2500
2000

cdigo do
relatrio

Data

1101

5/3

12

Reino de
Minami

101

1101

5/3

12

Reino de
Minami

1102

7/3

23

1103

8/3

25

Reino de
Ritol

1104

10/3

12

Reino de
Minami

101

1105

12/3

25

Reino de
Ritol

103

ma

120g

1105

12/3

25

Reino de
Ritol

104

limo

200g

Quantidade

700

Pode-se recuperar dados


relativos a relatrios de
vendas mesmo que se gerencie
os produtos, destinos
de exportaco e vendas
independentemente.

Essa a mesma
tabela original. Ns a
recriamos!

Isso
timo!!

Uau!

Agora deixem eu
comear.

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

Clap,
clap,
clap

banco de
dados

acesso

Uhuuu!

No banco de dados, o Andy


leu a tabela de produto,
especificamente as mas.

30 mas
Eu vejo
30
agora.

Ele ento acrescentou 10


ao estoque escrevendo uma
operao de banco de dados.

t.

Vou adicionar 10.

Terei 40
ento.

Enquanto isso, a Becky


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

Mas depois dessa


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

tem 30
agora!

30 mas
Eu vejo
30
agora.

Isso
est
certo?

Vou adicionar 10.

Terei 40
ento.

Vou adicionar 10.

Terei
40
ento.

40 mas

128 Captulo 5

Nossa Tabela
de Produtos.

Cdigo produto

preo Unitrio

Melo

10000g

102

Morango

12500g

103

Ma

8000g

104

Limo

6000g

201

Pinho

9000g

Caqui

12400g

Pssego

5000g

Kiwi

6000g

101

202
301
302

O que tem de
errado com
ela?

nome produto

Os preos.
Os preos!

Os preos?
Os valores
na coluna de
preo unitrio
esto todos
bagunados!

Ah, no!!!

Como pode?!

Iss
o

um q
ca m e l u e
ro o
!!

O pessoal do Departamento de Mercadorias pode pesquisar, inserir, atualizar e excluir


dados do produto.
O pessoal do Departamento de Negcios Internacionais pode pesquisar e inserir dados
do produto, mas no pode atualiz-los ou exclu-los.
O pessoal do Departamento de Exportao pode pesquisar dados do produto, mas no
pode inserir, atualizar ou excluir.

Banco de
dados

Depto. de
Mercadorias

PESQUISAR
INSERIR
ATUALIZAR
EXCLUIR

SIM
SIM
SIM
SIM

No vamos apenas
restringir o nmero de
usurios - vamos tambm
configurar permisses
para cada usurio que
puder acessar o banco de
dados.

Depto. de Negcios
Internacionais

PESQUISAR
INSERIR
ATUALIZAR
EXCLUIR

Depto. de
Exportao

PESQUISAR
INSERIR
ATUALIZAR
EXCLUIR

SIM
SIM
NO
NO

Ah, sim... deixando


isso de lado, o que
eu queria dizer ...

Essa uma boa


oportunidade para
voc considerar
casar comigo, e...

Dessa forma, podemos


evitar problemas e o banco
de dados ainda pode ser
compartilhado.

142 Captulo 5

SIM
NO
NO
NO

V UP

Ah, mas
espere...!

Bancos de Dados e a web


Um sistema
de banco de
dados ligado
web.

Por exemplo?

web?

Uau, eu
estava
querendo
este livro.
m
Co

No mundo todo, as
pessoas podem comprar
vrias coisas em pginas
na web.

Isso parece to
fcil!

pr

ad

o.

Alis, vou
compr-lo.

Por exemplo,
voc pode
comprar
qualquer livro
que quiser...

Chegou!
Legal!

Ento... voc no tem


que fazer uma lista
de ttulos e ir at uma
livraria!

Eu apoio
totalmente um
sistema assim!

navegando numa
pgina da web.

Maravilhoso!

lista de
compras
do Rei

Vamos
ver,
qual o
prximo?

Os bancos de dados esto em todos os lugares! 177

Muitos
servidores
oferecem
proteo extra
contra falhas,
tambm!

Ti-ca!
Ti-ca!

Isso significa que o


sistema do banco de
dados como um todo
no vai cair, mesmo se
a falha ocorrer em
alguns servidores no
sistema.

no cho

Falha

Mas lembrem-se: necessrio


certo cuidado para lidar com
o seu banco de dados dessa
forma.

Nossa!

Por exemplo?
Alm disso, todos
os servidores devem
ser atualizados
apropriadamente caso
ocorra qualquer
problema na rede.
Quando uma transao
efetivada, voc deve
garantir consistncia em
todo seu banco de dados
distribudo.

184 Captulo 6

<?xml version="1.0" ?>

<produtos>
<fruta>
<codigo_produto>101</codigo_produto>
<nome_produto>Melo</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>Ma</nome_produto>
<preco_unitario>120</preco_unitario>
</fruta>
</produtos>

Bancos de dados orientado a objeto


Um banco de dados relacional armazena dados em formato de texto em tabelas. No
entanto, ele pode ser inadequado quando se lida com certos tipos de dados. a que entra
um banco de dados orientado a objeto (BDOO).
O mtodo orientado a objeto utiliza objetos - conjuntos de dados e instrues sobre
como esses dados devem ser usados. Voc pode ocultar os dados e expor apenas as operaes sobre os dados para lidar com o objeto como um componente independente. Essa
tcnica chamada de encapsulamento.
Em um banco de dados orientado a objeto, cada objeto representado com um identificador. s vezes, um objeto tambm chamado de instncia.
Em um banco de dados orientado, voc pode tambm gerenciar objetos compostos um objeto definido dentro de outro. Isso significa, por exemplo, que voc pode armazenar
dados que consistem em uma imagem com texto como um nico objeto. O banco de dados
orientado a objeto permite gerenciamento flexvel de dados complexos.

Ruruna Kod
reino de Kod

Banco de dados
orientado a objeto

Princesa
Perfil

os bancos de dados esto em todos os lugares! 203

Você também pode gostar