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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Bancos de Dados relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Tipos de modelos de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Operaes de extrao de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Operaes de conjunto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Operaes relacionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Questes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
O Banco de Dados relacional vence! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Resumo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Vamos projetar um banco de dados! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
O modelo E-R. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Normalizao de uma tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
O que o modelo E-R? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Como analisar um modelo E-R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
1 Caso: Relacionamento um-para-um. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
2 Caso: Relacionamento um-para-muitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3 Caso: Relacionamento muitos-para-muitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Normalizando uma tabela . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Passos para projetar um Banco de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
vi SumRIO
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? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
O que uma trava (bloqueio)? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Segurana de Bancos de Dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Acelerando as coisas com indexao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Recuperao de desastres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Propriedades das transaes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Atomicidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Consistncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
Isolamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Durabilidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Quando um desastre ocorre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Tipos de falhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Pontos de checagem (checkpoints). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Sumrio vii
ndices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Otimizao de uma consulta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Laos aninhados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Fuso ordenada (sort merge) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Hash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Otimizador. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Resumo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Respostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
6. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
os Bancos de Dados esto em todos os lugares!. . . . . . . . . . . . . . 169
Banco de Dados em uso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Bancos de Dados e a web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Bancos de Dados distribudos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Procedimentos armazenados e gatilhos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Bancos de Dados na Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Uso de procedimentos armazenados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
O que um Banco de Dados distribudo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Distribuio horizontal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Distribuio vertical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Particionamento de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Particionamento horizontal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
Particionamento vertical . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Evitando inconsistncias com efetivao em duas fases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Questes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Replicao de Banco de Dados. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Somente leitura (Read-Only) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Replicao ativa em todos os servidores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Outras aplicaes de Bancos de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Bancos de dados orientado a objeto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Resumo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Repostas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Apndice
Comandos SQL Usados com Frequncia. . . . . . . . . . . . . . . . . . . . . . . . . . 207
Referncias. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
ndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Bom, pelo
menos ela
parece
inofensiva...
sim...
No vamos falar de
mim! Vocs abriram
o livro para
aprender sobre
bancos de dados...
certo?
Bom, acho
que sim...
Para criar
um banco de
dados...
Espere,
espere!!
Sei que uma
pergunta muito
bsica...
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
Ah, ento cada
departamento por si, n.
Sim, e temos
muitos
problemas...
P
r
o
d
u
t
o
C
u
l
i
e
n
t
e
vendas
sei, sei...
Ento
vamos
comear.
temos
administrado
criando
arquivos por
departamento.
16 Captulo 1
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 departa-
mento 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.
Princesa
Ruruna
Os dados so duplicados.
Depto. de
Mercadorias
Depto. de
Negcios
Internacionais
Depto. de
Exportao
20 Captulo 1
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.
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 corrom-
pidos. O banco de dados precisa ter mecanismos para recuperar-se desses tipos comuns de
falhas.
banco de dados
preciso estar
preparado para falhas.
banco de dados
Princesa
Ruruna
Depto. de
Mercadorias
Depto. de
Negcios
Internacionais
Depto. de
Exportao
ma?
m?
banco de dados
Princesa
Ruruna
Depto. de
Mercadorias
Depto. de
Negcios
Internacionais
Depto. de
Exportao
Eu poso
acesar dados
de vendas.
No poso
acesar dados
de vendas.
28 Captulo 2
cada registro contm
campos do mesmo tipo.
ah, Entendi.
Por exemplo,
Cdigo do
Produto um
valor de trs
dgitos...
E Nome do
Produto tem dez
caracteres ou
menos.
Ento, em seguida,
vamos pensar
sobre o cdigo
do produto
um pouco mais
detalhadamente.
Cdigo do
Produto
Nome do
Produto
Preo
Unitrio
Comentrios
Melo
Morango
Ma
Limo
Pinho
Caqui
Psego
Kiwi
com sementes
azedo
com casca
Alta qualidade
campo
Registro
cdigo do
produto
nome do produto
m e l o
m or a
m a
l i m o
p i n h o
u q c a i
cdigo do
produto
aqui!
C
a
i
n
?
Hmm...
Registro...
Campo...
tanta
coisa para
decorar...
800 g
150 g
120 g
200 g
100 g
160 g
130 g
200 g
o que um banco de dados relacional? 35
Alm diso,
algumas vezes
um campo tem um
papel importante
no banco de
dados.
Ese campo
especial
chamado de chave
(key).
Papel
importante?
Sim. Por
exemplo,
O cdigo do
produto no
arquivo que
voc viu agora
h pouco.
Ese campo tem um
papel importante:
identificar os dados.
Ese cdigo
chamado de
chave primria
(primary key).
No sabia que
existiam tantos
termos.
Bom, eu sei alguma
coisa sobre
tabelas.
Ese um dos
mritos do
modelo de dados
relacional.
Mesmo pesoas
que no sabem
muito sobre
bancos de dados
podem trabalhar
com dados.
p
r
o
d
. c
o
d
e
fcil de entender
se voc j lida com
dados usando uma
tabela.
chave
primria
C

d
. p
r
o
d
u
t
o
o que um Banco de Dados relacional? 41
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 120 G Pinho 100 G
Limo 200 G Caqui 350 G
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 inter-
seco das Tabelas de Produto 1 e 2.
Nome do Produto Preo Unitrio
Melo 800 G
Morango 150 G
tabela de
produto 1
tabela de
produto 2
Ma
Limo
Pinho
Caqui Morango
Melo
tabela de
produto 1
tabela de
produto 2
Ma
Limo
Pinho
Caqui Morango
Melo
tabela de
produto 1
tabela de
produto 2
Ma
Limo
Pinho
Caqui Morango
Melo
Em primeiro lugar,
pensamos que seria
mais fcil criar um
banco de dados...
52 Captulo 3
A Tica diz que o
procedimento
coreto criar um
modelo e analisar
o gerenciamento de
exportao atual
baseando-se nele.
Ento temos que
estudar algo novo.
Se consegusemos
entender as
condies reais do
Reino de Kod...
Bom, esto
prontos?
Usaremos um
modelo de
anlise chamado...
Modelo E-R!
E de Entidade e R de
Relacionamento.
E-R...?
Entidade e
relacionamento...
No conheo
eses nomes...
K
o
d
Por
favor
sente-se.
Obrigada.
E

=

E
n
t
i
d
a
d
e
R
= R
e
lac
io
na
m
e
nto
Nem eu.
uma
lio meio
longa...
Ese ... 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...
Para criar uma
tabela no banco de
dados.
Ainda no.
Primeiro...
vamos...
Tabular!!
FluP
VUsh
Aqui est.
Tabela criada a partir dos relatrios
de vendas
Cdigo Do
Relatrio
DatA
Cdigo Dest.
de Exp.
CDIGO DO
PRODUTO
Nome do
produto
PREO
Unitrio
QuantiDADE
1101
1102
1103
1104
1105
5/3
7/3
8/3
10/3
12/3
Reino de
Minami
Reino de
Minami
Imprio
Alfa
Reino de
Ritol
Reino de
Ritol
12
12
23
25
25
101
101
102
103
103
104
104
Melo
morango
ma
Limo
Melo
ma
limo
800 g
150 g
120 g
200 g
800 g
120 g
200 g
1100
300
1700
500
2500
2000
700
57
nome Dest.
de Exp.
vamos projetar um banco de dados! 81
Q9
A tabela a seguir representa um sistema de recebimento de pedidos. Normalize-a na
terceira forma normal. Suponha que os produtos sejam classificados por cdigo.
Cdigo
de
Pedido
Data
Cdigo
do
Cliente
Nome
do
Cliente
Cdigo
do
Produto
Nome
do
Produto
Preo
Unitrio
Cdigo de
Classificao
do produto
Nome de
Classificao
do Produto
Quantidade
Passos para projetar um Banco de Dados
Voc aprendeu como projetar um banco de dados! No entanto, voc tem que fazer mais do
que isso. preciso projetar uma estrutura de arquivos detalhada dentro do banco de dados
e desenvolver mtodos para importar e exportar dados. De forma geral, pode-se dividir
todo o projeto do banco de dados em trs partes: esquemas conceitual, interno e externo.
O esquema conceitual refere-se a um mtodo que retrata o mundo real. Em outras
palavras, uma forma de determinar a estrutura lgica de um banco de dados. O esquema
conceitual realizado levando-se em considerao um entendimento do mundo real base-
ado no modelo E-R e normalizao de tabelas.
O esquema interno refere-se ao banco de dados visto de dentro de um computador.
Isso quer dizer que uma forma de determinar a estrutura fsica de um banco de dados. O
esquema interno projetado aps a criao de um mtodo para fazer pesquisas no banco
de dados rapidamente.
O esquema externo refere-se a um banco de dados como ele visto pelos usurios
ou aplicativos. O esquema externo projetado aps a criao de dados necessrios para os
aplicativos.
A Princesa Ruruna e o Cain criaram um banco de dados com foco no esquema concei-
tual neste captulo. Eles esto no processo de melhoria do banco de dados.
Agora que voc completou o projeto bsico de um banco de dados, vamos examinar
seu uso no prximo captulo.
Resumo
Um modelo E-R usado para analisar entidades e relacionamentos.
Relacionamentos entre entidades podem ser um-para-um, um-para-muitos e muitos-
para-muitos.
Os dados em uma tabela devem ser normalizados antes que possam ser usados para
criar um banco de dados relacional.
O projeto de um banco de dados pode ser dividido em trs tipos: esquemas conceitual,
interno e externo.
Esquema interno Esquema externo Esquema Conceitual
90 Captulo 4
Aqui estou eu!
A esto
vocs!!
Ento, chegamos
em um ponto onde
podemos projetar
um banco de dados.
Concordo
com voc.
Quando usar
o banco de
dados, vocs tm
que inserir ou
recuperar dados,
como j sabem.
Para fazer iso,
vamos usar SQL.
Sql??
Est fresquinho
aqui fora.
Oh, um novo
lugar para
estudar!
A prxima coisa a
fazer estudar
como utilizar o
banco de dados
que criamos.
flip
Flap
F
l
a
p
Finalmente...
Hip, hip,
hura!
Parece
difcil...
Hi
hi!
No sabia que o
preo mdio era
asim to alto...
H muitas coisas
sobre meu prprio
pas que eu no sei.
A SQL tambm
tem uma funo
que totaliza os
valores dos dados
recuperados..
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.
Asim...
Uau!
a v g ( p r e c o _ u n i t a r i o )
3 1 7 , 5
Exato.
No timo?
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
Vamos Aprender Sobre SQL! 99
Asim, voc pode recuperar
dados de relatrio de
vendas das tabelas, mesmo
que elas estejam divididas.
Esa a mesma
tabela original. Ns a
recriamos!
Pode-se recuperar dados
relativos a relatrios de
vendas mesmo que se gerencie
os produtos, destinos
de exportaco e vendas
independentemente.
Iso
timo!!
Uau!
cdigo do
relatrio
Data
Quantidade
preo
Unitrio
1101
1102
1103
1104
1105
5/3
7/3
8/3
10/3
12/3
12
12
23
25
25
Reino de
Minami
Imprio Alfa
Reino de
Ritol
1100
300
1700
500
2500
2000
700
101
102
103
104
800 g
150 g
120 g
200 g
1101
1105
5/3
12/3
25
12 101
103
104
Melo
morango
ma
limo
Melo
ma
limo
800 g
120 g
200 g
nome dest. de
Exp.
cdigo dest.
de Exp.
cdigo do
produto
nome do
produto
Reino de
Minami
Reino de
Minami
Reino de
Ritol
Reino de
Ritol
128 Captulo 5
Agora deixem eu
comear.
Um dia, o Andy
e a Becky
acesaram o
banco de dados
ao mesmo
tempo.
No banco de dados, o Andy
leu a tabela de produto,
especificamente as mas.
Ele ento acrescentou 10
ao estoque escrevendo uma
operao de banco de dados.
Enquanto iso, a Becky
tambm leu o nmero de
mas, 30, e acrescentou 10.
Mas depois desa
operao, o banco de
dados mostra o nmero
atual de mas como 40.
Iso
est
certo?
Clap,
clap,
clap
Uhuu!
banco de
dados
30 mas
Eu vejo
30
agora.
Vou adicionar 10.
Terei 40
ento.
t.
30 mas
Eu vejo
30
agora.
Vou adicionar 10.
Terei 40
ento.
40 mas
tem 30
agora!
Vou adicionar 10.
Terei
40
ento.
aceso
O que tem de
erado com
ela?
Os preos.
Os preos!
Nosa Tabela
de Produtos.
Os preos?
Ah, no!!!
Os valores
na coluna de
preo unitrio
esto todos
bagunados!
Como pode?!
10000 g
12500 g
8000 g
6000 g
9000 g
12400 g
5000 g
6000 g
Melo
Morango
Ma
Limo
Pinho
Caqui
Psego
Kiwi
101
102
103
104
201
202
301
302
Cdigo produto nome produto preo Unitrio
I
s
o


q
u
e


u
m

m
e
l

o

c
a
r
o
!
!
142 Captulo 5
No vamos apenas
restringir o nmero de
usurios - vamos tambm
configurar permises
para cada usurio que
puder acesar o banco de
dados.
Ah, sim... deixando
iso de lado, o que
eu queria dizer ...
Desa forma, podemos
evitar problemas e o banco
de dados ainda pode ser
compartilhado.
Esa uma boa
oportunidade para
voc considerar
casar comigo, e...
Ah, mas
espere...!
Banco de
dados
Depto. de
Mercadorias
Depto. de Negcios
Internacionais
Depto. de
Exportao
PESQUISAR SIM
INSERIR SIM
ATUALIZAR SIM
EXCLUIR SIM
PESQUISAR SIM
INSERIR SIM
ATUALIZAR NO
EXCLUIR NO
PESQUISAR SIM
INSERIR NO
ATUALIZAR NO
EXCLUIR NO
V
U
P
O pesoal do Departamento de Mercadorias pode pesquisar, inserir, atualizar e excluir
dados do produto.
O pesoal do Departamento de Negcios Internacionais pode pesquisar e inserir dados
do produto, mas no pode atualiz-los ou exclu-los.
O pesoal do Departamento de Exportao pode pesquisar dados do produto, mas no
pode inserir, atualizar ou excluir.
Os bancos de dados esto em todos os lugares! 177
Por exemplo?
Um sistema
de banco de
dados ligado
web.
web?
No mundo todo, as
pesoas podem comprar
vrias coisas em pginas
na web.
Iso parece to
fcil!
Maravilhoso!
Por exemplo,
voc pode
comprar
qualquer livro
que quiser...
navegando numa
pgina da web.
Ento... voc no tem
que fazer uma lista
de ttulos e ir at uma
livraria!
Bancos de Dados e a web
Uau, eu
estava
querendo
este livro.
Alis, vou
compr-lo.
C
o
m
p
r
a
d
o
.
Chegou!
Legal!
Eu apoio
totalmente um
sistema asim!
lista de
compras
do Rei
Vamos
ver,
qual o
prxi-
mo?
184 Captulo 6
Muitos
servidores
oferecem
proteo extra
contra falhas,
tambm!
Iso significa que o
sistema do banco de
dados como um todo
no vai cair, mesmo se
a falha ocorer em
alguns servidores no
sistema.
Mas lembrem-se: necesrio
certo cuidado para lidar com
o seu banco de dados desa
forma.
Por exemplo?
Quando uma transao
efetivada, voc deve
garantir consistncia em
todo seu banco de dados
distribudo.
Alm diso, todos
os servidores devem
ser atualizados
apropriadamente caso
ocora qualquer
problema na rede.
Ti-ca!
Ti-ca!
no cho
Falha
Nosa!
os bancos de dados esto em todos os lugares! 203
<?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 ope-
raes 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 identi-
ficador. 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
Princesa
Perfil
Banco de dados
orientado a objeto

Você também pode gostar