Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

2013
PrincíPios de Banco 
de dados
Prof. Décio Lehmkuhl
Prof. Djayson Roberto Eger
Copyright © UNIASSELVI 2013
Elaboração:
Prof. Décio Lehmkuhl
Prof. Djayson Roberto Eger
Revisão, Diagramação e Produção:
Centro Universitário Leonardo da Vinci – UNIASSELVI
Ficha catalográfica elaborada na fonte pela Biblioteca Dante Alighieri 
UNIASSELVI – Indaial.
005.75
L523p Lehmkuhl, Décio
 Princípios de banco de dados / Décio Lehmkuhl; Djayson Roberto. 
Indaial : Uniasselvi, 2013.
 189 p. : il 
 
 ISBN 978-85-7830- 684-7
 1. Banco de dados. 
 I. Centro Universitário Leonardo da Vinci.
Impresso por:
III
aPresentação
Atualmente existem vários bancos de dados no mundo. Você já parou 
para pensar qual é a sua relação com os mesmos ou qual é a importância 
deles para a sociedade? Vamos relacionar alguns fatos para evidenciar uma 
possível resposta a este questionamento.
A sociedade vive em torno de dados. Sua conta de energia elétrica, 
água, telefone e várias outras possuem dados relacionados que formam o 
valor a ser pago na fatura. Cada fornecedor desses serviços tem em sua base 
de dados o seu cadastro e o consumo que foi utilizado. Logo, pode-se concluir 
que o seu cadastro possivelmente existe em inúmeros bancos de dados.
Pense em um documento pessoal, por exemplo, o seu CPF. Ele deve 
constar na base de dados da Receita Federal. Se você comprou algum produto 
em estabelecimento comercial, o seu CPF provavelmente existe na base de 
dados dele. Como foi mencionado acima, existe uma grande “ligação” entre 
você e vários bancos de dados.
Isso pode tornar o conteúdo desta disciplina muito interessante. 
Serão abordados vários assuntos que vão desde as primeiras formas de 
armazenamento de dados até o estado atual de evolução da tecnologia. Você 
aprenderá quais são os conceitos de bancos de dados e até poderá programar 
a sua própria base de dados.
Sendo assim, temos muito para aprender! Bons estudos!
 Prof. Décio Lehmkuhl
 Prof. Djayson Roberto Eger
IV
Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para 
você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há novidades 
em nosso material.
Na Educação a Distância, o livro impresso, entregue a todos os acadêmicos desde 2005, é o 
material base da disciplina. A partir de 2017, nossos livros estão de visual novo, com um formato 
mais prático, que cabe na bolsa e facilita a leitura. 
O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova diagramação 
no texto, aproveitando ao máximo o espaço da página, o que também contribui para diminuir 
a extração de árvores para produção de folhas de papel, por exemplo.
Assim, a UNIASSELVI, preocupando-se com o impacto de nossas ações sobre o ambiente, 
apresenta também este livro no formato digital. Assim, você, acadêmico, tem a possibilidade 
de estudá-lo com versatilidade nas telas do celular, tablet ou computador. 
 
Eu mesmo, UNI, ganhei um novo layout, você me verá frequentemente e surgirei para 
apresentar dicas de vídeos e outras fontes de conhecimento que complementam o assunto 
em questão. 
Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas 
institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa 
continuar seus estudos com um material de qualidade.
Aproveito o momento para convidá-lo para um bate-papo sobre o Exame Nacional de 
Desempenho de Estudantes – ENADE. 
 
Bons estudos!
UNI
Olá acadêmico! Para melhorar a qualidade dos 
materiais ofertados a você e dinamizar ainda mais 
os seus estudos, a Uniasselvi disponibiliza materiais 
que possuem o código QR Code, que é um código 
que permite que você acesse um conteúdo interativo 
relacionado ao tema que você está estudando. Para 
utilizar essa ferramenta, acesse as lojas de aplicativos 
e baixe um leitor de QR Code. Depois, é só aproveitar 
mais essa facilidade para aprimorar seus estudos!
UNI
V
VI
VII
UNIDADE 1 – FUNDAMENTOS DE BANCO DE DADOS .......................................................... 1
TÓPICO 1 – INTRODUÇÃO A BANCO DE DADOS .................................................................... 3
1 INTRODUÇÃO .................................................................................................................................... 3
2 CONCEITOS DE BANCO DE DADOS .......................................................................................... 4
2.1 DADO E INFORMAÇÃO .............................................................................................................. 4
2.2 BANCOS DE DADOS .................................................................................................................... 6
3 HISTÓRICO DO GERENCIAMENTO DOS DADOS ................................................................. 8
4 SISTEMA GERENCIADOR DE BANCO DE DADOS ................................................................ 11
4.1 DEFINIÇÕES DE UM SGBD ......................................................................................................... 11
4.2 FUNÇÕES DE UM SGBD .............................................................................................................. 13
4.3 ESTRUTURA DE UM SGBD ......................................................................................................... 14
4.4 TIPOS DE USUÁRIOS DO SGBD ................................................................................................. 16
5 PRINCIPAIS BANCOS DE DADOS DISPONÍVEIS NO MERCADO .................................... 16
5.1 MYSQL ............................................................................................................................................. 16
5.2 ORACLE ........................................................................................................................................... 17
5.3 POSTGRESQL ................................................................................................................................. 18
5.4 SQL SERVER .................................................................................................................................... 20
LEITURA COMPLEMENTAR .............................................................................................................. 22
RESUMO DO TÓPICO 1 ....................................................................................................................... 24
AUTOATIVIDADE ................................................................................................................................ 25
TÓPICO 2 – EVOLUÇÃO DOS BANCOS DE DADOS ................................................................. 27
1 INTRODUÇÃO .................................................................................................................................... 27
2 HISTÓRICO DA EVOLUÇÃO DOS BANCOS DE DADOS ..................................................... 28
2.1 PRIMEIRA GERAÇÃO .................................................................................................................. 28
2.2 SEGUNDA GERAÇÃO .................................................................................................................. 30
2.3 TERCEIRA GERAÇÃO .................................................................................................................. 32
3 ARQUITETURA DE BANCO DE DADOS ..................................................................................... 35
3.1 ARQUITETURA CENTRALIZADA ............................................................................................ 35
3.2 ARQUITETURA CLIENTE-SERVIDOR ...................................................................................... 36
3.3 ARQUITETURA PARALELA ....................................................................................................... 37
3.4 ARQUITETURA DISTRIBUÍDA................................................................................................... 38
LEITURA COMPLEMENTAR .............................................................................................................. 41
RESUMO DO TÓPICO 2 ....................................................................................................................... 43
AUTOATIVIDADE ................................................................................................................................ 44
TÓPICO 3 – TENDÊNCIAS E PERSPECTIVAS ............................................................................... 45
1 INTRODUÇÃO .................................................................................................................................... 45
2 CLASSIFICAÇÃO DOS BANCOS DE DADOS .......................................................................... 46
2.1 BANCOS DE DADOS DE INFORMAÇÕES GEOGRÁFICAS ................................................. 46
2.2 BANCOS DE DADOS MULTIMÍDIA .......................................................................................... 49
2.3 BANCO DE DADOS TEMPORAL ............................................................................................... 50
2.4 BANCOS DE DADOS BIOLÓGICOS .......................................................................................... 51
sumário
VIII
2.5 BANCO DE DADOS XML ............................................................................................................. 53
3 TIPOS DE GERENCIAMENTO DE DADOS ................................................................................ 54
3.1 DATA MINING ................................................................................................................................ 55
3.2 DATA WAREHOUSE ...................................................................................................................... 58
3.3 DATA MART .................................................................................................................................... 60
3.4 DATA MARKETING ....................................................................................................................... 60
4 NOVOS CONCEITOS ........................................................................................................................ 61
4.1 BIG DATA ......................................................................................................................................... 62
4.2 NOSQL ............................................................................................................................................. 64
LEITURA COMPLEMENTAR .............................................................................................................. 65
RESUMO DO TÓPICO 3 ....................................................................................................................... 68
AUTOATIVIDADE ................................................................................................................................ 69
UNIDADE 2 – MODELAGEM DE DADOS ...................................................................................... 71
TÓPICO 1 – MODELOS DE DADOS ................................................................................................. 73
1 INTRODUÇÃO .................................................................................................................................... 73
2 MODELO CONCEITUAL .................................................................................................................. 74
3 MODELO LÓGICO ............................................................................................................................. 75
4 MODELO FÍSICO ................................................................................................................................ 75
LEITURA COMPLEMENTAR .............................................................................................................. 77
RESUMO DO TÓPICO 1 ....................................................................................................................... 80
AUTOATIVIDADE ................................................................................................................................ 81
TÓPICO 2 – MODELO ENTIDADE-RELACIONAMENTO ......................................................... 83
1 INTRODUÇÃO .................................................................................................................................... 83
2 MODELO ENTIDADE-RELACIONAMENTO ............................................................................. 83
2.1 ENTIDADE ...................................................................................................................................... 85
2.2 ATRIBUTOS ..................................................................................................................................... 86
2.3 RELACIONAMENTO .................................................................................................................... 87
3 CONSTRUINDO UM MODELO ENTIDADE-RELACIONAMENTO .................................... 88
LEITURA COMPLEMENTAR .............................................................................................................. 90
RESUMO DO TÓPICO 2 ....................................................................................................................... 91
AUTOATIVIDADE ................................................................................................................................ 92
TÓPICO 3 – TIPOS DE RELACIONAMENTOS .............................................................................. 93
1 INTRODUÇÃO .................................................................................................................................... 93
2 CONDICIONALIDADE DO RELACIONAMENTO ................................................................... 93
3 GRAU DO RELACIONAMENTO .................................................................................................... 95
3.1 RELACIONAMENTO UM PARA UM ........................................................................................ 95
3.2 GRAU UM PARA MUITOS ........................................................................................................... 96
3.3 GRAU MUITOS PARA MUITOS .................................................................................................. 96
4 AUTORRELACIONAMENTO .......................................................................................................... 97
RESUMO DO TÓPICO 3 ....................................................................................................................... 99
AUTOATIVIDADE ................................................................................................................................ 100
TÓPICO 4 – MODELO RELACIONAL .............................................................................................. 101
1 INTRODUÇÃO .................................................................................................................................... 101
2 BANCO DE DADOS RELACIONAL .............................................................................................. 101
3 TABELA ................................................................................................................................................. 101
4 CHAVE ................................................................................................................................................... 102
4.1 CHAVE PRIMÁRIA ........................................................................................................................ 102
4.2 CHAVE ESTRANGEIRA ...............................................................................................................103
IX
4.3 CHAVE ALTERNATIVA ................................................................................................................ 105
LEITURA COMPLEMENTAR .............................................................................................................. 106
RESUMO DO TÓPICO 4 ....................................................................................................................... 108
AUTOATIVIDADE ................................................................................................................................ 109
TÓPICO 5 – NORMALIZAÇÃO DE DADOS .................................................................................. 111
1 INTRODUÇÃO .................................................................................................................................... 111
2 ANOMALIAS DE ATUALIZAÇÃO ................................................................................................. 113
3 APLICAÇÃO DAS FORMAS NORMALIZAÇÃO ....................................................................... 115
4 FERRAMENTAS PARA MODELAGEM DE DADOS ................................................................. 117
4.1 DBDESIGNER ................................................................................................................................. 117
4.2 ERWIN .............................................................................................................................................. 118
4.3 POWERDESIGNER ........................................................................................................................ 119
RESUMO DO TÓPICO 5 ....................................................................................................................... 121
AUTOATIVIDADE ................................................................................................................................ 122
UNIDADE 3 – SQL ................................................................................................................................. 123
TÓPICO 1 – INTRODUÇÃO À LINGUAGEM SQL ....................................................................... 125
1 INTRODUÇÃO .................................................................................................................................... 125
2 O QUE É SQL ........................................................................................................................................ 126
3 MODELO DE DADOS DESTA UNIDADE .................................................................................... 126
4 CRIANDO O BANCO DE DADOS ................................................................................................. 127
4.1 CONEXÃO AO BANCO DE DADOS .......................................................................................... 128
4.2 CRIAÇÃO DE TABELAS ............................................................................................................... 129
5 RESTRIÇÕES ........................................................................................................................................ 136
5.1 CHAVE PRIMÁRIA E RESTRIÇÃO NOT NULL ...................................................................... 136
5.2 CHAVE ESTRANGEIRA ............................................................................................................... 138
5.3 CHAVE ÚNICA .............................................................................................................................. 139
5.4 CHECAGEM DE DADOS .............................................................................................................. 140
LEITURA COMPLEMENTAR .............................................................................................................. 141
RESUMO DO TÓPICO 1 ....................................................................................................................... 144
AUTOATIVIDADE ................................................................................................................................ 145
TÓPICO 2 – MANUTENÇÃO DOS DADOS ................................................................................... 147
1 INTRODUÇÃO .................................................................................................................................... 147
2 INSERINDO, SELECIONANDO, ATUALIZANDO E DELETANDO DADOS ..................... 147
2.1 VALIDANDO AS RESTRIÇÕES DA TABELA ........................................................................... 147
2.2 TRANSAÇÕES ................................................................................................................................ 152
2.3 CONVERSÃO DE DADOS ............................................................................................................ 152
2.4 COMANDOS UPDATE E DELETE .............................................................................................. 154
3 SELEÇÃO DE DADOS ....................................................................................................................... 156
LEITURA COMPLEMENTAR .............................................................................................................. 164
RESUMO DO TÓPICO 2 ....................................................................................................................... 166
AUTOATIVIDADE ................................................................................................................................ 167
TÓPICO 3 – OUTRAS ESTRUTURAS DE DADOS ........................................................................ 169
1 INTRODUÇÃO .................................................................................................................................... 169
2 OBJETOS DE BANCOS DE DADOS .............................................................................................. 170
2.1 ÍNDICES ........................................................................................................................................... 170
2.2 SEQUENCES ................................................................................................................................... 172
2.3 VIEWS ............................................................................................................................................... 175
X
3 PL/SQL ................................................................................................................................................... 177
3.1 PROCEDURES ................................................................................................................................. 178
3.2 FUNCTION ...................................................................................................................................... 179
3.3 PACKAGES ....................................................................................................................................... 180
3.4 TRIGGERS ........................................................................................................................................ 181
LEITURA COMPLEMENTAR .............................................................................................................. 183
RESUMO DO TÓPICO 3 ....................................................................................................................... 185
AUTOATIVIDADE ................................................................................................................................ 186
REFERÊNCIAS ........................................................................................................................................ 187
1
UNIDADE 1
FUNDAMENTOS DE BANCO 
DE DADOS
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
Esta unidade tem por objetivos:
• apresentaro que é um banco de dados;
• demonstrar como foi a evolução dos bancos de dados;
• apresentar perspectivas e tendências desta tecnologia.
Esta unidade está dividida em três tópicos e, em cada um deles, você 
encontrará atividades que proporcionarão a compreensão dos conteúdos 
apresentados.
TÓPICO 1 – INTRODUÇÃO A BANCO DE DADOS
TÓPICO 2 – EVOLUÇÃO DOS BANCOS DE DADOS 
TÓPICO 3 – TENDÊNCIAS E PERSPECTIVAS
2
3
TÓPICO 1
UNIDADE 1
INTRODUÇÃO A BANCO DE DADOS
1 INTRODUÇÃO
“O período de maior ganho de conhecimento e experiência é o período 
de maior dificuldade na vida de cada um”. (Dalai Lama)
Esse tópico tem como objetivo apresentar ao(a) acadêmico(a) conceitos de 
bancos de dados. Você aprenderá que existe uma grande diferença entre dado e 
informação e que a partir deles é possível gerar conhecimento. Compreender isso 
é requisito básico para o bom aproveitamento da disciplina.
FIGURA 1 – DADO, INFORMAÇÃO E CONHECIMENTO
FONTE: Os autores
Também será abordado um histórico do gerenciamento dos dados. O 
objetivo é que se perceba que vários ciclos de aperfeiçoamento aconteceram para 
se chegar ao nível tecnológico que temos hoje.
Para fins conclusivos, veremos quais são os principais bancos de dados 
relacionais existentes no mundo. Você perceberá que cada um deles possui focos 
diferenciados com características e particularidades que necessitam de uma análise 
aprofundada para sua melhor compreensão. 
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
4
2 CONCEITOS DE BANCO DE DADOS
2.1 DADO E INFORMAÇÃO
Para entendermos melhor o que é um banco de dados, precisamos antes 
compreender a diferença que existe entre dado e informação. Dado é um conteúdo 
que ainda não foi processado para gerar um significado. Pode-se dizer que dado é 
a menor unidade de conteúdo que tem significado no mundo real. Por exemplo, ao 
realizar uma pesquisa para mapear a qualidade de uma biblioteca, normalmente 
são feitas entrevistas com seus respectivos usuários. A figura a seguir mostra o 
formulário WEB onde os dados da pesquisa podem ser coletados.
FIGURA 2 – FORMULÁRIO DE COLETA DE DADOS PARA A PESQUISA
FONTE: Os autores
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
5
Assim que os usuários responderem à pesquisa, os dados vão sendo 
armazenados em um depósito de dados. A figura a seguir representa este 
depósito de dados.
FIGURA 3 – DEPÓSITO DE DADOS DA PESQUISA
FONTE: Os autores
Mesmo já possuindo os dados, eles não têm uma utilidade bem definida. 
É possível ler linhas e linhas de pesquisa, porém não se tem um real significado 
do que ela traz como resultado. A partir desse momento surgem questões como, 
por exemplo, qual é o grau de escolaridade dos usuários da biblioteca e como eles 
avaliam o atendimento?
Para responder a estas perguntas, precisamos fazer uma análise de todas 
as respostas e formatá-las de uma forma mais resumida e de fácil entendimento. 
Quando executamos esse processo estamos gerando informação, que é o 
processamento de dados para responder a algumas perguntas ou traduzir de 
uma forma mais sumarizada o significado dos mesmos. A informação sempre é 
gerada com base nos dados. A figura a seguir mostra algumas informações dos 
dados da pesquisa.
FIGURA 4 – INFORMAÇÕES DE PARTE DO RESULTADO DA PESQUISA
FONTE: Os autores
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
6
A informação gera conhecimento. Rob e Coronel (2011, p. 11) nos dizem 
que “o conhecimento implica familiaridade, consciência e compreensão das 
informações conforme se apliquem a um ambiente”. Quando conseguimos 
compreender informações e relacioná-las ao seu contexto, estamos obtendo 
conhecimento.
As informações podem ser utilizadas para tomada de decisão. No exemplo da 
pesquisa da biblioteca, pode ser feita uma análise para descobrir como está a qualidade do 
atendimento, e com base nisso, tomar decisões para melhorar os pontos fracos.
DICAS
2.2 BANCOS DE DADOS
Agora que já sabemos o que são dados, informações, conhecimento e qual 
é a diferença entre ambos, precisamos nos concentrar no local onde os dados ficam 
armazenados. Anteriormente nos referimos a esse local como depósito de dados, 
porém, o mais correto seria chamar de banco de dados. Para definir banco de 
dados, buscamos uma explanação mais genérica e abrangente escrita por Elmasri 
e Navathe (2011, p. 3):
Um banco de dados é uma coleção de dados relacionados. Com dados, 
queremos dizer fatos conhecidos que podem ser registrados e possuem 
significado implícito. Por exemplo, considere os nomes, números 
de telefone e endereço das pessoas que você conhece. Você pode ter 
registrado esses dados em uma agenda ou, talvez, os tenha armazenado 
em um disco rígido, usando um computador pessoal e um software 
como Microsoft Access ou Excel. Essa coleção de dados relacionados, 
com um significado implícito, é um banco de dados.
Um banco de dados também pode ser chamado de base de dados. Os dados 
são armazenados de uma maneira que tem como objetivo facilitar a inclusão, 
remoção, consulta e alteração. Eles representam aspectos ou fatos do mundo 
real, que muitas vezes é denominado de minimundo ou universo de discurso. Só 
devemos armazenar no banco de dados o que faz parte do seu minimundo.
Para exemplificar melhor, pense em um sistema de vendas de ingressos 
online para cinemas. Nesse minimundo existem características que são importantes 
e necessárias para a venda de ingressos, como por exemplo, o nome do filme, 
horário em que ele será reproduzido, o local, se é dublado ou legendado etc. Essas 
características precisam estar armazenadas para possíveis consultas e alterações. 
Já características como a cor das paredes ou o tipo de piso da sala do cinema não 
são fatos necessários para posterior consulta em um sistema e não precisam ser 
armazenados no banco de dados.
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
7
Para simplificar a definição, podemos dizer que o minimundo é tudo o que 
existe no mundo real que é pertinente para a resolução do problema. A figura a 
seguir demostra de forma visual este conceito.
FIGURA 5 – CONCEITO DE MINIMUNDO
FONTE: Os autores
Bancos de dados existem normalmente para serem utilizados por aplicações. 
Elas é que realizam consultas e fazem alterações nos dados. Para tornar esse 
processo mais simples, existe o Sistema Gerenciador de Banco de Dados (SGDB) 
que é um software responsável por manter os bancos de dados que estão sob sua 
responsabilidade. Nele existem funções pré-definidas para inserção, remoção, 
atualização e consulta dos dados armazenados. A figura a seguir nos dá uma visão 
geral da relação entre o SGDB e o seu universo.
FIGURA 6 – SGDB E SEU UNIVERSO
FONTE: Disponível em: <http://www.devmedia.com.br/conceitos-fundamentais-
de-banco-de-dados/1649>. Acesso em: 18 nov. 2012.
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
8
Detalhes do funcionamento e filosofias do SGDB serão vistos em tópicos 
posteriores. Por hora, somente memorize que SGDB é um software responsável 
pelo gerenciamento de bases de dados.
3 HISTÓRICO DO GERENCIAMENTO DOS DADOS
Conseguimos de forma introdutória definir alguns conceitos básicos 
relacionados a banco de dados. Vimos que existe um Sistema Gerenciador de Banco 
de Dados que é responsável pelo gerenciamento dos dados. Para a tecnologia 
chegar a esse patamar, passou por diversos processos evolutivos que tiveram 
como resultado a organização que temos hoje. 
Voltando no tempo, quando a informática estava dando seus primeiros 
passos, os sistemas eram desenvolvidos para atender a demandas isoladas, com 
foco na resolução de problemas dentro de determinadas áreas. 
Para evidenciar de forma mais clara essa ideia, considere a seguinte 
situação: um gerente da área de vendas de uma determinada empresa precisa ter 
informações mais detalhadas dos vendedores que ele gerencia e das vendas que 
são efetuadas. Todos os dados estão armazenados fisicamente em pastas que se 
encontram dentro de gavetas de arquivos.
Com muito trabalho, ele consegue examinar todas as suas pastase extrair 
as informações de que necessitava. Acontece que de uma hora para outra suas 
vendas aumentaram muito, fazendo com que fosse necessária a contratação de 
novos profissionais. Nesse novo cenário, o gerente não consegue mais obter as 
informações necessárias dos vendedores e suas vendas, pois o volume cresceu de 
tal forma que tornou inviável a análise manual dos dados. 
Esse acontecimento faz com que seja necessário um sistema de computador. 
Sendo assim, é feita a conversão do sistema de arquivos manual para um sistema de 
informação. Esse novo sistema ainda não utilizava um SGBD (o conceito de SGBD será 
visto mais à frente). Todos os dados eram gravados em arquivos e cada programa que 
era construído poderia ter um formato diferente de organização para a gravação. Rob 
e Coronel (2011, p. 12) fazem um relato do que aconteceu naquela época.
 
A conversão de um sistema de arquivos manual para um sistema de 
arquivos computadorizado correspondente pode ser tecnicamente 
complexa (como as pessoas estão habituadas as interfaces relativamente 
amigáveis dos computadores de hoje, se esqueceram de quão hostis 
eram essas máquinas!). Isso gerou um novo tipo de profissional, 
conhecido como especialista em processamento de dados (PD), que 
devia ser contratado ou “desenvolvido” a partir da equipe atual. O 
especialista em PD criava as estruturas de arquivos computacionais 
necessárias, escrevendo o software que gerenciava os dados dentro 
dessas estruturas e projetava aplicativos que produziam relatórios 
com base nos dados dos arquivos. Assim, surgiram vários sistemas 
computadorizados “domésticos”.
 
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
9
De uma forma resumida, podemos dizer que existiam programas de 
computadores gravando dados em arquivos e eles eram responsáveis por toda a 
estrutura e complexidade de gravação. A figura a seguir ilustra essa abordagem.
FIGURA 7 – GERENCIAMENTO DE DADOS EM SISTEMA DE ARQUIVOS
FONTE: Os autores
Seguindo essa linha, podemos concluir que se a estrutura de dados de 
um arquivo fosse alterada, todos os programas que utilizassem esse arquivo 
precisariam ser atualizados, pois deixariam de funcionar. Para fins de exemplo, 
imagine que existe um arquivo com os dados de clientes. Foi solicitado que seja 
inclusa uma observação para cada cliente. Tomando como base a figura anterior, é 
feita uma alteração no programa que está rodando no computador 1 e logicamente 
no arquivo cliente. A partir desse momento o programa que está no computador 
2 para de funcionar, pois ele ainda trabalha com a estrutura de dados antiga. Em 
casos mais complexos, ele poderia “corromper” o arquivo cliente, porque não tem 
conhecimento da nova estrutura de armazenamento.
Esse problema é conhecido pelo nome de dependência estrutural, em que 
independente do tipo de alteração que seja feita no arquivo, todos os programas 
precisarão ser alterados. Isso abre margem para erros, tornando todo o processo 
mais caro e difícil de ser executado. O desejado seria a independência estrutural, 
em que qualquer alteração de estrutura não influenciaria no acesso aos dados.
Como foi mencionado anteriormente, na época, quando o armazenamento 
de dados era feito em simples arquivos, os sistemas eram desenvolvidos de forma 
isolada, com focos bem distintos. Isso significa que o gerente da área de vendas 
tinha o seu sistema, o de recursos humanos tinha outro e o financeiro poderia 
ter outro específico para a sua necessidade. Conhecendo este cenário, podemos 
imaginar que o gerente de vendas possui dados dos seus vendedores e que o de 
recursos humanos também. Como ambos trabalham em sistemas distintos, cada 
um tem a sua versão dos dados, ou seja, o nome do vendedor está armazenado no 
sistema de vendas e no de recursos humanos.
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
10
Redundância de dados é o termo utilizado quando temos o mesmo dado 
armazenado em mais de um local. Rob e Coronel (2011, p.18) fazem um alerta para 
possíveis problemas que a redundância de dados pode gerar.
A estrutura do sistema de arquivos dificulta a combinação de dados 
a partir de várias fontes e sua falta de segurança torna o sistema de 
arquivos vulnerável a falhas. A estrutura organizacional realiza o 
armazenamento dos mesmos dados em locais diferentes. Os profissionais 
de bancos de dados utilizam o termo ilhas de informação para se referir 
a essa localização dispersa dos dados. Como é improvável que os dados 
armazenados em locais diferentes sejam sempre atualizados de modo 
consistente, as ilhas de informação, em geral, contém versões diferentes
dos mesmos dados [...].
Pode acontecer, por exemplo, que um vendedor tenha uma alteração no seu 
nome. Essa alteração pode ter sido feita apenas no sistema de vendas, enquanto 
que no de recursos humanos o nome continua desatualizado. A figura a seguir 
documenta essa estrutura.
FIGURA 8 – REDUNDÂNCIA DE DADOS
FONTE: Os autores
A complexidade do gerenciamento de dados é alta no exemplo apresentado 
acima. Seria mais correto o dado estar armazenado em um único local para que 
todas as aplicações o consumissem.
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
11
Outro ponto a ser observado quanto ao armazenamento de dados em 
arquivos se refere à concorrência de acesso, ou seja, mais de um usuário tentando 
acessar o mesmo dado em um mesmo momento. Um exemplo clássico dessa 
situação é a manutenção de saldo de uma conta bancária. 
Imagine uma conta bancária que tem um saldo de R$ 1.500,00. Se dois 
clientes retirarem dinheiro dessa conta ao mesmo tempo, teremos um problema 
de inconsistência dos dados. Vamos ver na prática como isso acontece: o cliente 1 
e o cliente 2 fazem uma busca no saldo da conta e ambos têm como resultado R$ 
1.150,00. O primeiro retira R$ 300,00 da conta e o segundo R$ 150,00. Dependendo 
de qual cliente finalize a operação por último o saldo da conta poderá ser R$ 850,00 
(R$ 1.500,00 – R$ 300,00) ou R$ 1.000,00 (R$ 1.150,00 – R$ 150,00).
O correto seria que quando está sendo feita a manutenção do saldo pelo 
cliente 1, o cliente 2 ficasse aguardando a manutenção terminar para daí sim 
iniciar o seu procedimento. Em um sistema de arquivos isso é muito complicado 
de gerenciar.
Até agora vimos como era o armazenamento de dados em arquivos 
juntamente com algumas características negativas desse modelo. Percebemos 
que a dependência estrutural dos dados, a redundância e o acesso concorrente 
são fatores dificultadores que podem causar vários erros nos sistemas. Visando 
diminuir a complexidade no gerenciamento de dados surge o SGBD ou Sistema 
Gerenciador de Banco de Dados. Esse será o nosso próximo assunto. Por enquanto, 
entenda que compreender o funcionamento de sistemas que gravam dados em 
arquivos é muito útil para evitarmos os mesmos problemas quando iniciarmos o 
trabalho com SGBD.
4 SISTEMA GERENCIADOR DE BANCO DE DADOS
4.1 DEFINIÇÕES DE UM SGBD
Um Sistema Gerenciador de Banco de Dados é um software responsável pelo 
gerenciamento de base de dados. Uma das principais características dele é retirar 
da aplicação à estruturação dos dados, deixando de forma transparente o acesso 
aos mesmos. A figura a seguir mostra graficamente onde o SGBD está inserido.
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
12
FIGURA 9 – SGBD
FONTE: Os autores
O SGBD elimina boa parte da complexidade do gerenciamento de dados, 
fazendo com que o programador tenha um foco maior na lógica da sua aplicação 
do que no armazenamento dos dados.
Ao falarmos de SGBD precisamos entender como funciona a forma básica 
de armazenamento nesse novo tipo de organização. Ao invés de gravarmos dados 
em arquivos, gravamos em tabelas. Uma tabela possui colunas e registros. Vamos 
resumir a organização de armazenamento de dados de um SGBD:
• Um banco de dados é formando por uma ou mais tabelas.
• Tabelas são locais onde os dados ficam logicamente armazenados.
• Colunas são campos que armazenam um determinado tipo de dado.
• Registros são linhas, que de uma forma maisresumida, pode-se dizer que são 
conjuntos de campos preenchidos.
A figura a seguir esclarece esse conceito.
FIGURA 10 – FORMA BÁSICA DE ARMAZENAMENTO DE DADOS
FONTE: Os autores
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
13
4.2 FUNÇÕES DE UM SGBD
A seguir listamos algumas funções do SGBD: 
• Manutenção do dicionário de dados – toda aplicação que desejar trabalhar com 
o banco de dados fará isso por intermédio do SGBD. Ele mantém definições 
de estruturas de dados e como eles estão relacionados. Qualquer alteração de 
estrutura é automaticamente atualizada no dicionário de dados. Isso retira 
a responsabilidade dos programas que necessitam dos dados de manter a 
estrutura de organização dos mesmos. Essa é a função do SGBD que tem toda 
a estrutura dos dados em seu dicionário de dados. A figura a seguir traz um 
exemplo do dicionário de dados de um banco Mysql.
FIGURA 11 – DICIONÁRIO DE UM BANCO DE DADOS MYSQL
FONTE: Os autores
• Segurança – O SGBD é responsável por garantir regras de segurança no que 
diz respeito ao acesso a dados e a objetos do banco. Cada usuário deve utilizar 
algum meio para se autenticar no SGBD, seja por login e senha ou através de 
leitura biométrica. Ao se autenticar, existem regras que definem os acessos, ou 
seja, quais bases estão visíveis, quais tabelas ou qualquer outra característica que 
estará disponível. Também existem controles em nível de objeto. O usuário pode 
ter acesso somente à leitura em um determinado objeto e gravação/leitura em 
vários outros.
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
14
• Apresentação dos dados em vários formatos – Um exemplo clássico deste 
conceito se refere ao trabalho com datas. Para clarificar, vamos pensar em uma 
data: 21 de dezembro de 2012. Essa data aqui no Brasil pode ser digitada por 
um usuário como 21/12/2012, enquanto que nos Estados Unidos a mesma seria 
12/21/2012. O SGBD consegue manipular ambas as datas de forma transparente, 
desde que configurado corretamente.
• Controle de acesso simultâneo ao mesmo dado – garante a integridade e 
consistência dos dados armazenados no banco quando acessados de forma 
concorrente. Isso resolve o problema apresentado no título “3 HISTÓRICO DO 
GERENCIAMENTO DOS DADOS”, que descrevia o acesso de dois usuários na 
manutenção do saldo de uma conta bancária em um sistema de arquivos.
• Gerenciamento de backups – o SGBD fornece ferramentas para que o administrador 
do banco de dados possa configurar e efetuar backups. Se for feito o backup, outra 
funcionalidade existente é a de retornar os dados que o mesmo salvou. Isso pode 
ser necessário por vários motivos como, por exemplo, falhas de hardware ou 
manipulação da base de dados de forma incorreta.
• Linguagem de acesso e manipulação dos dados – é fornecida pelo SGBD uma 
linguagem estruturada para consulta e alteração dos dados. Através dela, é possível 
que o utilizador tenha acesso aos dados de uma forma mais simplificada. O SQL 
(Structured Query Language) é uma espécie de linguagem padrão para este fim. 
Alguns SGBDs fornecem outra linguagem de programação para possibilitar 
a implementação de rotinas que executem no servidor do banco. Isso pode 
viabilizar a criação de aplicações mais performáticas, pois ao invés de consumir 
processamento e recursos de rede da máquina do usuário, boa parte do programa 
roda no servidor.
4.3 ESTRUTURA DE UM SGBD
Os sistemas gerenciadores de bancos de dados são compostos, de uma 
forma geral, por módulos com funcionalidades bem definidas. Cada módulo 
tem sua responsabilidade no processo de gerenciamento dos dados. Usuários e 
programadores interagem com esses módulos a fim de obter seus resultados. A 
figura a seguir detalha essa estrutura.
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
15
FIGURA 12 – ESTRUTURA DE UM SGBD
FONTE: Disponível em: <http://www.ime.usp.br/~andrers/aulas/bd2005-1/aula5.html>. 
Acesso em: 18 nov. 2012.
Vamos detalhar os módulos apresentados na figura anterior.
• Programas aplicativos/consultas – Um usuário comum normalmente utiliza 
um sistema e é através desse sistema que o acesso ao banco de dados é feito. 
Já um programador tem ferramentas que são específicas para trabalhar com 
a tecnologia que o SGBD disponibiliza. Essas ferramentas tem um foco mais 
centrado na visualização de dados e manutenção de suas estruturas.
• Processador/otimizador de consultas – Interpreta todos os acessos que são feitos 
na base de dados com um foco maior em otimização. Em outras palavras, ele é 
responsável por processar e definir “caminhos” para que o usuário tenha uma 
resposta a sua solicitação com performance.
• Software para acessar os dados – Esse módulo é o responsável por recuperar 
os dados do local onde eles estão armazenados. Esses dados são divididos em 
dois grupos: os dados armazenados e a definição dos dados armazenados. O 
primeiro grupo se refere aos dados que um usuário comum manipula, como 
por exemplo, nomes de pessoas, cidades, endereços, telefones etc. Já o segundo 
define a forma de organização dos dados do primeiro grupo. É composto por 
tabelas, índices, relacionamentos etc.
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
16
4.4 TIPOS DE USUÁRIOS DO SGBD
Existem vários tipos de usuários que acessam bancos de dados. Alguns têm 
um foco mais gerencial, enquanto outros apenas se concentram na manipulação 
de dados da base. A seguir detalhamos alguns tipos de usuários e suas 
responsabilidades ou necessidades.
• Administrador do banco de dados (DBA – Database Administrator) – Essa figura 
é responsável por toda a administração do banco de dados. Atividades como 
instalação, configuração e melhorias em performance fazem parte do seu dia 
a dia. Também possui tarefas relacionadas ao gerenciamento de acesso de 
usuários na base e um constante monitoramento visando garantir uma alta 
disponibilidade do sistema.
• Projetista ou analista de dados – É o profissional que tem como tarefa fazer o 
mapeamento dos dados que deverão ser armazenados no banco. Em seguida, 
vem à definição da estrutura onde os mesmos serão “organizados”. Isso envolve 
a criação/manutenção de tabelas e demais objetos de acordo com a tecnologia 
do SGBD. Este usuário tem um grande foco em performance, pois quando vai 
definir a estrutura de organização dos dados é crucial que ela seja performática.
• Programador – É a figura que constrói o sistema que irá acessar o banco de 
dados. É imprescindível que o sistema desenvolvido manipule os dados de 
forma correta, para evitar a perda ou falta de confiança neles.
• Usuário comum – Utiliza o sistema que foi desenvolvido pelo programador para 
acessar o banco de dados. Normalmente desconhece as estruturas onde os dados 
estão armazenados. Consegue manipular somente o que o sistema permite. Ele é 
a sua fronteira com o SGBD.
5 PRINCIPAIS BANCOS DE DADOS DISPONÍVEIS NO 
MERCADO
Atualmente existem vários fornecedores de bancos de dados. Isso 
significa que é necessária uma boa análise antes de decidir qual banco utilizar. 
Cada um tem as suas características e peculiaridades. Alguns são apropriados 
para projetos menores, outros não. O custo para implantação também deve ser 
levado em conta. A seguir, vamos ver uma breve descrição dos principais SGBDs 
disponíveis no mercado.
5.1 MYSQL
É um dos SGBDs mais populares do mundo. Inicialmente foi desenvolvido 
para aplicações de pequeno porte, porém já superou há muito tempo essa barreira.
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
17
5.2 ORACLE
Hoje, é um dos bancos de dados mais robustos e confiáveis do mundo 
corporativo. Nasceu da ideia de um homem que percebeu que o mercado 
precisava desse tipo de tecnologia.
O MySQL teve origem quando os desenvolvedores David Axmark, 
Allan Larsson e Michael “Monty” Widenius, na década de 90, 
precisaram de uma interface SQL compatível com as rotinas ISAM que 
utilizavam em suas aplicações e tabelas. Em um primeiro momento, 
tentaram utilizar a API mSQL, contudo a API não era tão rápida quanto 
eles precisavam, pois utilizavam rotinas de baixonível (mais rápidas 
que rotinas normais). Utilizando a API do mSQL, escreveram em C e 
C++ uma nova API que deu origem ao MySQL. 
Com o ótimo resultado gerado por essa nova API, o MySQL começou a 
ser difundido e seus criadores fundaram a empresa responsável por sua 
manutenção, que é a MySQL AB. (MILANI, 2007, p. 23).
Como foi citado acima, a empresa que mantinha inicialmente o Mysql era 
a Mysql AB. Ela foi comprada pela Sun em janeiro de 2008. Em abril de 2009, a 
Oracle, que é uma das gigantes do mundo de bancos de dados comprou a Sun, 
sendo hoje responsável pela manutenção do MySql.
Atualmente, o Mysql se encontra na versão 5.6 e é muito utilizado em 
aplicações WEB. Roda em várias plataformas como Linux e Windows. É livre para 
uso não comercial. O site oficial é <http://www.mysql.com>.
Há quase trinta anos, Larry Ellison vislumbrou uma oportunidade que 
outras companhias não haviam percebido, quando encontrou uma descrição 
de um protótipo funcional de um banco de dados relacional e descobriu que 
nenhuma empresa tinha se empenhado em comercializar essa tecnologia. 
Ellison e os cofundadores da Oracle, Bob Miner e Ed Oates, perceberam que 
havia um tremendo potencial de negócios no modelo de banco de dados 
relacional, mas não se deram conta de que mudariam a face da computação 
empresarial para sempre. Hoje a Oracle (Nasdaq: ORCL) continua à frente de 
seu tempo. A tecnologia Oracle pode ser encontrada em quase todos os setores 
do mundo inteiro e nos escritórios de 98 das empresas citadas na lista “Fortune 
100”. A Oracle é a primeira empresa de software a desenvolver e empregar 
software empresarial totalmente habilitado para Internet em toda a sua linha 
de produtos: banco de dados, aplicativos empresariais e ferramentas para 
desenvolvimento de aplicativos e suporte a decisões. A Oracle é o principal 
fornecedor de software para gerenciamento de informações e a segunda maior 
empresa de software independente do mundo.
FONTE: Disponível em: <http://www.oracle.com/br/corporate/press/story-346137-ptb.html>. 
Acesso em: 16 jan. 2013.
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
18
5.3 POSTGRESQL
O Oracle possui uma vasta lista de recursos. Tem a linguagem PL/SQL para 
desenvolvimento de funcionalidades internas. Integra-se com outras linguagens 
de programação como JAVA, C, C++ etc. Roda em várias plataformas. O site oficial 
é <http://www.oracle.com>.
É conhecido pela sua robustez e confiabilidade e tem uma característica 
bem interessante: é um SGBD de código fonte aberto. O texto a seguir descreve 
esse banco de dados com uma maior riqueza de detalhes.
Leia a seguir um texto retirado do site da comunidade brasileira de 
PostgreSql.
UNI
O QUE É O POSTGRESQL?
Para alguns pode parecer um assunto batido, mas esse é um artigo 
introdutório, voltado principalmente àqueles que conhecem pouco ou nada 
sobre o PostgreSQL. O PostgreSQL é um SGBD (Sistema Gerenciador de 
Banco de Dados) objeto-relacional de código aberto, com mais de 15 anos 
de desenvolvimento. É extremamente robusto e confiável, além de ser 
extremamente flexível e rico em recursos. Ele é considerado objeto-relacional 
por implementar, além das características de um SGBD relacional, algumas 
características de orientação a objetos, como herança e tipos personalizados. 
A equipe de desenvolvimento do PostgreSQL sempre teve uma grande 
preocupação em manter a compatibilidade com os padrões SQL92/SQL99.
HISTÓRICO DO POSTGRESQL
O PostgreSQL (conhecido anteriormente como Postgres95) derivou 
do projeto POSTGRES da universidade de Berkley, cuja última versão foi 
a 4.2. O POSTGRES foi originalmente patrocinado pelo DARPA (Agência 
de Projetos de Pesquisa Avançada para Defesa), ARO (Departamento 
de Pesquisa Militar), NSF (Fundação Cinetífica Nacional) e ESL Inc. A 
implementação do projeto POSTGRES iniciou em 1986, já em 87 tornou-se 
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
19
operacional. A primeira versão lançada para o público externo foi em 1989. 
Devido a uma crítica feita ao seu sistema de regras, o POSTGRES teve essa 
parte reimplementada e lançada em uma segunda versão em 1990. Em 1991 
foi lançada a versão 3, com melhorias no executor de consultas e algumas 
partes do código foram reescritas. As versões subsequentes, até o Postgres95, 
foram focadas em confiabilidade e portabilidade. O POSTGRES foi utilizado 
para diversos sistemas de pesquisa e de produção, uma aplicação de 
análise financeira, um banco com rotas de asteroides, e diversos sistemas 
de informações geográficas. O código do POSTGRES foi aproveitado 
em um produto comercializado pela Illustra Information Technologies 
(posteriormente incorporada à Informix, que agora pertence à IBM).
A versão seguinte, o Postgres95, teve mudanças radicais em relação ao 
projeto original. O seu código foi totalmente revisado, o tamanho das fontes foi 
reduzido em 25%, e a linguagem SQL foi implementada como interface padrão. 
A performance foi consideravelmente melhorada e vários recursos foram 
adicionados. Em 1996. o nome Postgres95 tornou-se inadequado, o projeto foi 
rebatizado “PostgreSQL”, para enfatizar a relação do POSTGRES original com 
a linguagem SQL. A numeração da versão voltou a seguir o padrão anterior 
ao Postgres95 (considerada a 5.0), e a primeira versão do PostgreSQL foi a 6.0. 
Enquanto a ênfase do Postgres95 tinha sido a correção de falhas e otimização do 
código, o desenvolvimento das primeiras versões do PostgreSQL foi orientada 
à melhoria de recursos e implementação de novos recursos, sempre seguindo 
os padrões de SQL anteriormente estabelecidos.
O POSTGRESQL HOJE
A equipe do projeto cresceu e se espalhou pelo mundo. O Grupo Global de 
Desenvolvimento do PostgreSQL tem membros nos Estados Unidos, Canadá, 
Japão, Rússia, vários países da Europa e alguns outros. Esse grupo é formado 
essencialmente por empresas especializadas em PostgreSQL, empresas usuárias 
do sistema, além dos pesquisadores acadêmicos e programadores independentes. 
Além da programação, essa comunidade é responsável pela documentação, 
tradução, criação de ferramentas de modelagem e gerenciamento, e elaboração 
de extensões e acessórios.
Pela riqueza de recursos e conformidade com os padrões, ele é um 
SGBD muito adequado para o estudo universitário do modelo relacional, 
além de ser uma ótima opção para empresas implementarem soluções de alta 
confiabilidade sem altos custos de licenciamento. É um programa distribuído 
sob a licença BSD, o que torna o seu código fonte disponível e o seu uso 
livre para aplicações comerciais ou não. O PostgreSQL foi implementado em 
diversos ambientes de produção no mundo, entre eles, um bom exemplo do 
seu potencial é o banco de dados que armazena os registros de domínio .org, 
mantido pela empresa Afilias.
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
20
Alguns recursos presentes na versão mais recente:
Subconsultas.
Controle de concorrência multiversão (MVCC).
Integridade Referencial.
Funções armazenadas (Stored Procedures), que podem ser escritas em 
várias linguagens de programação (PL/PgSQL, Perl, Python, Ruby, e outras).
Gatilhos (Triggers).
Tipos definidos pelo usuário.
Esquemas (Schemas).
Conexões SSL.
Áreas de armazenamento (Tablespaces).
Pontos de salvamento (Savepoints).
Commit em duas fases.
Arquivamento e restauração do banco a partir de logs de transação.
Diversas ferramentas de replicação.
Extensões para dados geoespaciais, indexação de textos, xml e várias outras.
COMO COMEÇAR?
No site nacional do projeto podem ser encontrados tutoriais de instalação 
nas plataformas Linux e Windows, além do manual de referência traduzido. 
No site oficial, você encontra toda a documentação. Para baixar o código fonte 
do PostgreSQL, você pode utilizar o mirror brasileiro. Depois de seguir as 
instruções de instalação do tutorial, você pode escolher uma boa ferramenta 
gráfica de gerenciamento.
Alguns links úteis:
Site Oficial (<http://www.postgresql.org>)
Site de marketing (<http://advocacy.postgresql.org/?lang=br>)
Sitenacional (<http://www.postgresql.org.br>)
Lista de discussão nacional (<http://br.groups.yahoo.com/group/
postgresql-br>)
FONTE: Disponível em: <http://wiki.postgresql.org.br/Introdu%C3%A7%C3%A3o_e_hist%C3%B3rico>. 
Acesso em: 16 jan. 2013.
5.4 SQL SERVER
É o banco de dados da empresa Microsoft. É considerado um dos principais 
concorrentes da Oracle. O texto a seguir descreve o SQL Server.
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
21
TODA A HISTÓRIA DO SISTEMA SQL DA MICROSOFT
Você sabe o que é o SQL Server? Se você tem um blog ou um site que utiliza 
banco de dados já deve ter, pelo menos, ouvido falar nele. O MS SQL Server 
é um sistema de gerenciamento de banco de dados relacional desenvolvido 
pela Microsoft. A partir da versão 2008 a plataforma de dados com alta 
confiabilidade e que permite a redução de custos com eficiência e robustez. 
Tudo começou em março de 1987 quando a Microsoft comprou os direitos 
do DataServer da Sysbase para o sistema operacional OS/2. O objetivo era 
provocar o interesse e chamar a atenção da comunidade do dBase. Por isso a 
Microsoft traçou um acordo com a Ashton-Tate como forma de endossar esse 
novo processo. Assim, a primeira versão do SQL Server se chamava Ashton-
Tate/Microsoft SQL Server e chegou ao mercado na metade final de 1988. Em 
maio do ano seguinte a versão 1.0 para OS/2 era lançada com parca participação 
da Microsoft (limitando-se apenas a poucas ferramentas, testes e o projeto 
visando tornar o aplicativo mais simples de ser instalado). Na segunda metade 
de 1990 a união da Microsoft com a Ashton-Tate se encerrou e a versão 1.1 
do SQL Server passou a oferecer suporte para o Windows 3.0 (que era uma 
novidade na época). Apesar disso, a base do SQL era produzida pela Sysbase 
e a Microsoft sequer tinha acesso ao código-fonte. Qualquer defeito tinha que 
ser relatado para a Sysbase e corrigido apenas por ela. Só em 1991 a Microsoft 
passou a poder acessar a fonte do SQL apenas para leitura.
Com o lançamento da versão 4.2 para OS/2 no fim de 1991 a Microsoft 
já desenvolvia o banco de dados em conjunto com a Sysbase, o que só mudou 
em agosto de 1993 quando a Microsoft finalmente conseguiu a totalidade da 
criação do SQL Server e lançou a versão para o Windows NT 3.1. Essa nova 
versão já era em 32-bit. Assim, pouco tempo depois, a parceria entre as duas 
empresas acabava.
Podemos declarar como principais vantagens do SQL Server o 
fornecimento de uma plataforma de grande confiabilidade e robustez capaz de 
suportar aplicações de missão crítica de grande exigência. A possibilidade de 
encriptação dos dados contidos em todo o banco de dados ou nos arquivos de 
log. Isso protege os dados das solicitações não autorizadas sem a necessidade 
de aplicativos complementares. Além disso, ele permite o espelhamento do 
banco de dados a recuperação automática da página de dados e a compressão 
do fluxo de logs. Um aumento na produtividade com a rapidez e simplicidade 
de instalação, manutenção e uso. Também possui uma enorme versatilidade 
na aceitação de informações e no oferecimento de respostas previsíveis as 
demandas dos usuários.
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
22
As aplicações vão desde criar aplicações que se utilizem de um banco 
de dados de forma rápida e simples até aplicações de alta complexidade com 
a mesma facilidade. Da mesma forma o SQL Server garante que seus dados 
podem ser acessados de qualquer lugar mesmo estando baseados a distância e 
serem acessados por uma enorme variedade de aplicativos diferentes o que o 
torna muito prático e de fácil uso para hospedagem de sites na internet.
FONTE: Disponível em: <http://www.artigonal.com/advertising-artigos/toda-a-historia-do-sistema-
sql-da-microsoft-1845126.html>. Acesso em: 16 jan. 2013.
Caro(a) acadêmico(a)! A Leitura Complementar a seguir traz uma visão clara 
de questões relacionadas à utilização de um sistema de banco de dados. A seguir serão 
apresentados alguns fatores que devem ser analisados quando trabalhamos com esse tipo de 
tecnologia.
UNI
GERENCIAMENTO DO SISTEMA DE BANCO DE DADOS: UMA 
MUDANÇA DE FOCO
A introdução de um sistema de banco de dados em um ambiente de sistema 
de arquivos fornece um modelo no qual podem ser aplicados procedimentos e 
padrões rígidos. Como consequência, o papel do componente humano muda da 
ênfase em programação (no sistema de arquivos) para focar nos aspectos mais 
amplos de gerenciamento dos recursos de dados da organização e na administração 
do próprio software do banco de dados complexo.
O sistema de banco de dados torna possível atingir usos muito mais 
sofisticados dos recursos de dados contanto que seja projetado para aproveitar 
esse poder disponível. Os tipos de estruturas de dados criados no banco de dados 
e a extensão dos relacionamentos entre elas desempenham um papel poderoso na 
determinação da eficiência do sistema.
Embora o sistema de banco de dados apresente vantagens consideráveis em 
relação à abordagem de gerenciamento anteriores, também trazem desvantagens 
significativas. Por exemplo:
LEITURA COMPLEMENTAR
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
23
Aumento de custos: os sistemas de banco de dados exigem hardware e 
software sofisticado e pessoal altamente treinado. O custo de manutenção do 
hardware, software e pessoal necessários para operar e gerenciar um sistema de 
banco de dados pode ser substancial. Os custos de treinamento, licenciamento 
e atendimento as regulamentações costumam ser negligenciados quando da 
implementação desses sistemas.
Complexidade do gerenciamento: os sistemas de banco de dados apresentam 
interfaces com muitas tecnologias diferentes e têm um impacto significativo sobre 
os recursos e a cultura de uma empresa. As alterações introduzidas pela adoção do 
sistema de banco de dados devem ser adequadamente gerenciadas para garantir 
que ajudem no progresso dos objetivos da empresa. Levando em conta o fato que 
os bancos de dados mantêm dados fundamentais da empresa que são acessados 
a partir de várias fontes, as questões de segurança deve ser uma constante 
preocupação.
Manutenção de banco de dados atualizado: para maximizar a eficiência 
do sistema de banco de dados, deve-se manter o sistema atualizado. Portanto, é 
necessário fazer atualizações frequentes e aplicar os últimos pacotes e medidas de 
segurança a todos os componentes. Como a tecnologia do banco de dados avança 
rapidamente, os custos com treinamento de pessoal tendem a ser significativos.
Dependência do fornecedor: Em virtude do alto investimento em tecnologia 
e treinamento de pessoal, as empresas podem hesitar em trocar os fornecedores de 
banco de dados. Por essa razão, é menos provável que estes ofereçam vantagens 
de preço aos clientes existentes, que ficarão restritos quanto a suas escolhas de 
componentes de sistema de banco de dados.
Ciclos frequentes de atualização/substituição: os fornecedores de SGBDs 
atualizam seus produtos adicionando novas funcionalidades. Em geral, esses 
recursos são integrados a novas versões de atualização de software. Algumas 
dessas versões exigem atualizações de hardware. Não são apenas as atualizações 
que geram custo, mas também o treinamento dos usuários e administradores para 
que utilizem e gerenciam adequadamente os novos recursos.
FONTE: Rob e Coronel (2011, p. 18)
24
RESUMO DO TÓPICO 1
Neste tópico, você viu que:
• Existe uma grande diferença entre dado, informação e conhecimento.
• Bancos de dados relacionais predominam no mundo do desenvolvimento de 
software.
• SGBD ou Sistema Gerenciador de Bancos de Dados foi uma evolução do 
paradigma de armazenamento em arquivos.
• Algumas dicas são importantes para ter sucesso na escolha do banco de dados 
a ser utilizado.
25
1 De acordo com o conteúdo estudado, defina o conceito de dado, informação 
e conhecimento.
2 O que é um SGBD ou Sistema Gerenciador de Bancos de Dados e qual é a sua 
melhoria em relação ao armazenamento de dados em arquivos? 
3 Dê quatro exemplos de bancos de dados relacionaisdisponíveis no mercado. 
4 Cite as principais funções de um SGBD.
5 O que faz uma pessoa que tem o cargo de Administrador do Banco de Dados 
(DBA – Database Administrator)?
AUTOATIVIDADE
26
27
TÓPICO 2
EVOLUÇÃO DOS BANCOS DE DADOS
UNIDADE 1
1 INTRODUÇÃO
“O descontentamento é o primeiro passo na evolução de um homem 
ou de uma nação”. (Oscar Wilde)
Relembrando um pouco do Tópico 1, vimos que inicialmente os bancos de 
dados eram simples sistemas de arquivos. Tudo o que era desenvolvido tinha uma 
finalidade específica, não existindo muita integração entre sistemas distintos. Isso 
gerou vários problemas, como redundância de dados e concorrência de acessos. 
Outro ponto negativo nesse tipo de estrutura é que toda a organização dos dados 
ficava armazenada no programa que fazia a sua utilização. Questões relacionadas 
à alteração dessa estrutura ficavam relacionadas a inconsistências e trabalho árduo.
Também foi apresentado o conceito de SGBD, que é a evolução do modelo 
de sistemas de arquivos. Os principais SGBDs da atualidade fizeram parte desta 
apresentação e todos são considerados SGBDs relacionais ou objeto relacional. 
Esse tipo de tecnologia é o que predomina hoje no mercado quando tratamos de 
aplicações tradicionais.
Para entendermos o futuro é interessante conhecermos o passado. Por isso 
esse tópico trata da evolução dos bancos de dados, dividindo-se em três grupos: 
histórico da evolução, arquitetura e níveis de abstração dos bancos de dados. 
O primeiro trata as gerações dos bancos de dados (três gerações), o segundo 
as arquiteturas (centralizadas, distribuídas, cliente-servidor etc.) e o terceiro a 
abstração (três níveis).
Bons estudos!
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
28
2 HISTÓRICO DA EVOLUÇÃO DOS BANCOS DE DADOS
2.1 PRIMEIRA GERAÇÃO
A evolução ou o histórico da evolução dos bancos de dados estão divididos 
em três gerações: a primeira trata dos bancos hierárquicos e em rede, a segunda 
dos relacionais e a terceira dos bancos orientados a objetos e objeto relacional. 
Vamos estudar cada geração para entender melhor todo o processo de evolução.
Foi na década de 60 que “nasceram” os primeiros bancos de dados. Existiam 
basicamente duas formas de organização: o modelo hierárquico e o em rede. Ambos 
trabalhavam com o conceito de registro, que segundo Korth e Silberschatz (1995), 
é uma coleção de campos (atributos) os quais contêm apenas um valor de dado.
Também existe a ideia de ligação entre registros. Korth e Silberschatz (1995) 
definem que uma ligação é uma associação entre exatamente dois registros.
Um banco de dados hierárquico consiste basicamente em um conjunto de 
registros conectados por meio de ligações. Toda a estrutura está organizada em um 
modelo de árvore ou também conhecido como modelo hierárquico. Cada registro 
filho pode ter apenas um registro pai. Um registro pai pode ter vários registros 
filho. Exemplificamos isso na figura a seguir.
FIGURA 13 – RELAÇÃO ENTRE REGISTRO PAI E REGISTROS FILHOS
FONTE: Os autores
Para simplificar o conceito de um banco de dados hierárquico observe a 
figura a seguir. Nela apresentamos uma estrutura típica de clientes de um banco 
com suas contas e saldo. Esse exemplo é muito utilizado em livros que tratam 
desse assunto.
PAI
FILHO FILHO FILHO
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
29
FIGURA 14 – ESTRUTURA DE UM BANCO DE DADOS HIERÁRQUICO
FONTE: Os autores
A figura a seguir demostra a estrutura dos dados que estão na figura 
anterior.
FONTE: Os autores
FIGURA 15 – ESTRUTURA DE DADOS DA FIGURA 14
Os dados da conta e saldo podem ser acessados somente a partir do nó 
raiz (registro falso), seguindo os registros da esquerda para a direita. É necessário 
navegar por toda a estrutura para chegar a esses valores. Um dos problemas se 
refere à duplicidade de dados. Por exemplo, se uma conta pertencesse a mais de 
um cliente, os dados da conta provavelmente precisariam ser duplicados. Isso, 
segundo Korth e Silberschatz (1995) gera dois inconvenientes: a inconsistência dos 
dados quando acontecerem atualizações e a perda de espaço em disco.
Marcando presença ainda na primeira geração estão os bancos de dados 
que seguem o modelo em rede. São considerados como sendo uma evolução do 
modelo hierárquico. Embora o nome sugira ligação com redes de computadores 
(um computador “ligado” ao outro), o conceito não tem relação com isso.
Esse modelo surgiu com o benefício de que o registro possa fazer parte de 
várias associações, o que não era possível no hierárquico (a não ser que o registro 
fosse duplicado). Também eliminou a hierarquia quando ao acesso dos dados. A 
figura a seguir mostra uma estrutura de dados no modelo rede.
RAIZ
RAIZ
Marcos Silva
NOME CPF
Nº CONTA Nº CONTASALDO SALDO
CPFNOME
João Trindade469.206.617-21 227.428.671-04
R$ 150,00R$ 700,0070948 12496
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
30
FIGURA 16 – ESTRUTURA DE DADOS NO MODELO REDE
FONTE: Os autores
Na parte esquerda da figura 16 temos o nome do cliente e seu CPF. No 
lado direito a conta e o saldo. Note que agora é possível associar uma conta a dois 
clientes sem ter que duplicá-la (a conta 70948 pertence ao Marcos e ao João). Não 
temos a presença de um registro falso (raiz), sendo que agora se podem acessar os 
dados de qualquer parte do grafo.
Apesar de uma aparente melhoria em relação aos bancos de dados 
hierárquicos, o modelo em redes apresenta alguns problemas. É complicado para 
o programador trabalhar com esse modelo, pois ele tem que pensar em ligações de 
registros e como percorrê-las para buscar os dados que necessita.
Sendo assim, podemos concluir que a primeira geração de bancos de dados 
deixou pontos a serem melhorados. Entretanto, na época, existiam sistemas que 
eram referência para os modelos hierárquicos e de redes. Como exemplo, Kort 
e Silberschatz (1995) citam o IMS – sistema de gerenciamento de informações da 
IBM (hierárquico) e o IDMS (rede).
2.2 SEGUNDA GERAÇÃO
No início da década de 70, surge um novo conceito em banco de dados: o 
modelo de dados relacional. Esse modelo é largamente utilizado até os dias de hoje por 
aplicações de processamento de dados comerciais mais padronizadas (ERPs, CMDs 
etc.). Date (2003) nos diz que a introdução do modelo relacional em 1969-1970 foi sem 
dúvida o evento mais importante em toda a história da área de bancos de dados.
Rob e Coronel (2011) fazem um breve relato sobre este modelo.
O modelo relacional foi apresentado em 1970 por E. F. Codd (da IBM) 
em seu famoso artigo “A Relational Model Data for Large Shared 
Databanks” (Um modelo relacional de dados para grandes bancos de 
dados compartilhados) (Comunicações da ACM, junho de 1970, p. 377-
387). O modelo relacional representava uma importante ruptura tanto 
para usuários como para projetistas. Para utilizar uma analogia, esse 
modelo produziu um banco de dados de “câmbio automático” para 
substituir os de “câmbio manual” que o precederam. Sua simplicidade 
conceitual preparou o terreno para a verdadeira revolução dos bancos 
de dados. (ROB; CORONEL, 2011, p. 40).
Marcos Silva
João Trindade
469.206.617-21
227.428.671-04 R$ 150,00
R$ 700,0070948
12496
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
31
O modelo relacional trabalha na sua forma mais básica com tabelas. Podem 
existir relações entre as mesmas para buscas de registros. A definição das tabelas 
pode envolver restrições para garantir dados confiáveis. Este modelo elimina a 
complexidade de navegação ou busca de dados presentes nos hierárquicos e nos 
de rede. A figura a seguir traz um exemplo de dados organizados sob o modelo 
relacional. Neste exemplo são listados os clientes de um banco com seus respectivos 
gerentes de conta.
FIGURA 17 – ORGANIZAÇÃO DE DADOS NO MODELO RELACIONAL
FONTE: Os autores
Note que na figura anterior existe um relacionamento entre as tabelas cliente 
e gerente. Para tal, é utilizada a coluna CD_GERENTE. Neste caso, significa que 
um cliente pode ter somente um gerente e que um gerente podeter vários clientes. 
Podem ser adicionadas restrições em ambas as tabelas para que, por exemplo, não 
se permita o cadastro de mais de um gerente ou cliente com o mesmo CPF.
Quando trabalhamos com um modelo relacional é comum a utilização de 
um diagrama relacional ou MER – Modelo Entidade Relacionamento. A figura a 
seguir traz o MER da estrutura apresentada na figura anterior.
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
32
FIGURA 18 – MODELO ENTIDADE RELACIONAMENTO FIGURA 17
FONTE: Os autores
A presença de uma chave ao lado das colunas CD_CLIENTE E CD_
GERENTE indica que os campos são identificadores únicos de registros, ou seja, 
o dado que está nessas colunas não poderá se repetir na tabela. Diz-se que esses 
campos são chaves primárias.
Boas partes dos conceitos apresentados aqui serão revistos e aprofundados 
na Unidade 2, que vai tratar exclusivamente do modelo de dados relacional.
2.3 TERCEIRA GERAÇÃO
A terceira geração é datada em meados do ano de 1980 e vai até os dias 
atuais. Como em todas as outras, essa geração também têm o seu destaque 
tecnológico. O nome deste novo conceito é banco de dados orientado a objetos.
Para detalhar melhor qual foi a origem deste tipo de banco de dados, 
Silberschatz, Korth e Sudarshan (2006) nos apresentam um breve relato.
As aplicações tradicionais de bancos de dados consistem em tarefas de 
processamento de dados, como transações bancárias e gerenciamento de 
folha de pagamento, com tipos de dados relativamente simples, que são 
adequados ao modelo de dados relacional. Uma vez que os sistemas de 
bancos de dados foram aplicados a uma faixa mais ampla de aplicações, 
como projeto auxiliado por computador e sistemas de informações 
geográficas, as limitações compostas pelo modelo relacional se 
apresentaram como um obstáculo. A solução era a introdução dos bancos 
de dados baseados em objeto, que permitem lidar com tipos de dados 
complexos. (SILBERSCHATZ; KORTH; SUDARSHAN, 2006 p. 241).
Esse novo tipo de estruturação permite uma adaptação menos dolorosa, 
porque vários programadores já estão familiarizados em linguagens orientadas a 
objeto, o que em termos de conceito são iguais a este tipo de banco. Tudo “gira” 
em torno de objetos, que possuem atributos e propriedades com mais uma gama 
de recursos para atingir seus objetivos.
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
33
Existe também uma variação do modelo orientado a objetos “puro”. Ele 
se chama modelo de dados objeto-relacional, que é um meio termo entre bancos 
relacionais e bancos orientados a objetos. Elmasri e Navathe (2011) explicam 
essa nova ideia.
Vendedores de SGBD relacional (SGBDR) também reconheceram a 
necessidade de incorporar recursos que foram propostos para bancos 
de dados de objeto, e versões mais novas de sistemas relacionais 
incorporaram muitos desses recursos. Isso levou a sistemas de bancos 
de dados que são caracterizados como objeto relacional ou SGBDORs. 
A versão mais recente do padrão SQL (2008) para SGBDRs inclui muitos 
desses recursos, que eram conhecidos originalmente como SQL/Object e 
agora têm sido incorporados na especificação SQL principal, conhecida 
como SQL/Foundation. (ELMASRI; NAVATHE, 2011, p. 236).
Entretanto, os bancos de dados orientados a objetos ainda não têm um 
uso massivo em virtude da grande popularidade de sistemas relacionais e objeto 
relacional. Fernando Amaral faz algumas análises evidenciando essa situação.
Leia a seguir um texto que faz uma análise sobre o motivo pelo qual bancos de 
dados orientados a objetos não são utilizados em larga escala.
IMPORTANT
E
POR QUE NÃO ESTAMOS UTILIZANDO BANCO DE DADOS 
ORIENTADOS A OBJETOS?
A orientação a objetos, mesmo que não da forma purista encontrada 
no mundo acadêmico, é uma realidade irreversível no mundo do 
desenvolvimento de software. Mesmo o próprio Visual Basic, uma das 
linguagens mais utilizadas do mundo e que sempre foi rotulada como 
linguagem “para fracos”, sem tipagem e sem qualquer recurso de OO, 
ganhou, com o lançamento da plataforma. NET, uma versão totalmente 
reformulada e OO, onde restou pouca semelhança com o VB clássico.
Agora, e quanto ao universo dos Bancos de Dados? A esmagadora maioria 
dos gerenciadores de banco de dados existentes hoje no mercado são relacionais, 
e não há qualquer evidência de uma tendência em contrário, ou seja, parece 
que no futuro vamos continuar utilizando banco de dados relacionais. Porque o 
mercado de banco de dados continua predominantemente relacional, enquanto 
utilizamos cada vez mais linguagens de programação OO?
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
34
O QUE ACONTECEU?
Diante desta indagação, resolvi investigar os motivos, e descobri que 
são muitos. Inicialmente um bom OODBMS é muito, muito mais caro que um 
produto relacional “Top” de linha, além disso:
- O modelo relacional é mais simples
- O modelo OO não tem a escabilidade de um banco de dados relacional
- O modelo OO possui dependência de linguagem: um banco de dados OO 
deve ser acessado através de uma API específica, normalmente através de uma 
linguagem específica. Por outro lado, nos OODBMS a linguagem e o banco de 
dados utilizam os mesmo tipos de dados.
- Consultar um banco de dados relacional, devido a sua natureza, é mais simples. 
Em um banco de dados OO não é possível fazer joins ou consultas “Ad-Hoc”.
Outro fato que não deve ser esquecido é que o modelo relacional é mais 
antigo, possui uma padronização maior e um maior número de ferramentas. Os 
bancos de dados OO se mostraram superiores em aplicações específicas, como, 
por exemplo, CAD, multimídia etc.
CONSEQUÊNCIAS: IMPEDANCE MISMATCH
Então tudo indica que os bancos de dados relacionais vão continuar 
predominantes por muito tempo, e que, cada vez as linguagens de programação 
serão OO (repetindo: mesmo que não da forma purista encontrada no mundo 
acadêmico). Mas como trabalhar corretamente com uma linguagem OO e um banco 
de dados relacional? Na OO temos objetos, que representam entidades do mundo 
real e atributos, que são suas características. No modelo relacional temos Entidades 
(ou tabelas), com atributos (campos). Na OO, o relacionamento entre objetos é 
através de referências, no relacional, através de chaves primárias e estrangeiras.
A implementação de uma classe terá que contornar todos os problemas 
desta diferença entre universos tão heterogêneos. Para uma simples classe 
poderá parecer fácil, mas para um sistema complexo com dezenas ou centenas 
de classes e relacionamentos, pode virar um pesadelo.
Este conflito objeto X relacional é conhecido com “The Object-Relational 
Impedance Mismatch”, ou simplesmente Impedance Mismatch, algo como 
um problema de adaptação, numa tradução livre. Estudos afirmam que a 
Impedance Mismatch podem consumir até 25 % do tempo de desenvolvimento 
de um software e ainda prejudicar consideravelmente seu desempenho.
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
35
O obra Agile Database Techniques: Effective Strategies for the Agile 
Software Developer, (Scott W. Ambler, ISBN:0471202835), dedica o capítulo 7 
de título The Object-Relational Impedance Mismatch a debater esse assunto, e é 
uma leitura altamente recomendada.
FONTE: Disponível em: <http://www.fernandoamaral.com.br/Default.aspx?Artigo=17>. Acesso 
em: 22 jan. 2013.
Com o passar do tempo é possível que esta situação mude. Existem grandes 
iniciativas para que isso aconteça. O cache da empresa Intersystems é um exemplo 
disto. Outra tendência é que o uso desta tecnologia se limite apenas a situações 
onde existem dados complexos, como informações geográficas, aplicações que 
trabalham com imagens, entre outras.
3 ARQUITETURA DE BANCO DE DADOS
3.1 ARQUITETURA CENTRALIZADA
A arquitetura de um banco de dados está diretamente ligada a questões 
de hardware e sistema computacional existentes na estrutura em questão. O 
poder de processamento, a estrutura de rede, a memória e diversos outros 
componentes, são características que fazem parte da análise de toda arquitetura 
parabancos de dados.
Sendo assim, vamos nos concentrar em quatro tipos de arquitetura: 
centralizada, cliente-servidor, paralela e distribuída. Cada um destes tipos teve 
grande importância na história da evolução dos bancos de dados.
Os primeiros bancos de dados estavam implementados nesse tipo de 
arquitetura. Na década de 1970, eles tinha a implementação centralizada, 
normalmente em mainframes. Para os usuários acessarem os dados utilizavam 
terminais sem capacidade de processamento. Esses computadores se conectavam 
em mainframes (onde era feito todo o processamento) e ali obtinham os dados 
que necessitavam.
Na arquitetura centralizada, existem duas formas de utilização de sistemas: 
a multiusuário e a monousuário. A estrutura exposta no parágrafo anterior é um 
exemplo de sistema multiusuário. Silberschatz, Korth e Sudarshan (2006, p. 527) 
exemplificam com mais detalhes essas duas formas.
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
36
Distinguimos duas maneiras como os computadores são usados: 
como sistemas monousuário e como sistemas multiusuários. Os 
computadores pessoais e as estações de trabalho caem na primeira 
categoria. Um sistema monousuário típico é uma unidade de desktop 
usada por uma única pessoa, normalmente com apenas uma CPU em 
um ou dois discos rígidos e normalmente somente uma pessoa usando 
a máquina de cada vez. Um sistema multiusuário típico, por outro lado 
tem mais discos e mais memória, pode até ter várias CPUs e possui um 
sistema operacional multiusuário. Ele atende a uma grande quantidade 
de usuários que estão conectados ao sistema por meio de terminais.
Veremos nos próximos tópicos a evolução das arquiteturas centralizadas. 
ESTUDOS FU
TUROS
3.2 ARQUITETURA CLIENTE-SERVIDOR
Conforme os computadores pessoais foram evoluindo e o seu custo se 
tornou menor, a arquitetura centralizada, como era conhecida, teve o seu uso 
diminuído. Os computadores pessoais substituíram os terminais de acesso e 
começaram a desempenhar novos papéis. O gerenciamento da interface que antes 
era responsabilidade do servidor, agora passou a ser gerenciado por clientes.
Em resumo, os sistemas centralizados atualmente respondem requisições 
que são feitas pelos sistemas clientes. Esse é o conceito de cliente-servidor. A figura 
a seguir representa graficamente esse conceito.
FIGURA 19 – ARQUITETURA CLIENTE-SERVIDOR
FONTE: Os autores
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
37
A funcionalidade oferecida pelos servidores de bancos de dados cliente-
servidor pode ser dividida em duas partes: o front-end e o back-end. O back-end 
basicamente controla as estruturas de acesso ao dado, enquanto o front-end faz a 
interface com o usuário final. A figura a seguir expõe esse cenário.
FIGURA 20 – FUNCIONALIDADE DE FRONT-END E BACK-END
FONTE: Silberschatz, Kort e Sudarshan (2006, p. 529)
Novamente, se você observar a Figura 20, estamos nos referindo a SQL (Structured 
Query Language). Por hora entenda que SQL é uma linguagem para acesso/manipulação dos 
dados. A Unidade 3 deste Caderno de Estudos tratará de esclarecer este assunto.
ESTUDOS FU
TUROS
3.3 ARQUITETURA PARALELA
É uma arquitetura que tem como objetivo o compartilhamento de recursos 
para processamento de dados. O texto sobre sistemas paralelos de Silberschatz, 
Korth e Sudarshan (2006) detalha este conceito.
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
38
SISTEMAS PARALELOS
Sistemas paralelos melhoram as velocidades de processamento e E/S 
usando várias CPUs e discos em paralelo. As máquinas paralelas estão se 
tornando cada vez mais comuns, tornando o estudo de sistemas de banco 
de dados paralelos cada vez mais importantes. A força motriz por trás dos 
sistemas de banco de dados paralelos é a demanda de aplicações que precisam 
consultar bancos de dados extremamente grandes (da ordem de terabytes – ou 
seja, 10 (12) bytes) ou que tenham de processar um número extremamente 
grande de transações por segundo (da ordem de milhares de transações por 
segundo). Os sistemas de bancos de dados centralizados e cliente-servidor 
não são poderosos o suficiente para lidar com tais aplicações.
No processamento paralelo, muitas operações são realizadas 
simultaneamente, ao contrário do processamento serial, em que as etapas 
computacionais são realizadas sequencialmente. Uma máquina paralela com 
granularidade grossa consiste em um pequeno número de processadores 
poderosos; uma máquina maciçamente paralela ou paralela com granularidade 
fina utiliza milhares de processadores menores. A maior parte das máquinas de 
alto nível hoje em dia oferece algum grau de paralelismo com granularidade 
grossa; máquinas com dois ou quatro processadores são comuns. Computadores 
maciçamente paralelos podem ser distinguidos de máquinas paralelas com 
granularidade grossa pelo grau muito maior de paralelismo que eles admitem. 
Computadores paralelos, com centenas de CPus e discos, estão disponível 
comercialmente.
Existem duas medidas principais de desempenho de um sistema de 
banco de dados: 1) throughput, o número de tarefas que pode ser completado 
em determinado intervalo de tempo, e 2) tempo de resposta, a quantidade 
de tempo necessária para completar uma única tarefa desde o momento 
em que ela foi submetida. Um sistema que processa um grande número 
de transações pequenas pode melhorar o troughput processando muitas 
transações em paralelo. Um sistema que processa grandes transações pode 
melhorar o tempo de resposta e também o troughput realizando subtarefas 
de cada transação em paralelo.
FONTE: Silberschatz, Korth e Sudarshan (2006, p. 532)
3.4 ARQUITETURA DISTRIBUÍDA
A definição mais básica de sistemas distribuídos é que máquinas diferentes 
podem estar conectadas entre si através de uma rede de comunicações. O sistema 
distribuído difere do sistema paralelo na seguinte questão: no paralelo a tendência 
é que as máquinas fiquem mais próximas, enquanto que no distribuído elas podem 
estar geograficamente distantes. 
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
39
Date (2003) nos diz que a internet é um exemplo mais óbvio de sistema 
distribuído, de tal modo que uma única tarefa de processamento de dados possa 
se estender a várias máquinas da rede.
A figura a seguir mostra um exemplo de arquitetura de bancos de dados 
distribuída.
FIGURA 21 – ARQUITETURA DE BANCO DE DADOS DISTRIBUÍDA
FONTE: Rob e Coronel (2011, p. 503)
Rob e Coronel (2011) nos dizem que bancos de dados distribuídos, por sua 
vez, armazenam o banco relacionado logicamente por dois ou mais locais físicos 
independentes.
Veja o quadro a seguir, que mostra as vantagens e desvantagens desse modelo 
de arquitetura.
NOTA
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
40
QUADRO 1 – VANTAGENS E DESVANTAGENS DE BANCOS DE DADOS DISTRIBUÍDOS
Vantagens
Os dados ficam localizados próximo do local de 
maior demanda. Os dados em um sistema de 
banco de dados distribuído são dispersos para 
atender às necessidades comerciais.
Maior rapidez de acesso aos dados. Os 
usuários finais costumam trabalhar apenas 
com um subconjunto dos dados da empresa, 
armazenado localmente.
Maior rapidez de processamento de dados. Um 
sistema de gerenciamento de banco de dados 
distribuídos divide a carga de trabalho do 
sistema, processando dados em vários locais.
Facilidade de ampliação. É possível adicionar 
novos locais à rede sem afetar as operações de 
outros locais.
Aprimoramento das comunicações. Como os 
sites locais são menores e mais próximos dos 
clientes, promovem melhor comunicação entre 
os departamentos e entre os clientes e a equipe 
da empresa.
Custos operacionais reduzidos. Do ponto de 
vista dos custos, é mais eficiente adicionar 
estações de trabalho a uma rede do que 
atualizar um sistema de mainframe. O trabalho 
de desenvolvimento é feito de modo mais 
rápido e barato em PCs de baixo custo do que 
em mainframes.
Interface amigável. Os PCs e as estações de 
trabalho costumam ser equipados com interface 
gráfica de usuário (GUI) fácil de usar. A GUI 
simplificao treinamento e utilização dos usuários 
finais.
Menor risco de falha em ponto único. Quando 
um componente dos computadores falha, o 
trabalho é mantido por outras estações. Os 
dados também são distribuídos em vários 
locais.
Independência do processador. O usuário final 
é capaz de acessar todas as cópias disponíveis 
dos dados e suas solicitações são processadas 
por qualquer processador no local dos dados.
Desvantagens
Complexidade de gerenciamento e controle. As 
aplicações devem reconhecer a localização dos 
dados e ter a capacidade de integrá-los a partir de 
vários locais. É necessário que os administradores 
tenham capacidade de coordenar as atividades 
do banco de dados, evitando sua degradação em 
função de anomalias.
Dificuldade tecnológica. É necessário tratar 
e solucionar a integridade dos dados, 
o gerenciamento de transações, o controle 
de concorrência, o backup, a recuperação, a 
otimização de consultas, a seleção do caminho 
de acesso etc.
Segurança. A probabilidade de falhas de 
segurança aumenta quando os dados são 
armazenados em vários locais. A responsabilidade 
do gerenciamento dos dados será compartilhada 
por diferentes pessoas em diversos locais.
Falta de padrões. Não há protocolos de 
comunicação padronizados no nível de banco 
de dados. (Embora o TCP/IP seja, na prática, um 
padrão no nível de rede, não há padronização 
no nível de aplicação.) Por exemplo, diferentes 
fornecedores de banco de dados empregam 
técnicas diferentes e geralmente incompatíveis 
de gerenciamento da distribuição de dados e 
processamento no ambiente de SGBDD.
Ampliação das necessidades de armazenamento 
e infraestrutura. São necessárias várias cópias 
de dados em diferentes locais, exigindo, assim, 
espaço adicional de armazenamento em disco.
Aumento de custos com treinamento. Os custos 
com treinamento costumam ser mais elevados em 
modelos distribuídos do que em centralizados, 
às vezes a ponto de compensar as economias 
operacionais e de hardware.
Custos. Os bancos de dados distribuídos exigem 
infraestrutura duplicada para operar (localização 
física, ambiente, pessoal, software, licenciamento 
etc.).
FONTE: Rob e Coronel (2011, p. 502)
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
41
GRIDS COMPUTACIONAIS COMO TENDÊNCIA NO PROCESSAMENTO 
DE BANCOS DE DADOS
Methanias Colaço Júnior
A computação distribuída é uma realidade evidente no contexto dos 
Sistemas Gerenciadores de Banco de Dados. Neste artigo, apresentaremos o 
conceito de uma tecnologia distribuída emergente: os Grids Computacionais.
 
Atualmente, o custo para se ter um banco de dados com capacidade de 
terabytes (1024 gigabytes) já não é, relativamente, tão alto. Com a evolução 
da capacidade de armazenamento, cientistas estão planejando experimentos 
físicos e simulações que geram arquivos de resultados enormes na ordem de 
petabytes (1024 terabytes). Essa grande quantidade de dados demanda mais 
recursos computacionais para ser analisada e ter esses recursos em um único 
lugar é impraticável.
Esses avanços que a tecnologia tem experimentado, principalmente nas 
áreas de bancos de dados e de redes de computadores, levaram à ideia de utilizar 
computadores, independentes e geograficamente dispersos, conectados em uma 
plataforma para execução de aplicações paralelas. Esta plataforma, chamada 
comumente de Grid Computacional, apresenta características diferentes das outras 
plataformas existentes, principalmente devido a sua heterogeneidade (diversidade 
de computadores), compartilhamento com outros usuários e complexidade.
O termo Grid Computacional vem exatamente da analogia feita à rede 
elétrica (Electric Power Grid) baseado nas malhas de interligação dos sistemas de 
distribuição de energia elétrica, nos quais um usuário utiliza a eletricidade sem 
ao menos saber onde ela foi gerada. Esta representa a infraestrutura que permitirá 
avanços na computação, de um modo geral, como ocorreu com a rede elétrica. Essa 
infraestrutura necessita de software específico para monitorar e controlar o ambiente. 
Segundo Ian Baird, Grid é uma infraestrutura emergente que faz o processamento 
e o acesso a dados serem possíveis de qualquer lugar e a qualquer horário, sem 
que alguém seja obrigatoriamente notificado. Em outras palavras, Computação em 
Grid é uma coleção de recursos heterogêneos e distribuídos, possibilitando que os 
mesmos sejam utilizados em grupo para executar aplicações de larga escala.
 
LEITURA COMPLEMENTAR
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
42
Neste momento, vocês podem estar se perguntado: “Mas qual a diferença 
dos Grids para a computação distribuída tradicional?” A diferença se dá pelo fato de 
que a computação distribuída é um conceito que vem dos anos 80 e 90, consistindo 
na possibilidade de resolver um determinado problema computacional através 
da utilização de diferentes recursos distribuídos geograficamente. A computação 
distribuída passa a ser uma “Computação em Grade” no momento em que existe 
uma infraestrutura física e uma infraestrutura lógica (software) que permita coordenar 
os trabalhos que vão ser processados e garantir a sua qualidade de serviço. Os Grids 
são uma evolução da computação distribuída, uma vez que eles são orientados 
essencialmente para aplicações que precisam de uma grande capacidade de cálculos 
e/ou enormes quantidades de dados transmitidos de um lado para o outro.
 
Não podemos imaginar que a tecnologia em Grid é uma panaceia (resolução 
de todos os problemas neste contexto), pois se imaginarmos uma aplicação sendo 
executada paralelemente em diversos pontos, é fácil visualizar a necessidade de 
divisão da mesma em partes coordenadas e interdependentes que necessitarão 
de alteração de código. Além disso, é necessário consolidar soluções de níveis de 
prioridade para acesso aos recursos da rede. Contudo, as pesquisas sobre Grids 
permitirão que empresas acessem e compartilhem bases de dados de forma 
remota, o que é essencialmente benéfico para as ciências da saúde ou comunidades 
de pesquisa, cujos volumes grandiosos de dados são gerados e analisados durante 
todo o dia. Já imaginaram o fato de uma empresa que possui filiais em países 
com fusos diferentes poder usar, durante o dia, o poder de processamento dos 
computadores da filial no Japão, ociosos neste horário por ser noite? Este é o futuro 
com a evolução da computação distribuída. SGBDs como o Oracle já começam a 
apresentar características de processamento baseadas em Grids Computacionais. 
Em um próximo artigo, descreveremos as novas características do Oracle 10g 
baseadas nesta tecnologia.
FONTE: Disponível em: <http://www.devmedia.com.br/grids-computacionais-como-tendencia-
no-processamento-de-bancos-de-dados/1382>. Acesso em: 24 jan. 2013.
43
RESUMO DO TÓPICO 2
Neste tópico, você viu que: 
• O histórico da evolução dos bancos de dados foi dividido em três gerações.
• Existem vários tipos de arquiteturas de bancos de dados e cada um possui 
particularidades que devem ser estudados durante o processo de escolha.
• A arquitetura cliente-servidor é amplamente utilizada inclusive nos dias de hoje.
44
1 Diferencie a primeira geração da segunda no histórico da evolução dos 
bancos de dados.
2 Explique como foi a terceira geração de bancos de dados.
3 Segundo o que foi estudado neste Caderno de Estudos, quando se fala em 
arquitetura de bancos de dados, quais são os fatores ou itens que devem ser 
analisados?
4 Descreva o que vem a ser uma arquitetura de banco de dados centralizada.
5 Cite a principal diferença entre as arquiteturas paralelas e distribuídas.
AUTOATIVIDADE
45
TÓPICO 3
TENDÊNCIAS E PERSPECTIVAS
UNIDADE 1
1 INTRODUÇÃO
“Nossas dúvidas são traidoras e nos fazem perder o que, com 
frequência, poderíamos ganhar, por simples medo de arriscar.” 
(William Shakespeare)
Agora que você já tem uma boa fundamentação sobre bancos de dados, 
suas origens, sua evolução e suas arquiteturas, chegou a hora de estudarmos 
as possíveis tecnologias que são apontadascomo tendência para o futuro. Será 
percebido que algumas delas já fazem parte do cotidiano em algumas áreas, porém 
ainda precisam evoluir.
FIGURA 22 – NOVAS TECNOLOGIAS EM BANCOS DE DADOS
FONTE: Disponível em: <http://www.devmedia.com.br/introducao-aos-bancos-de-dados-
nosql/26044>. Acesso em: 23 dez. 2012.
Vamos estudar, inicialmente, os tipos de bancos de dados que servem para 
trabalhar com dados complexos em cenários como georeferenciamento, biologia, 
entre outros. Também veremos conceitos de gerenciamento e mineração de dados 
para geração de informações. Por último, dois novos conceitos no mundo de 
bancos de dados: NoSQL e Big Data. Bons estudos!
46
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
2 CLASSIFICAÇÃO DOS BANCOS DE DADOS
2.1 BANCOS DE DADOS DE INFORMAÇÕES GEOGRÁFICAS
Até o presente momento estudamos bancos de dados sob uma ótica do 
modelo relacional. Este é largamente utilizado e muito difundido em vários 
sistemas considerados “tradicionais” como ERPs, CRMs, E-commerce etc.
Porém, existem sistemas com uma abrangência mais específica que norteiam 
áreas mais delimitadas. É o caso do armazenamento e manipulação de informações 
geográficas ou também de arquivos que necessitam de uma organização em nível 
de bancos de dados.
Esse é o foco do nosso estudo nesta seção. Está dividido em sete áreas: 
bancos de dados de informações geográficas, multimídia, temporal, biológico e 
XML. Cada uma dessas áreas será estudada e exemplificada.
Este tipo de banco de dados tem como objetivo armazenar e manipular 
dados geométricos que sejam pertinentes a representações de partes do planeta. 
Também é conhecido como Sistema Gerenciador de Bancos de Dados Geográficos 
ou simplesmente SGBDG. Em resumo, armazena dados geográficos como mapas, 
imagens de satélite etc.
FIGURA 23 – OBJETO QUE PODE SER REPRESENTADO POR UM SGBDG
FONTE: Disponível em: <http://www.mobypicture.com/user/patrickitj/
view/9762284>. Acesso em: 15 dez. 2012.
Alguns bancos que são de natureza relacional permitem que sejam 
instalados pacotes para que tipos de dados geográficos sejam suportados. Um 
exemplo disto é uma extensão que pode ser adicionada no banco PostgreSQL para 
habilitar suporte a dados espaciais. O nome dela é PostGIS e sua ideia é ilustrada 
na figura a seguir.
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
47
FIGURA 24 – EXTENSÃO ESPACIAL DO POSTGRESQL
FONTE: Disponível em: <http://www.infoescola.com/informatica/banco-de-
dados-geograficos/>. Acesso em: 15 dez. 2012.
O texto a seguir trata sobre representação geral de informações geográficas. 
Nele, procura-se detalhar com maior riqueza de detalhes, o paradigma de bancos de dados 
geográficos.
UNI
DESCRIÇÃO GERAL DE SISTEMAS DE INFORMAÇÃO GEOGRÁFICA
 
O termo sistemas de informação geográfica (SIG) é aplicado para sistemas 
que realizam o tratamento computacional de dados geográficos. A principal 
diferença de um SIG para um sistema de informação convencional é sua 
capacidade de armazenar tanto os atributos descritivos como as geometrias 
dos diferentes tipos de dados geográficos. Assim, para cada lote num cadastro 
urbano, um SIG guarda, além de informação descritiva como proprietário e valor 
do IPTU, a informação geométrica com as coordenadas dos limites do lote. A 
partir destes conceitos, é possível indicar as principais características de SIGs:
• Inserir e integrar, numa única base de dados, informações espaciais 
provenientes de meio físico-biótico, de dados censitários, de cadastros 
urbano e rural, e outras fontes de dados como imagens de satélite, e GPS.
• Oferecer mecanismos para combinar as várias informações, através de 
algoritmos de manipulação e análise, bem como para consultar, recuperar e 
visualizar o conteúdo da base de dados geográficos. 
48
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
 Os componentes de um SIG estão mostrados na Figura 1.1. No nível 
mais próximo ao usuário, a interface homem-máquina define como o sistema 
é operado e controlado. Esta interface pode ser tanto baseada na metáfora 
da “mesa de trabalho” (Kuhn e Frank, 1991) (Richards e Egenhofer, 1995) 
(Câmara, 1999), como adaptada ao ambiente de navegação da Internet (Kraak 
e Brown, 2001), quanto baseada em linguagens de comando como Spatial SQL 
(Egenhofer, 1994) e LEGAL (Câmara, 1995). No nível intermediário, um SIG 
deve ter mecanismos de processamento de dados espaciais. A entrada de dados 
inclui os mecanismos de conversão de dados (Hohl, 1998). Os algoritmos de 
consulta e análise espacial incluem as operações topológicas (Egenhofer e 
Franzosa, 1991), álgebra de mapas (Tomlin, 1990), estatística espacial (Druck 
et al., 2004), modelagem numérica de terreno (Li et al., 2004) e processamento 
de imagens (Mather, 2004). Os mecanismos de visualização e plotagem devem 
oferecer suporte adequado para a apreensão cognitiva dos aspectos relevantes 
dos dados pesquisado (MacEachren, 2004) (Tufte, 1983) (Monmonier, 1993). 
No nível mais interno do sistema, um sistema de gerência de bancos de dados 
geográficos oferece armazenamento e recuperação dos dados espaciais e seus 
atributos. Cada sistema, em função de seus objetivos e necessidades, implementa 
estes componentes de forma distinta, mas todos os subsistemas citados devem 
estar presentes num SIG. 
Do ponto de vista da aplicação, o uso de sistemas de informação 
geográfica (SIG) implica escolher as representações computacionais mais 
adequadas para capturar a semântica de seu domínio de aplicação. Do ponto 
de vista da tecnologia, desenvolver um SIG significa oferecer o conjunto mais 
amplo possível de estruturas de dados e algoritmos capazes de representar a 
grande diversidade de concepções do espaço. 
FONTE: Disponível em: <http://www.dpi.inpe.br/livros/bdados/cap1.pdf>. Acesso em: 11 set. 2012.
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
49
2.2 BANCOS DE DADOS MULTIMÍDIA
Dados multimídia são cada vez mais populares. Com o advento da internet 
a troca de dados multimídia expandiu-se. Entretanto, imagens, vídeo e audio 
estão hoje, na maioria das vezes, armazenados em sistemas de arquivos. Esse 
fato não vem a ser um problema quando se trabalha com um volume reduzido 
de dados, considerando que um banco não iria trazer grandes benefícios. Porém, 
com muitos arquivos uma forma de armazenamento em banco facilitaria o 
gerenciamento dos mesmos.
Boa parte dos principais bancos de dados implementam um tipo de 
dado binário para armazenar dados multimídia. Isso faz com que essa forma de 
armazenamento se resuma apenas em salvar arquivos no banco, não trazendo 
muitas vantagens comparadas com o armazenamento em sistemas em arquivos.
Um banco de dados multimídia precisa ter algumas características como 
suporte a objetos gigantes (muito mais que alguns gigabytes), fornecimento dos 
dados em um ritmo constante (um vídeo precisa ser fornecido sem lacunas durante 
sua exibição) e recuperação baseada na semelhança.
O texto a seguir detalha a necessidade e a motivação para a recuperação baseada 
em semelhança.
UNI
RECUPERAÇÃO BASEADA EM SEMELHANÇA
Dados de imagem. Duas figuras ou imagens que são ligeiramente 
diferentes, conforme representadas no banco de dados, podem ser consideradas 
iguais por um usuário. Por exemplo, um banco de dados pode armazenar um 
projeto de marca comercial. Quando uma marca comercial deve ser registrada, 
o sistema pode precisar primeiro identificar todas as marcas comerciais 
semelhantes que foram registradas anteriormente.
 
Dados de áudio. Interfaces de usuário baseadas em fala estão sendo 
desenvolvidas para permitir que o usuário dê um comando ou identifique um 
item de dados pela fala. A entrada do usuário precisa então ser testada por 
semelhança com aqueles comandos ou itens de dados armazenados no sistema.
Dados escritos à mão. A entrada escrita à mão pode ser usada para 
identificar um item de dados ou comando escrito à mão, armazenado no banco 
de dados. Aqui, novamente, o teste de semelhança é exigido.
50
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
A noção desemelhança normalmente é subjetiva e específica do 
usuário. Porém, o teste de semelhança normalmente é mais bem-sucedido 
do que o reconhecimento de voz ou escrita manual, pois a entrada pode 
ser comparada com dados já no sistema e, assim, o conjunto de opções 
disponíveis ao sistema é limitado.
Existem vários algoritmos para encontrar as melhores combinações de 
determinada entrada pelo teste de semelhança. Alguns sistemas, incluindo a 
discagem por nome, sistema de telefone ativado por voz, foram implantados 
comercialmente.
FONTE: Silberschatz, Korth e Sudarshan (2006, p. 620)
Para resumir e exemplificar uma das principais características que um banco 
de dados multimídia precisa ter. Vamos pensar em um arquivo cujo conteúdo 
é uma imagem. Quando trabalhamos com imagens, o sistema deve conseguir 
identificar algumas particularidades delas. Por exemplo, listar todas as imagens 
de um pôr de sol ou talvez todas as que contenham barcos cuja cor é branca. Para 
isso ser possível é necessário identificar a semântica da imagem, ou seja, o que 
significa e qual o seu conteúdo. Este conceito também é válido para áudio e vídeo.
2.3 BANCO DE DADOS TEMPORAL
Em um conceito resumido, podemos dizer que um banco de dados 
temporal armazena o estado de um determinado objeto, procurando obter toda 
a sua evolução. Fazendo uma junção deste conceito com os bancos de dados 
relacionais, pode-se entender que o objeto pode ser uma tabela.
As aplicações rotineiras se preocupam normalmente em registrar quando 
determinado fato ocorreu. Um banco de dados temporal se preocupa com todo o 
histórico de todos os fatos. Isso pode ser confeccionado com base em intervalos de 
datas ou intervalo de validade das informações.
Cabe ao projetista de banco de dados definir o formato de gerenciamento 
dos dados de forma temporal. Alguns tipos de sistemas que podem consumir 
um banco de dados temporal são: BI (Sistema de suporte a decisões ou Bussiness 
Intelligence), SIGs (Sistemas de Informações Gerenciais) etc.
Alguns SGBDs fornecem meios para o desenvolvimento de bancos 
temporais. Entre eles, existe um grande destaque por parte da Oracle, com o Time 
Series Cartridge.
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
51
2.4 BANCOS DE DADOS BIOLÓGICOS
Tendo em vista que existem vários estudos desenvolvidos no campo da 
biologia, existe a necessidade de documentá-los e armazená-los em locais seguros. 
Esse é o conceito de bancos de dados biológico. Alguns são públicos, outros 
privados. Podem oferecer também integração com outros bancos de dados.
O site <http://pt.scribd.com/doc/58841709/Banco-de-Dados-biologico> traz 
alguns exemplos de bancos de dados biológicos.
UNI
Projeto GMOD
“O Generic Model Organism Database Project é um projeto open source, 
cujo objetivo é desenvolver um conjunto completo de softwares para a criação 
e administração de um banco de dados biológico”. GMOD (2004). Financiado 
pelo NIH (National Instituteof Health) e pelo USDA Agricultural Research Service.
Citrina
 
O Citrina consiste em uma ferramenta de gerência que permite automatizar 
o espelhamento e processamento de bancos de dados que estão distribuídos 
através de diversos servidores FTP. A mesma foi desenvolvida através da 
tecnologia Java Ant, o que a torna mais flexível e portável.
 
Um exemplo de uso para o Citrina seria a transferência de Chado SQL 
entre vários sites de organismos e a população automática dos diversos bancos 
de dados PostgreSQL através dos recursos de SQL fornecidos pela tecnologia 
Java Ant.
BioMart
 
Sistema de Integração de dados orientado a consultas, baseado na ideia 
de Data Warehouse.
 
Sistema de Consultas desenvolvido especificamente para uso de grandes 
bancos de dados. Simplifica a tarefa de integração entre diferentes bancos de 
dados distribuídos pela rede.
52
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
Chado
Segundo Chado (2004), consiste em um “... conjunto de módulos de um 
esquema destinados à construção de um esquema de banco de dados biológico 
relacional....”
 O Chado foi desenvolvido com o intuito de ser aplicado, especificamente, 
a um banco de dados open source, como é o caso do PostGreSQL (PostgreSQL, 
2004) e do MySQL (MySQL, 2004). Além disso, outro pré-requisito para o 
funcionamento eficiente do Chado é a configuração de diversos pacotes BioPerl 
(BioPerl, 2004).
O Chado está sendo utilizado atualmente pelo FlyBase (FlyBase, 2004) e 
pelo Berkeley Drosophila Genome Project (BDGP, 2004). 
O Chado, o qual constitui um dos subprojetos do GMOD, apresenta-se 
como um esquema mais simples e genérico para a representação de dados 
biológicos. Este esquema ainda se encontra em desenvolvimento, o que pode ser 
verificado na grande simplicidade nos módulos responsáveis pela representação 
de mapas genéticos, interações genéticas e expressão gênica. 
Todos os dados resultantes das análises de um projeto genoma são 
armazenados nos chamados bancos de dados biológicos. Inicialmente, cada 
laboratório desenvolveu o seu próprio banco de dados, contemplando somente 
as necessidades do projeto genoma por ele sendo executado. 
Um banco de dados genômico para os biólogos geralmente é um web site 
que apresenta informações que muitas vezes estão armazenadas em arquivos 
texto.
Outras vezes, os dados podem até estar em SGBDs, mas isto só começou 
a se tornar realidade há poucos anos. Por exemplo, o www.plasmodb.org, um 
“banco de dados genômico” do Plasmodium (causador da malária) usa dados 
armazenados tanto em arquivos texto quanto em Oracle. A migração vem se 
dando há pouco tempo. 
O banco de dados biológico mais famoso é o GenBank.
FONTE: Disponível em: <http://pt.scribd.com/doc/58841709/Banco-de-Dados-biologico>. 
Acesso em: 24 dez. 2012.
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
53
2.5 BANCO DE DADOS XML
O XML (Extensible Markup Language) é uma linguagem de marcação 
extensível criada em 1996. Pode ser utilizada para troca, compartilhamento e 
armazenamento de dados.
Rob e Coronel (2011, p.615) fazem um relato do cenário onde a XML pode 
estar envolvida.
A internet fez surgir novas tecnologias que facilitam a troca de dados 
de negócios entre parceiros comerciais e clientes. As empresas têm 
utilizado a internet para criar novos tipos de sistemas que integrem seus 
dados de modo a aumentar a eficiência e reduzir custos. O comércio 
eletrônico (e-commerce) permite que todos os tipos de organizações 
vendam produtos e serviços em um mercado global de milhões de 
usuários. As transações de comércio eletrônico – venda de produtos ou 
serviços – podem ser executados entre empresas (business-to-business ou 
B2B) ou entre uma empresa e um cliente (business-to-consumer ou B2C).
A maioria dessas transações ocorre entre empresas. Como o comércio 
eletrônico B2B integra processos de negócios entre empresas, ele exige 
a transferência de informações comerciais entre as diferentes entidades. 
Mas o modo como os dados são representados, identificados e utilizados 
tende a diferir significativamente de empresa para empresa [...].
De uma forma bem resumida, pode-se dizer que XML consiste em descrever 
o conteúdo dos campos em um formato de marcação. É amplamente utilizado na 
internet para integração entre sistemas.
A figura a seguir mostra um exemplo de XML.
FIGURA 25 – EXEMPLO XML
FONTE: Disponível em: <http://blog.kirupa.com/?p=227>. Acesso em: 27 
jan. 2013.
54
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
3 TIPOS DE GERENCIAMENTO DE DADOS
No cenário em que vivemos hoje, as empresas precisam estar preparadas e 
“munidas” de informações que possam gerar valor competitivo para o seu negócio. 
Para que isso aconteça, precisamos de uma forma de analisar os dados disponíveis 
nos seus sistemas a fim de gerar informação e conhecimento. Vale a pena lembrar-
se do que foi apresentado no início desta unidade: a partir dos dados são geradas 
informações e a interpretação dessas informações gera conhecimento.
FIGURA 26 – DADOS SÃO UTILIZADOS PARA GERAR INFORMAÇÃO
FONTE: Disponível em: <http://gestorsistemas.info/content/?secao=data_mining>. Acesso em: 27 jan. 2013.
Rob e Coronel (2011, p. 535) fazem um relato sobre a necessidade de análise 
e gerenciamento de dados analisados.
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
55
As organizações tendem a crescer e prosperar quando obtêm melhor 
compreensão de seu ambiente. A maioria dos gerentes deseja rastrear 
as transações diárias para avaliar o fluxo dos trabalhos. Recorrendo ao 
banco de dados operacional, a gerência pode desenvolver estratégias 
que atendam as metas organizacionais. Além disso, a análise dos 
dados pode fornecer informações sobre estratégias e avaliações táticas 
de curto prazo como as seguintes: nossas promoções de vendas estão 
funcionando? Que porcentagem do mercado controlamos? Estamos 
atraindo novos clientes? As decisões táticas e estratégicas também são 
moldadas por uma pressão constante de forças externas e internas, 
incluindo a globalização, o ambiente legal, cultural e (talvez o mais 
importante) a tecnologia. 
Esta seção trata de formas de analisar e gerar informações e conhecimento 
acerca de um determinado negócio. Esse processo também pode ser denominado 
de estudo de atividades para gerar informações de apoio à decisão. Envolve os 
seguintes itens que serão posteriormente estudados: Data Mining, Data Warehouse, 
Data Mart e Data Marketing.
3.1 DATA MINING
Data Mining ou mineração de dados é um dos primeiros processos que são 
executados a fim de construir uma nova base de dados que gere conhecimento e 
informações de apoio à decisão.
FIGURA 27 – PROCESSOS DE DATA MINING
FONTE: Disponível em: <http://imasters.com.br/artigo/10229/tecnologia/mineracao-de-
dados-e-web-semantica/>. Acesso em: 27 jan. 2013.
56
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
Rob e Coronel (2011) nos dizem que o banco de dados de suporte a decisões 
é criado, em grande parte, pela extração de dados do banco operacional e pela 
importação de dados adicionais de fontes externas. Isso significa que as empresas 
já possuem seus sistemas de gerenciamento e extraem os dados dos mesmos para 
buscar padrões que sejam valiosos para o ramo do negócio.
O texto disponível em: <http://www.intelliwise.com/reports/i2002.htm> elucida 
de forma mais pormenorizada o que vem a ser um Data Mining. Ele também traz alguns 
termos que serão vistos em seguida, como Data Warehouse e Data Mart.
UNI
Data Mining é uma das novidades da Ciência da Computação que veio 
para ficar. Com a geração de um volume cada vez maior de informação, é 
essencial tentar aproveitar o máximo possível desse investimento. Talvez a 
forma mais nobre de se utilizar esses vastos repositórios seja tentar descobrir 
se há algum conhecimento escondido neles. Um banco de dados de transações 
comerciais pode, por exemplo, conter diversos registros indicando produtos 
que são comprados em conjunto. Quando se descobre isso, pode-se estabelecer 
estratégias para otimizar os resultados financeiros da empresa. Essa já é uma 
vantagem suficientemente importante para justificar todo o processo. Contudo, 
embora essa ideia básica seja facilmente compreensível, fica sempre uma dúvida 
sobre como um sistema é capaz de obter esse tipo de relação. No restante deste 
artigo vamos observar alguns conceitos que podem esclarecer essas dúvidas.
O que é Data Mining?
Talvez a definição mais importante de Data Mining tenha sido elaborada 
por Usama Fayyad (Fayyad et al. 1996):
“[...] o processo não trivial de identificar, em dados, padrões válidos, 
novos, potencialmente úteis e ultimamente compreensíveis”.
Esse processo vale-se de diversos algoritmos (muitos deles desenvolvidos 
recentemente) que processam os dados e encontram esses “padrões válidos, 
novos e valiosos”. É preciso ressaltar um detalhe que costuma passar 
despercebido na literatura: embora os algoritmos atuais sejam capazes de 
descobrir padrões “válidos e novos”, ainda não temos uma solução eficaz para 
determinar padrões valiosos. Por essa razão, Data Mining ainda requer uma 
interação muito forte com analistas humanos, que são, em última instância, os 
principais responsáveis pela determinação do valor dos padrões encontrados. 
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
57
Além disso, a condução (direcionamento) da exploração de dados é também 
tarefa fundamentalmente confiada a analistas humanos, um aspecto que não 
pode ser desprezado em nenhum projeto que queira ser bem sucedido.
Os passos do Data Mining
A literatura sobre o assunto trata com mais detalhes todos os passos 
necessários ao Data Mining. Veja, por exemplo, Groth (1998) e Han, Chen & Yu 
(1996). Para o escopo do que pretendemos neste artigo é suficiente apresentar 
os passos fundamentais de uma mineração bem sucedida. A partir de fontes 
de dados (bancos de dados, relatórios, logs de acesso, transações, etc.) efetua-se 
uma limpeza (consistência, preenchimento de informações, remoção de ruído e 
redundâncias etc.). Disto nascem os repositórios organizados (Data Marts e Data 
Warehouses), que já são úteis de diversas maneiras.
Mas é a partir deles que se pode selecionar algumas colunas para 
atravessarem o processo de mineração. Tipicamente, este processo não é o final 
da história: de forma interativa e frequentemente usando visualização gráfica, 
um analista refina e conduz o processo até que valiosos padrões apareçam. 
Observe que todo esse processo parece indicar uma hierarquia, algo que 
começa em instâncias elementares (embora volumosas) e terminam em um 
ponto relativamente concentrado, mas muito valioso.
58
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
Este é um dos conceitos importantes para nós neste artigo: encontrar 
padrões requer que os dados brutos sejam sistematicamente "simplificados" de 
forma a desconsiderar aquilo que é específico e privilegiar aquilo que é genérico. 
Faz-se isso porque não parece haver muito conhecimento a extrair de eventos 
isolados. Uma loja de sua rede que tenha vendido a um cliente em particular 
uma quantidade impressionante de um determinado produto em uma única 
data pode apenas significar que esse cliente em particular procurava grande 
quantidade desse produto naquele exato momento. Mas isso provavelmente 
não indica nenhuma tendência de mercado.
Em outras palavras, não há como explorar essa informação em particular 
para que no futuro a empresa lucre mais. Apenas com conhecimento genérico é 
que isto pode ser obtido. Por essa razão devemos, em Data Mining, controlar 
nossa vontade de "não perder dados". Para que o processo dê certo, é necessário 
sim desprezar os eventos particulares para só manter aquilo que é genérico.
FONTE: Disponível em: <http://www.intelliwise.com/reports/i2002.htm>. Acesso em: 
24 dez. 2012.
3.2 DATA WAREHOUSE
Resumidamente, podemos dizer que um Data WareHouse é um banco de 
dados que possui todos os dados da organização que são pertinentes para uma 
futura análise. Rob e Coronel (2011) explicam que Data WareHouse normalmente é 
um banco de dados apenas de leitura, otimizado para processamento de análises 
e consultas. Geralmente, os dados são extraídos de várias fontes e, em seguida, 
transformados e integrados.
É conhecido também como armazém de dados por reunir dados de vários 
sistemas distintos. Nas organizações é comum existirem sistemas específicos para 
algumas áreas, como por exemplo, folha de pagamento, faturamento, vendas etc. 
Quando chega o momento de responder a algumas perguntas, é muito complicado 
ir a cada sistema e pesquisar os dados relacionados. Por isso, através de um 
processo de Data Mining é gerado um Data WareHouse com os dados da empresa.
Tudo é feito para melhorar a tomada de decisão das empresas. O texto a seguir 
mostra como isso é possível.
UNI
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
59
COMO UM DATA WAREHOUSE PODE MELHORAR A TOMADA DE 
DECISÃO NAS EMPRESAS?
A principal proposta do data warehouse é colocar nas mãos dos analistas 
de negócios dados estratégicos para as tomadas de decisões baseadas em 
fatos reais e não por intuição. A produtividade oferecida pelo data warehouse é 
traduzidaem ganho de tempo e dinheiro. Na construção de um banco de 
dados para suporte a um data warehouse são filtrados e normalizados os dados 
de vários bancos de dados dos sistemas estruturados, formando uma base de 
dados com todos os dados relevantes da empresa ou de uma área específica. 
Com o cruzamento desses dados extraem-se informações que os sistemas de 
informações estruturados não conseguem identificar. O banco Itaú enviava 
cerca de um milhão de malas diretas para seus correntistas e obtinha apenas 2% 
de retorno, após a implantação do data warehouse o retorno passou para 30% e a 
conta do correio diminuiu para um quinto.
Em muitas empresas quando um executivo faz uma pergunta sobre 
o perfil dos seus negócios fora de um padrão definido pelos analistas de 
sistemas o tempo e o esforço para respondê-la é muito grande. Várias bases 
de dados devem ser consultadas, programas de pesquisas são construídos, 
download de arquivos para microcomputadores para manipulação dos dados 
e gerar relatórios gráficos. Se uma decisão deve ser tomada acompanhando a 
velocidade do mercado, o executivo acaba tomando a decisão por intuição não 
podendo esperar o resultado da área de sistemas.
 Quando o assunto é simulação de cenários de negócios o processo é 
ainda mais traumático. Os sistemas estruturados atuais não são suficientemente 
flexíveis para traçar cenários complexos usando cruzamento de vários 
componentes. Os bancos de dados tradicionais possuem visão bidimensional, 
por exemplo, enxergam uma tabela de produto por região. As ferramentas 
de data warehouse possuem a visão de uma tabela multidimensional, por 
exemplo, geram uma tabela de produto x região x período de tempo.
Os data warehouses já colecionam muitas estórias de sucesso. A clássica foi o 
resultado obtido pela rede americana de supermercados Wal-Mart quanto o seu 
data warehouse identificou uma relação entre o consumo de fraldas descartáveis 
e o consumo de cerveja. Analisando a informação do data warehouse verificou-
se que quando os maridos iam ao supermercado à noite para comprar fraldas 
aproveitavam e compravam algumas cervejas. Constatado o fato, elaborou-se 
uma estratégia de vendas onde as fraldas ficam próximas as cervejas, induzindo 
os maridos a comprarem as cervejas. O resultado foi o aumento de vendas das 
cervejas. Outro exemplo é o caso da empresa de telecomunicações americana Sprint 
que com o seu data warehouse consegue identificar com 60 dias de antecedência os 
usuários que trocaram seus serviços por outra operadora. Através de um marketing 
agressivo ela conseguiu evitar a deserção de 120.000 clientes e uma perda de 35 
milhões de dólares em faturamento.
60
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
A introdução de um data warehouse em uma empresa exige uma mudança 
de comportamento dos executivos e sua relação entre os computadores e as 
informações. Os data warehouse mantêm um quadro único e coerente das 
informações ao longo da empresa, uma única versão da verdade, trazendo 
produtividade e ganho de dinheiro.
FONTE: Disponível em: <http://www.efagundes.com/artigos/Como%20um%20data%20
warehouse%20pode%20melhorar%20as%20tomadas%20de%20decisoes%20nas%20empresas.
htm>. Acesso em: 24 dez. 2012.
3.3 DATA MART
3.4 DATA MARKETING
Com o passar dos anos, foi percebido que os usuários responsáveis por 
extrair informações dos Data WareHouses usavam uma pequena parte dele para 
realizar o seu trabalho. Neste mesmo conjunto era preciso criar novas visões e 
executar os mesmos procedimentos de forma repetitiva a cada atualização recebida. 
É nesse cenário que surge a definição de Data mart.
Para Date (2003), Data Mart é um depósito de dados especializado, 
orientado por assunto, integrado, volátil e variável no tempo, que fornece apoio a 
um subconjunto específico de decisões da gerência. É um agrupamento de dados e 
informações dentro do Data WareHouse com um objetivo específico e bem definido.
Em uma definição bem simplista, pode-se dizer que é um banco de dados 
utilizado para relacionamento com clientes. É nele que estão os dados utilizados 
para atingir objetivos de venda, público alvo para promoções etc. 
O texto disponibilizado no site <http://www.benic.com.br/marketing-digital/blog/
o-que-e-database-marketing> deixa claro quais são os benefícios da utilização deste conceito. 
UNI
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
61
O QUE É DATABASE MARKETING
Caso a sua empresa queira adotar estratégias de retenção de 
clientes, fundamentadas no Marketing de Relacionamento, é imprescindível que 
possua tecnologia que possibilite desenvolver com eficácia essas estratégias.
A base do Marketing de Relacionamento é a personalização do 
relacionamento com os clientes, mas como realizar esta personalização se 
sua empresa possuiu milhares e até milhões de clientes em um único ano? É 
impossível imaginar alguma estratégia de Marketing de Relacionamento sem 
contemplar a área de Tecnologia da Informação.
Somente com o uso da Tecnologia é possível armazenar, recuperar, 
processar, comunicar e analisar os dados dos seus clientes. Ter um banco de dados 
com as informações dos clientes é condição primordial para o desenvolvimento 
de uma estratégia de Marketing de Relacionamento.
Este banco de dados, criado para armazenar as informações sobre os 
seus consumidores, é chamado de Database Marketing (DBM).
O Database Marketing é uma ferramenta para utilização das informações 
internas e externas para filtrar o mercado alvo, desenvolver o planejamento de 
vendas inteligentes e mensagens de promoções e de marketing que sejam relevantes.
FONTE: Disponível em: <http://www.benic.com.br/marketing-digital/blog/o-que-e-database-
marketing>. Acesso em: 24 dez. 2012.
4 NOVOS CONCEITOS
Esta última seção da Unidade 1 tem como objetivo apenas introduzir 
alguns novos conceitos existentes no mercado. Entenda que estamos tratando 
de novas tecnologias e que muitas delas ainda não chegaram ao seu ápice de 
desenvolvimento e utilização. Isso pode significar que poderão sofrer alterações 
quando a sua definição e aplicação durante este período de amadurecimento.
Trataremos apenas de dois novos conceitos: Big Data e NoSQL. Vamos focar 
apenas no paradigma das tecnologias, passando de forma superficial por questões 
técnicas de implementação.
62
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
4.1 BIG DATA
Muito tem se falado sobre essa nova tecnologia. Ela visa atender basicamente 
ao gerenciamento de grandes volumes de dados. Imagine a quantidade de dados 
gerados por tweets no mundo inteiro. Agora pense no seguinte: esses dados 
podem revelar muitas coisas a respeito de um determinado cenário. Através 
da análise deles é possível, de certa forma, medir o nível de felicidade de uma 
determinada população, a satisfação das pessoas em relação a determinado 
produto comercializado por alguma empresa, entre várias outras situações.
Várias empresas já utilizam o conceito de Big Data em seus negócios. A 
figura a seguir dá uma visão geral do conceito.
FIGURA 28 – CENÁRIO ATUAL DO BIG DATA
FONTE: Disponível em: <http://oglobo.globo.com/infograficos/bigdata/>. Acesso em: 27 jan. 
2013.
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
63
Um texto publicado na Info Abril: <http://info.abril.com.br/noticias/computacao-
inteligente/aplicativo-de-big-data-e-tendencia-nas-corporacoes-diz-especialista-07012013-20.
shl>, destaca a tendência de utilização do Big Data nas empresas.
UNI
APLICATIVO DE BIG DATA É TENDÊNCIA NAS CORPORAÇÕES, DIZ 
ESPECIALISTA
São Paulo – Uma pesquisa da IBM mostra que 90% de todos os dados 
divulgados na internet surgiram nos últimos dois anos. Além disso, as corporações 
de diferentes áreas digitalizam e compartilham documentos na web diariamente.
Segundo Ederson Riechelmann, diretor de outsourcing da Unione, é 
necessário usar aplicativos de Big Data (BDA) para organizar e usar todos estes 
dados. Ainda de acordo com o especialista, o uso destes apps é certamente uma 
tendência nas corporações.
As áreas que possuem urgênciaem usar estes apps são a comercial e de 
marketing. É possível, por exemplo, usar esta tecnologia para cruzar os dados 
e descobrir a rotina e os gastos mensais de um cliente e personalizar anúncios 
direcionados a ele.
Riechelmann explica que a área de segurança também é influenciada 
positivamente pelo avanço no mercado de aplicativos de Big Data.
Seria inviável comercializar estes apps sem uma forte barreira contra 
crackers e hackers. O especialista afirma que os todos esses resultados em usar 
estas aplicações (BDA) serão notados em curto prazo.
FONTE: Disponível em: <http://info.abril.com.br/noticias/computacao-inteligente/aplicativo-de-
big-data-e-tendencia-nas-corporacoes-diz-especialista-07012013-20.shl>. Acesso em: 27 jan. 
2013.
Como acontece com qualquer nova tecnologia, o mercado de trabalho carece 
de profissionais para trabalhar com Big Data. Existe bastante material informativo 
na internet, porém boa parte está disponível em inglês. O site <BigDataUniversity.
com> oferece cursos online e gratuitos sobre Big Data e pode ser uma boa opção 
para quem domina a língua.
64
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
4.2 NOSQL
NoSQL é uma classe de bancos de dados que tem como principal destaque 
o rompimento com o paradigma relacional, predominante durante vários anos no 
mercado de TI. Ele representa vários bancos de dados que não são relacionais e 
utilizam outras formas de organização, visando armazenamento e processamento 
de dados complexos.
O texto disponível no site <http://imasters.com.br/artigo/17043/banco-de-dados/
nosql-voce-realmente-sabe-do-que-estamos-falando/> esclarece de forma mais aprofundada 
o que é NoSQL.
UNI
O termo NoSQL foi usado pela primeira vez em 1998, como o nome de um 
banco de dados relacional de código aberto que não possuía um interface SQL. 
Seu autor, Carlo Strozzi, alega que o movimento NoSQL “é completamente 
distinto do modelo relacional e, portanto, deveria ser mais apropriadamente 
chamado ‘NoREL’ ou algo que produzisse o mesmo efeito”. Porém, o 
termo só voltou a ser assunto em 2009, por um funcionário do Rackspace, Eric 
Evans, quando Johan Oskarsson, da Last.fm, queria organizar um evento para 
discutir bancos de dados open source distribuídos. 
NoSQL são diferentes sistemas de armazenamento que vieram para 
suprir necessidades em demandas onde os bancos de dados tradicionais 
(relacionais) são ineficazes. Muitas dessas bases apresentam características 
muito interessantes como alta performance, escalabilidade, replicação, 
suporte a dados estruturados e subcolunas.
O NoSQL surgiu da necessidade de uma performance superior e de uma 
alta escalabilidade. Os atuais bancos de dados relacionais são muito restritos a 
isso, sendo necessária a distribuição vertical de servidores, ou seja, quanto mais 
dados, mais memória e mais disco um servidor precisa. O NoSQL tem uma grande 
facilidade na distribuição horizontal, ou seja, mais dados, mais servidores, não 
necessariamente de alta performance. Um grande utilizador desse conceito é o 
Google, que usa computadores de pequeno e médio porte para a distribuição dos 
dados; essa forma de utilização é muito mais eficiente e econômica. Além disso, os 
bancos de dados NoSQL são muito tolerantes a erros.
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
65
FONTE: Disponível em: <http://imasters.com.br/artigo/17043/banco-de-dados/nosql-voce-
realmente-sabe-do-que-estamos-falando/>. Acesso em: 27 jan. 2013.
De certa forma, pode-se dizer que bancos de dados que pertencem ao 
paradigma NoSQL trabalham com o conceito de Big Data visto anteriormente. 
Exemplos de bancos NoSQL: Berkeley DB, MemcacheDB, Cassandra (Apache), 
MongoDB, InfoGrid e Vertica.
No caso dos bancos NoSQL, toda a informação necessária estará agrupada no 
mesmo registro, ou seja, em vez de você ter o relacionamento entre várias tabelas 
para formar uma informação, ela estará em sua totalidade no mesmo registro.
DATA WAREHOUSE OU DATA MART? PROJETANDO BI
Tiago Curcio
As organizações que almejam alta competitividade no mercado não 
questionam a importância do Business Intelligence. A grande questão que se coloca 
é por onde e como começar. Os analistas de mercado têm uma resposta que pode 
parecer simplista, mas verdadeira: o tamanho do sapato deve ser o do tamanho 
do pé. Em outros termos, empresas pequenas ou com pouca cultura tecnológica 
podem começar usando algumas ferramentas de análise mais simples, como o EIS – 
Executive Information Systems, que são amigáveis e fornecem informações gerenciais 
de forma rápida e eficiente. Outra opção são as DSS – Decision Support Systems, 
sistemas de apoio à decisão que surgiram a partir dos sistemas transacionais e 
utilizam modelos para solucionar problemas não estruturados. São ferramentas 
que podem auxiliar as empresas a se familiarizar com os conceitos e tecnologias 
relativas ao BI, e evoluir nesse sentido aos poucos.
O fundamental é entender que os dados precisam ser estruturados de forma 
diferente do que ocorre nos sistemas transacionais. Por isso, os especialistas no 
assunto ressaltam que um dos principais pilares do BI é o Data Warehouse (DW). 
Como bem define William (Bill) Inmon, considerado o pai do DW, esse repositório 
nada mais é do que um banco de dados orientado por assuntos, não volátil (os dados 
não podem sofrer modificações) e integrado. No DW há apenas a carga dos dados e 
a consulta. Não há atualizações. Variável com o tempo é outra característica inerente 
ao DW. Isso significa que sempre será retratada uma situação num determinado 
ponto do tempo. É como se pegássemos uma foto de uma pessoa com um ano de 
idade e outra foto, dessa mesma pessoa, aos 10 anos de idade, para então fazer 
uma comparação e verificar as modificações ocorridas. No DW os assuntos são 
guardados em determinados pontos no tempo, o que permite uma análise histórica 
e comparativa dos fatos. Os dados podem ser retirados de múltiplos sistemas de 
computação utilizados internamente na empresa, ou também podem vir de fontes 
LEITURA COMPLEMENTAR
66
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
externas. Em resumo, um DW pode ser definido como um conjunto de técnicas e de 
bancos de dados integrados, projetados para suportar as funções dos Sistemas de 
Apoio à Decisão, onde cada unidade de dados está relacionada a um determinado 
assunto ou fato. Sua meta é fornecer subsídios e informações aos gerentes e diretores, 
para que assim possam analisar tendências históricas de seus clientes e, com isso, 
melhorarem os processos e agilizarem as tomadas de ações.
O maior problema do Data Warehouse é a sua grande complexidade. Sua 
criação requer pessoas altamente especializadas, uma metodologia consistente, 
computadores, banco de dados, ferramentas de front-end (sistemas transacionais 
– para captura dos dados), ferramentas para extração e limpeza dos dados, e 
treinamento dos usuários. É um processo complicado e demorado, que requer altos 
investimentos e que se não for corretamente planejado e executado, pode trazer 
prejuízos enormes e se tornar um grande elefante branco dentro da organização.
Uma forma de minimizar os riscos seria começar com o desenvolvimento 
de Data Marts departamentais e, numa fase posterior, integrá-los transformando-
os num Data Warehouse.
Em termos conceituais, pode-se afirmar que um Data Mart é um mini Data 
Warehouse que fornece suporte à decisão para um pequeno grupo de pessoas – 
como aos profissionais da área de marketing, ou de vendas, por exemplo. O tempo 
de desenvolvimento e implementação, assim como os investimentos necessários, 
também são bem menores, em comparação ao DW. Segundo estimativas, enquanto 
um Data Mart custa em torno de US$ 100 mil a US$ 1 milhão e leva cerca de 20 dias 
para ficar pronto, um DW integral começa a partir de US$ 2 milhões e demora 
no mínimo um ano para estar consolidado. Mas são valores apenas estimados, 
uma vez que não existe um projeto padrão que serve para todas as empresas 
indistintamente. O montante aplicado depende de cadacaso.
De acordo com alguns especialistas no assunto, as diferenças existentes 
entre um Data Mart e um Data Warehouse são apenas com relação ao tamanho 
do projeto e ao escopo da empresa. Portanto, as definições dos problemas e os 
requisitos dos dados são essencialmente os mesmos para ambos. No entanto, 
um Data Mart trata das questões departamentais ou locais (de um departamento 
específico), enquanto um DW envolve as necessidades de toda a companhia de 
forma que o suporte à decisão atue em todos os níveis da organização.
Ralph Kimball, consultor norte-americano e considerado um dos mais 
influentes gurus do Business Intelligence, discorda dessa definição e argumenta que 
os Data Marts não devem ser departamentais, mas, sim, orientados aos dados ou a 
fontes de dados. Ele exemplifica o caso de uma instituição bancária que dispõe de 
uma fonte de dados de contas correntes e poupança. Nesse caso deveria ser criado 
um Data Mart de Contas, que não será um Data Mart proprietário da área financeira, 
e nem da área de marketing, mas sim um repositório de dados que terá como público 
todos os usuários de todos os departamentos que lidam com aquele assunto.
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
67
Ralph Kimball é um defensor da teoria de que o DW deve ser dividido para 
depois ser conquistado, ou seja, que o mais viável para as empresas é desenvolver 
vários Data Marts para posteriormente integrá-los e, assim, chegar-se ao DW. Na 
sua avaliação, as empresas devem construir Data Marts orientados por assuntos. 
Ao final, teriam uma série de pontos de conexão entre eles, que seriam as tabelas 
Fato e Dimensão em conformidade. Dessa forma, informações entre os diferentes 
Data Marts poderiam ser geradas de maneira íntegra e segura. Kimball batizou 
esse conceito de Data Warehouse Bus Architeture.
Bill Inmon rebate essa teoria e propõe justamente o contrário. Na 
sua avaliação deve-se construir primeiro um Data Warehouse, modelando-se toda a 
empresa para se chegar a um único modelo corporativo, partindo-se posteriormente 
para os Data Marts construídos por assuntos ou departamentais. Inmon defende a 
ideia de que o ponto de partida seriam os CIF – Corporate Information Factory – uma 
infraestrutura ideal para ambientar os dados da empresa. O CIF seria alimentado 
pelos sistemas transacionais. A construção de um ODS (Operational Data Store) seria 
facultativa, mas essa iniciativa ajudaria a reduzir a complexidade da construção de 
um DW, uma vez que todo o esforço de integração entre os sistemas transacionais 
da empresa seria depositado nele.
Uma vez que todos os dados estivessem integrados no DW, se partiria para 
os Data Marts que iriam atender aos diversos departamentos da empresa, gerando 
dados íntegros e corporativos. Inmon condena o processo inverso porque, na sua 
concepção, a construção de Data Marts atendendo a requisitos departamentais seria 
delineada a partir de regras específicas de negócios e de procedimentos de Extração, 
Transformação e Carga (ETL) dos dados oriundos dos sistemas transacionais. A 
visão corporativa da empresa seria relegada a segundo plano e as necessidades 
imediatas dos departamentos prevaleceriam. Além disso, essa iniciativa poderia 
gerar outros problemas, como a redundância de dados em diversos sistemas, o 
consumo exagerado de recursos de produção, e a formação de um verdadeiro caos 
informacional, na medida em que os dados dispostos nos diferentes Data Marts 
não poderiam ser integrados.
Qual deles está certo: Inmon ou Kimball? Ambos ou nenhum? Cabe a cada 
empresa analisar qual das duas abordagens mais se aplica às suas necessidades 
reais e ao seu bolso. No que ambos os gurus concordam é que uma empresa sem 
autoconhecimento e sem ter uma visão corporativa de seu negócio, nunca terá um 
sistema eficiente para auxiliá-la na tomada de decisão.
FONTE: Disponível em: <http://www.tiagocurcio.com/data-warehouse-ou-data-mart-2/>. Acesso 
em: 27 jan. 2013.   
68
RESUMO DO TÓPICO 3
Neste tópico, você viu que:
• Existem vários tipos de bancos de dados. Alguns exemplos são: bancos de dados 
de informações geográficas, multimídia, temporal, biológicos e XML.
• Data Mining é um processo de mineração de dados que visa construir um Data 
Warehouse. Data Warehouse é uma espécie de centralização dos dados da empresa 
com foco em apoio à tomada de decisão.
• Data Mart é um tipo de organização de dados com um fim bem específico e 
definido. Também visa dar apoio a tomada de decisão e normalmente se encontra 
dentro de uma organização de Data WareHouse.
• Big Data e NoSQL são novas tecnologias que visam à armazenamento e 
manipulação de grande quantidade de dados.
69
1 De acordo com o conteúdo estudado no neste tópico, defina por que é 
importante a busca por semelhança em bancos de dados multimídia.
2 Quais são os objetos que um banco de dados de informações geográficas 
pode armazenar? 
3 Com base no conteúdo apresentado no Caderno de Estudos defina o que é 
um processo de Data Mining.
4 Qual é a diferença entre Data Warehouse e Data Mart?
5 Defina o que é o novo paradigma de bancos de dados denominado Big Data?
AUTOATIVIDADE
70
71
UNIDADE 2
MODELAGEM DE DADOS
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
A partir desta unidade, você será capaz de:
• conhecer o processo de modelagem de dados;
• identificar uma entidade e seus atributos;
• compreender a aplicação das formas normais.
Esta unidade está dividida em cinco tópicos e em cada um deles, você 
encontrará atividades que proporcionarão a compreensão dos conteúdos 
apresentados.
TÓPICO 1 – MODELOS DE DADOS
TÓPICO 2 – MODELO ENTIDADE-RELACIONAMENTO
TÓPICO 3 – TIPOS DE RELACIONAMENTOS
TÓPICO 4 – MODELO RELACIONAL
TÓPICO 5 – NORMALIZAÇÃO DE DADOS
72
73
TÓPICO 1
MODELOS DE DADOS
UNIDADE 2
1 INTRODUÇÃO
O conhecimento da modelagem de dados é muito importante para 
qualquer desenvolvedor que, em algum momento, construir alguma aplicação 
que irá interagir com um banco de dados. Independente do tamanho da aplicação 
a ser desenvolvido, o sucesso estará diretamente relacionado a uma modelagem 
bem feita, de modo a garantir dados consistentes, armazenados de forma eficiente, 
proporcionando bom desempenho e também a integridade dos dados.
O objetivo da modelagem de dados é garantir que todos os objetos de 
dados existentes em determinado contexto e requeridos pela aplicação estejam 
representados com precisão dentro do Banco de Dados. 
Podemos definir modelagem de dados como sendo um conjunto de conceitos 
que devem ser usados para descrever a estrutura de uma base de dados. Quanto 
mais fiel a modelagem for ao ambiente em análise, maior é a chance de o projeto ter 
um bom resultado, permitindo assim a criação de um banco de dados mais aderente 
à realidade, possibilitando de forma mais eficiente o desenvolvimento da aplicação.
Uma modelagem mal feita, por sua vez, pode comprometer o sucesso do 
projeto, tendo como consequência diversos problemas, como por exemplo, a aplicação 
não funcionar adequadamente, os dados não confiáveis devido à falta de integridade, 
baixo desempenho etc.
O objetivo da modelagem é criar uma abstração da realidade que seja capaz 
de registrar os acontecimentos, de forma que seja possível programar um sistema 
que atenda às devidas necessidades e informações esperadas pelo usuário. A 
modelagem de dados utiliza notações em idioma natural, podendo ser facilmente 
compreendidos, por conta disso, é recomendado que o modelo de dados, depois de 
elaborado, sejam revisados e verificados pelos usuários finais.
A representação dos dados pode estar submetida a diferentes níveis de 
abstração. Estes níveis podem ser classificados como: modelos conceituais, modelos 
lógicos e modelos físicos. Veremos mais detalhes durante esta unidade.
O objetivo desta unidade é dar um embasamento para que você tenha as 
condições e conhecimentos mínimos para projetar um banco de dados relacional 
dentro da metodologia e segurança necessária para o sucesso de uma aplicação.UNIDADE 2 | MODELAGEM DE DADOS
74
2 MODELO CONCEITUAL
Segundo Machado (2009), a princípio toda realidade é sempre bastante 
nebulosa e informal. Ao observarmos esta realidade, podemos identificar fatos 
que nos levam a conhecê-la de uma forma mais organizada. Os fatos observados 
e modelados dizem algo a respeito do funcionamento de um negócio que estamos 
tentando compreender e manter.
O Modelo Conceitual é uma descrição mais abstrata da realidade, onde 
os fatos do mundo real são descritos de uma forma mais natural, bem como suas 
propriedades e relacionamentos. Esse modelo é utilizado para entendimento, 
transmissão, validação de conceitos e mapeamento do ambiente, possibilitando 
um melhor diálogo entre desenvolvedores e usuários.
Conforme relato de Machado (2004), o Modelo Conceitual deve ser sempre 
a primeira etapa de um projeto de um Banco de Dados (DB), onde o objetivo deste 
modelo é descrever de forma simples e facilmente compreensível pelos usuários 
finais as informações em um contexto de negócio, para posteriormente serem 
armazenadas em um banco de dados. É uma definição de alto nível que retrata 
toda a realidade de uma organização, processo de negócio, setor, repartição, 
departamento etc. 
Durante o processo de criação do modelo conceitual, o analista deverá 
observar fatos e também buscar documentações, registros, regras etc. que 
possam lhe proporcionar um melhor entendimento do processo que se propõe a 
automatizar. Porém, é importante que o processo se atenha aos fatos relevantes 
que serão utilizados para a geração de informações e registro no sistema proposto.
É importante destacar que o Modelo Conceitual não está relacionado 
com o modelo de banco de dados, forma de acesso ou armazenamento dos 
dados. Ele está focado em uma representação gráfica da uma realidade 
existente em um contexto de negócio, conforme está ilustrado na figura a 
seguir. Essa modelagem é feita utilizando o modelo entidade-relacionamento. 
Nos próximos tópicos veremos mais detalhes.
FIGURA 29 – MODELO CONCEITUAL
FONTE: Os autores
TÓPICO 1 | MODELOS DE DADOS
75
3 MODELO LÓGICO
O Modelo Lógico tem por objetivo representar as estruturas que irão 
armazenar os dados dentro de um Banco de Dados, a partir deste momento é que 
são definidas com maior propriedade as entidades e os seus atributos.
O Modelo Lógico é iniciado somente a partir da estruturação do Modelo 
Conceitual. Nesta etapa é que será levada em consideração qual abordagem será 
utilizada referente ao Banco de Dados: Relacional, Hierárquico ou de Rede. Assim, 
o modelo lógico é diretamente dependente da abordagem, que determinará o tipo 
de SGDB que será utilizado.
O Modelo Lógico representa os dados em uma estrutura de armazenamento 
de dados. Nesse momento é definido a estrutura de registro do Banco de Dados, 
seus registros e números de campos com seus respectivos tamanhos, conforme a 
figura a seguir.
FIGURA 30 – MODELO LÓGICO
FONTE: Os autores
4 MODELO FÍSICO
O Modelo Físico é construído com base em um modelo lógico definido, 
com intuito de ser aplicado sobre um SGDB. Neste momento entram as questões 
relacionadas ao tipo e tamanho do campo, relacionamento, indexação, restrições 
etc. Ele descreve as estruturas físicas de armazenamento, tais como tabelas, índices, 
gatilhos, funções, visões, nomenclaturas etc.
O modelo físico, conforme Machado (2004) é a etapa final do projeto de banco 
de dados, onde será utilizada a linguagem de definição de dados do SGDB (DDL) 
para a construção do banco de dados com base no script SQL gerado. A figura a seguir 
representa um Modelo Físico que foi concebido a partir da ferramenta DBDesigner. 
UNIDADE 2 | MODELAGEM DE DADOS
76
FIGURA 31 – MODELO FÍSICO
FONTE: Os autores
Normalmente, as ferramentas de modelagem têm funções para criação de 
scripts que serão responsáveis pela implementação do projeto físico em diversos 
SGBDs. Tomando como exemplo o projeto acima, temos como resultado o 
seguinte script SQL:
CREATE TABLE FILME (
Codigo Filme INTEGER(6) NOT NULL,
 Titulo VARCHAR(100),
GeneroVARCHAR(50),
 Ano INTEGER(4),
Duracao TIME,
 Diretor VARCHAR(150),
FaixaEtariaINTEGER(2) UNSIGNED,
 PRIMARY KEY(Codigo Filme)
);
CREATE TABLE CINEMA (
Codigo do Cinema (CNPJ) INTEGER NOT NULL,
 Nome Fantasia VARCHAR(100),
 Rua VARCHAR(100),
 Bairro VARCHAR(100),
 Cidade INTEGER(6),
 Estado INTEGER(6),
LotacaoINTEGER(3),
 PRIMARY KEY(Codigo do Cinema (CNPJ))
)
TÓPICO 1 | MODELOS DE DADOS
77
CREATE TABLE EXIBICAO (
Data Início DATE NOT NULL,
Data Fim DATE NOT NULL,
FILME_Codigo Filme INTEGER(6) NOT NULL,
CINEMA_Codigo do Cinema (CNPJ) INTEGER NOT NULL,
 PRIMARY KEY(Data Inicio, FILME_Codigo Filme, CINEMA_Codigo do Cinema 
(CNPJ)),
 INDEX FK2_EXIBICAO_FILME(FILME_Codigo Filme),
 INDEX FK1_EXIBICAO_CINEMA(CINEMA_Codigo do Cinema (CNPJ)),
FOREIGN KEY(FILME_CodigoFilme)
REFERENCES FILME(Codigo Filme)
ON DELETE NO ACTION
 ON UPDATE NO ACTION,
FOREIGN KEY(CINEMA_Codigo do Cinema (CNPJ))
 REFERENCES CINEMA(Codigo do Cinema (CNPJ))
ON DELETE NO ACTION
 ON UPDATE NO ACTION
);
Caso você não tenha entendido o script gerado, não se preocupe, pois 
abordaremos mais detalhes sobre este assunto na Unidade 3.
UNI
LEITURA COMPLEMENTAR
DIFERENTES VISÕES PARA OS MESMOS DADOS
Sandra de Albuquerque Siebra
Todos esses modelos, na verdade, são visões diferentes, com nível de 
profundidade diferente para os mesmos dados. E é importante saber que, a 
partir de um modelo, o modelo seguinte pode ser derivado. Para lhe dar uma 
ideia de como as coisas acontecem, vamos explicar o processo descrito na figura 
a seguir. O analista de banco de dados observa a realidade (e também conversar 
com as pessoas que se fizerem necessárias) e, a partir do problema a ser resolvido 
(aplicação a ser desenvolvida), ele organiza suas ideias e cria um minimundo (que 
é um subconjunto da realidade contendo os dados necessários para a resolução do 
problema sendo tratado). O minimundo tem dados que vão ajudar a descrever o 
modelo conceitual (mais alto nível de abstração), o modelo lógico é especificado 
a partir do modelo conceitual e é implementado pelo modelo físico (que é que 
realmente é usado para criar o banco de dados (BD)).
UNIDADE 2 | MODELAGEM DE DADOS
78
Vamos descrever mais formalmente esse processo de criação do BD (que 
equivale ao processo de projeto do banco de dados)? Bem, podemos dizer que esse 
processo é composto por quatro fases conforme figura a seguir.
 Na primeira fase, é feito o Levantamento e Análise dos Requisitos. Nessa 
fase são realizadas entrevistas com os potenciais utilizadores do BD, são levantados 
documentos importantes, pode-se olhar um sistema legado (já existente) para ver 
como ele funciona, com o objetivo de compreender e documentar os requisitos 
necessários para a construção do banco de dados (requisitos de BD).
A segunda fase é o projeto conceitual (ou modelagem) cujo objetivo é definir 
um modelo de dados conceitual que inclua a descrição das entidades do BD, dos 
atributos das entidades, dos relacionamentos entre entidades, além das possíveis 
restrições, evitando, no entanto, detalhes de próprios da fase de implementação. 
Essa fase dá origem ao esquema conceitual representado pelo modelo entidade-
relacionamento (que estudaremos em detalhes na próxima seção).
A terceira fase é o projeto lógico (ou implementação) que objetiva mapear o 
modelo de dados conceitual para o modelo de dados relacional. Essa fase dá origem 
ao esquema lógico representado pelo modelo relacional que já é um modelo que 
depende do SGBD que será usado para implementar o banco de dados.
A quarta e última fase é o projeto físico que objetiva mapear o modelo 
dedados relacional para o modelo de dados físico que tratará das estruturas em 
memória e organização dos arquivos do BD (arquivos de índices). Essa fase dá 
origem ao esquema físico que será o que realmente será implementado no BD.
TÓPICO 1 | MODELOS DE DADOS
79
FONTE: Disponível em: <http://www.fernandoans.site50.net/curso/curso06/UFPE-BancoDeDados.pdf>. Acesso em: 26 fev. 2013.
80
RESUMO DO TÓPICO 1
Neste tópico, você viu que: 
• A modelagem de dados é o conjunto de conceitos que devem ser usados para 
descrever a estrutura de uma base de dados.
• O objetivo da modelagem é criar uma abstração da realidade que seja capaz de 
registrar os acontecimentos.
• A modelagem de dados utiliza notações em idioma natural.
• O Modelo Conceitual é uma descrição mais abstrata da realidade, onde os 
fatos do mundo real são descritos de uma forma mais natural, bem como suas 
propriedades e relacionamentos.
• O Modelo Conceitual deve ser sempre a primeira etapa de um projeto de um 
Banco de Dados (DB).
• O Modelo Conceitual não está relacionado com o modelo de banco de dados, 
forma de acesso ou armazenamento dos dados.
• O Modelo Lógico tem por objetivo representar as estruturas que irão armazenar 
os dados dentro de um Banco de Dados. A partir deste momento é que são 
definidas com maior propriedade as entidades e os seus atributos.
• O Modelo Lógico é iniciado somente a partir da estruturação do Modelo 
Conceitual.
• O Modelo Físico é construído com base em um modelo lógico definido, com 
intuito de ser aplicado sobre um SGDB. 
• Na construção do Modelo Físico entram as questões relacionadas ao tipo e 
tamanho do campo, relacionamento, indexação, restrições etc. 
• O Modelo Físico descreve as estruturas físicas de armazenamento, tais como 
tabelas, índices, gatilhos, funções, visões, nomenclaturas etc.
• O Modelo Conceitual, o Modelo Lógico e o Modelo Físico, na verdade, são 
visões diferentes, com nível de profundidade diferente para os mesmos 
dados. E é importante saber que, a partir de um modelo, o modelo seguinte 
pode ser derivado.
81
AUTOATIVIDADE
1 O Modelo de Dados pode ser representado em diferentes níveis de abstração. 
Quais são estes tipos de modelos?
2 O Modelo Conceitual é a primeira fase de um projeto de Banco de Dados. 
Para que ele é utilizado e o que ele possibilita?
3 O que o Modelo Lógico tem por objetivo representar? 
4 Qual é o tipo de modelo que descreve as estruturas físicas de armazenamento, 
tais como tabelas, índices, gatilhos, funções, visões, nomenclaturas etc?
( ) Modelos conceituais.
( ) Modelos lógicos. 
( ) Modelos físicos. 
82
83
TÓPICO 2
MODELO ENTIDADE-RELACIONAMENTO
UNIDADE 2
1 INTRODUÇÃO
Caro(a) Acadêmico(a)! A seguir será possível conhecer o Modelo Entidade-
Relacionamento e sua estrutura conceitual e lógica geral de um banco de dados.
2 MODELO ENTIDADE-RELACIONAMENTO
O Modelo Entidade-Relacionamento (MER) é uma representação gráfica 
dos objetos do mundo real, chamados de entidades, bem como a forma como 
que eles estão relacionados, denominada relacionamento. Este modelo tem por 
objetivo retratar uma porção da realidade para que seja implementada sobre uma 
estrutura de Banco de Dados. 
Aliado ao fato do Modelo Entidade-Relacionamento (MER) ser uma 
ferramenta gráfica para representação de um banco de dados, ele ainda possui 
um alto grau de interpretação, simplificando o processo de comunicação entre 
usuários e analistas que estão à frente do projeto. 
O MER descreve a estrutura conceitual e lógica geral de um banco de 
dados, conforme ilustrado na figura a seguir.
UNIDADE 2 | MODELAGEM DE DADOS
84
FIGURA 32 - ENTIDADERELACIONAMENTO E ATRIBUTO
FONTE: Os autores
Segundo Machado (2004), o MER foi originalmente definido por Peter Chen 
em 1976, baseado na teoria relacional criada em 1970 por Codd. Durante os anos 
80, o MER sofreu algumas alterações com o objetivo de melhor atender às questões 
relacionadas ao mundo real, tornando-se hoje o modelo de dados conceitual mais 
conhecido e utilizado no mercado.
O processo de modelagem consiste em cinco aspectos importantes, segundo 
Machado (2004), que são os seguintes:
• Observação: Composta por entrevistas, reuniões, questionários, análise de 
documentos aliados ao conhecimento e experiência prévia da área de negócio.
• Entendimento dos conceitos: É considerado o núcleo do processo de modelagem. 
Fase destinada a identificar, entender e assimilar o objeto observado.
• Representação dos objetos: É aplicado à técnica de modelagem de dados 
Entidade-Relacionamento.
• Verificação de fidelidade e carências: Momento para identificar falhas e 
anomalias, ponto de vista errado ou má aplicação da técnica.
• Validação: Fase de aprovação final do modelo junto ao usuário final e outros 
profissionais da área técnica.
 
TÓPICO 2 | MODELO ENTIDADE-RELACIONAMENTO
85
Antes de iniciar com a elaboração de um Modelo Entidade Relacionamento, 
é preciso compreender seus principais componentes:
2.1 ENTIDADE
A entidade é a representação dentro do MER de um objeto físico ou abstrato 
do mundo real e relacionado ao negócio em análise. A entidade tem existência 
própria, e dentro do MER é sobre ela que são guardadas algumas informações. 
Machado (2004, p. 71), define entidade como sendo “... aquele objeto que 
existe no mundo real com uma identificação distinta e com um significado próprio”.
Cada entidade deve possuir identificação própria e atributos. Dentro do 
MER, as entidades são representadas por um retângulo. Exemplos: casa, carro, 
matrícula, pessoa (física ou jurídica), viagem etc.
FIGURA 33 – ENTIDADES
FONTE: Os autores
Entidade X Instância de Entidade
“Para se referir a uma entidade particular fala-se em instância ou ocorrência de entidade. Uma 
instância é um objeto de uma entidade com suas respectivas propriedades preenchidas com 
valores, distinguindo-a assim de qualquer outra instância. Vamos exemplificar: a entidade 
empregada, descrita há pouco, possui os atributos, nome, cargo que ocupa, idade e estado civil.
Uma instância dessa entidade poderia ser: “Maria, secretária, 31 anos, solteira”. Ou seja, a 
instância é como se fosse um exemplo de empregado, com os atributos preenchidos com 
valores. Entendeu?” (SIEBRA 2010, p. 13).
UNI
UNIDADE 2 | MODELAGEM DE DADOS
86
2.2 ATRIBUTOS
Os atributos são as características ou propriedades das entidades e guardam 
informações específicas delas. 
Segundo Machado (2009, p. 61), “Todo objeto, para ser uma entidade, possui 
propriedades que são descritas por atributos. Esses atributos e seus conteúdos 
(valores), juntos, descrevem as instâncias de uma entidade [...]”.
Exemplo: em uma entidade “Veículo”, teremos os atributos modelo, marca, 
ano, tipo, combustível etc. 
Existem basicamente dois tipos de atributos: 
• Identificadores: Dão identificação única a cada ocorrência dentro da entidade. 
Também são conhecidos por chaves. Por exemplo, em uma entidade “Pessoa”, o 
CPF poderia ser um atributo identificador, pois cada pessoa tem um CPF único.
• Descritores: Descrevem características da entidade. Tomando o exemplo 
anterior da entidade “Pessoa”, os atributos descritores poderiam ser nome, 
telefone, data de nascimento etc.
Os atributos relacionados à entidade podem ser representados dentro da 
mesma, ou na forma geométrica de círculos, também associados à entidade à qual 
pertencem, conforme demonstram as imagens:
FIGURA 34 – ATRIBUTOS DA ENTIDADE
FONTE: Os autores
TÓPICO 2 | MODELO ENTIDADE-RELACIONAMENTO
87
Para que a entidade seja relevante ao projeto MER, ela deverá ter pelo menos um 
ou mais atributos.
UNI
2.3 RELACIONAMENTO
O relacionamento é a forma pela qual são feitas associações entre as 
entidades existentes no mundo real. Os relacionamentos são relativamente mais 
complexos que os outros componentes do MER, porém, eles são extremamente 
importantes por se tratarem de uma questão essencial deste tipo de modelo.
Para Machado (2009, p. 73) “Entender efetivamente relacionamentos e ser 
capaz de enxergar esses objetos como participantes do mundo real são fatores 
primordiais para efetuar trabalhos de modelagem de dados”.
No mundo real, assim como no MER, é justamente o relacionamento que é 
o responsável por dar sentidos aos objetos ou entidades.
Dentro do MER, os relacionamentos são representados por losangos, 
e normalmenteseus nomes são verbos que identificam uma ação entre as duas 
entidades, conforme podemos ver na imagem a seguir.
FIGURA 35 – RELACIONAMENTO ENTRE ENTIDADES
FONTE: Os autores
Para melhor compreendermos os relacionamentos, é preciso entender os 
elementos que o caracterizam:
• Semântica: A forma verbal utilizada para representar o conceito, lido da 
esquerda para a direita, e de cima para baixo.
• Cardinalidade: É o número de ocorrências de uma entidade para outra. Podem 
ser de três tipos: 
UNIDADE 2 | MODELAGEM DE DADOS
88
• 1:1= um para um.
• 1:N = um para muitos.
• N:M = muitos para muitos.
• Condições para as entidades participarem em determinado relacionamento.
• Número de entidades envolvidas em um relacionamento, determinando se ele é 
binário (entre duas entidades) ou n-ário (entre mais de duas entidades).
3 CONSTRUINDO UM MODELO ENTIDADE-RELACIONAMENTO
Inicialmente é necessário que tenhamos em vista um problema a ser 
resolvido, e com base nesse problema devemos delimitar o minimundo ou escopo 
a ser especificado. 
Deste modo, durante a fase inicial, chamada análise de requisitos, costuma 
ser elaborado o Modelo Descritivo, que corresponde a uma documentação 
descritiva, que busca relatar através de linguagem natural à situação, o ambiente e 
o problema a ser resolvido, delimitando assim o escopo do projeto.
O Modelo Descritivo irá fornecer as informações para a construção do 
modelo MER.
Segue um exemplo prático e resumido de um Modelo Descritivo.
Uma universidade mantém um cadastro de seus acadêmicos. De cada um 
são registrados: nome, endereço, telefone e data de nascimento.
As disciplinas, que são oferecidas à universidade, mantêm o código, nome, 
carga horária e ementa.
O histórico de um aluno faz associação com as disciplinas que ele cursou 
em cada etapa, contendo a nota e frequência e situação de aprovado ou reprovado.
A universidade também mantém um cadastro dos seus professores: são 
registrados nome, endereço, telefone, e data de nascimento.
Cada uma das disciplinas nos cursos da universidade terá somente um 
professor ministrando as aulas.
Este documento pode ser construído a partir de vários recursos que 
o analista poderá fazer, como observações, reuniões, questionário, análise de 
documentos, troca de experiências etc.
TÓPICO 2 | MODELO ENTIDADE-RELACIONAMENTO
89
Depois da elaboração deste documento, é muito importante revisá-lo 
juntamente com os usuários ou envolvidos no projeto, para validar as informações 
relacionadas.
Mesmo durante a construção do modelo descrito, é possível identificar 
nele quais serão as entidades, parte dos atributos das mesma e boa parte dos 
relacionamentos. As entidades, conforme foi citado anteriormente, são abstrações 
do mundo real dentro do MER. 
Uma maneira prática de identificar mais facilmente as entidades é relacionar 
todos os substantivos descritos no modelo descrito. Depois de relacionados, é 
preciso verificar dentro desta lista de substantivos, quais realmente são entidades 
e quais têm aderência a serem atributos destas entidades.
Os relacionamentos por sua vez podem ser identificados através dos 
verbos utilizados no modelo descritivo. Obviamente, nem todos os verbos serão 
utilizados (pois fazem parte dos recursos da linguagem para descrição do cenário). 
Porém, os verbos que identificam ações entre duas entidades, é um sério candidato 
a um relacionamento. Por conta disso, é essencial identificar todas as entidades do 
modelo descritivo primeiro e para depois identificar os relacionamentos.
QUADRO 2 – TABELA DEMONSTRATIVA
OBJETO ENTIDADE ATRIBUTO RELACIONAMENTO
Universidade X
Aluno X
Nome X
Data de nascimento X
Cursar X
Disciplinas X
Notas X
Professor X
Ministrar X
.....
FONTE: Os autores
UNIDADE 2 | MODELAGEM DE DADOS
90
LEITURA COMPLEMENTAR
Edgar Frank Codd
Edgar Frank Codd (Dorset, 23 de agosto de 1923 – 18 de abril de 2003) foi 
um matemático britânico. Ele desenvolveu o modelo de banco de dados relacional, 
quando era pesquisador no laboratório da IBM em San José.
Em junho de 1970, ele publicou um artigo chamado “RelationalModelof 
Data for LargeShared Data Banks” (“Modelo de dados relacional para 
grandes bancos de dados compartilhados”) que foi publicado na Revista ACM 
(“Association for ComputingMachinery”) Vol. 13, No. 6, pp. 377–387. Este artigo, 
um desenvolvimento de um artigo interno da IBM publicado no ano anterior, 
demonstrou os fundamentos da teoria dos bancos de dados relacionais, usando 
tabelas (“linhas” e “colunas”) e operações matemáticas para recuperá-las destas 
tabelas (UNION, SELECT, SUM etc…).
Devido ao interesse da IBM em preservar o faturamento trazido por produtos 
pré-relacionais, tais como o IMS/DB, ela não quis, inicialmente, implementar as 
ideias de Codd. Este então buscou grandes clientes da IBM para mostrar-lhes as 
novas potencialidades de uma eventual implementação do modelo relacional. 
Mesmo com a pressão dos clientes IBM, ela não incluiu Codd nos novos projetos 
sendo implementados. Devido a isso, desgostoso pela rejeição de suas ideias, Codd 
uniu-se a seu colega Christopher J. Date da IBM para deixar a mesma, fundando 
uma consultoria chamada Codd & Date. Logo após adoeceu e teve de encerrar sua 
carreira, vindo a falecer no começo do III milênio. Porém, Date continuou a obra de 
Codd, tornando-se autor de vários livros importantes da área de BD.
FONTE: Disponível em: <http://www.fernandoans.site50.net/curso/curso06/UFPE-
BancoDeDados.pdf>. Acesso em: 26 fev. 2013.
91
RESUMO DO TÓPICO 2
Neste tópico, você viu que: 
• O Modelo Entidade-Relacionamento (MER) é uma representação gráfica dos 
objetos do mundo real, chamados de entidades, bem como a forma como que 
eles estão relacionados, chamada de relacionamento.
• O MER foi originalmente definido por Peter Chen em 1976, baseado na teoria 
relacional criada em 1970 por Codd.
• A entidade é a representação dentro do MER de um objeto físico ou abstrato 
do mundo real e relacionado ao negócio em análise. A entidade tem existência 
própria, e dentro do MER é sobre ela que são guardadas algumas informações. 
• Os atributos são as características ou propriedades das entidades, e guardam 
informações específicas sobre as mesmas.
• Os atributos Identificadores identificam cada ocorrência dentro da entidade, 
também conhecidos por chaves.
• O atributo descritor descreve as características da entidade.
• O relacionamento é a forma pela qual são feitas associações entre as entidades 
existentes no mundo real.
92
AUTOATIVIDADE
1 A representação gráfica do Modelo Entidade-Relacionamento representa o 
quê?
2 Por quem foi originalmente definido o Modelo Entidade-Relacionamento? E 
com base em qual teoria?
3 O que uma entidade representa dentro do Modelo Entidade-Relacionamento?
4 Basicamente existem dois tipos de atributos, quais são eles e para que servem?
5 Qual é a função do relacionamento dentro do MER?
93
TÓPICO 3
TIPOS DE RELACIONAMENTOS
UNIDADE 2
1 INTRODUÇÃO
Conforme foi dito anteriormente, os relacionamentos definem como são 
feitas as associações entre duas ou mais entidades. Eles existem por características 
intrínsecas dos objetos, e através do seu mapeamento é possível demonstrar como 
uma entidade se comporta em relação às demais.
Conforme Cougo (1997), cada objeto poderá se relacionar com diversos 
outros objetos independentemente do seu tipo. Porém, o que define se uma 
associação é válida ou não será o grau de fidelidade e completeza atingido durante 
o processo de modelagem.
Nesta unidade estaremos vendo quais são os tipos de relacionamento, a 
partir do grau de associação entre as entidades.
2 CONDICIONALIDADE DO RELACIONAMENTO
Os relacionamentos podem ser denotados de opcionalidade quanto à 
participação de elementos em sua associação. O critério para condicionalidade é 
verificar o número de ocorrência de instâncias dentro do relacionamento. Desta 
forma, vão existir relacionamentos opcionais, que não exigem a obrigatoriedade 
de acontecerem instânciase os que indicarão obrigatoriedade da participação.
Para que o conceito fique mais claro, vamos observar alguns exemplos 
práticos. Observe a figura:
FIGURA 36 – RELACIONAMENTO OBRIGATÓRIO
FONTE: Os autores
94
UNIDADE 2 | MODELAGEM DE DADOS
Nesta relação, observamos que a entidade PAI precisa possuir pelo 
menos um FILHO para que seja caracterizado um relacionamento. Lendo o 
relacionamento, temos:
• Um PAI deverá ter um ou mais FILHOS.
• Cada filho deverá ter um e somente um PAI.
O relacionamento entre duas ou mais entidades pode admitir opcionalidade, 
que é quando não é obrigatória a ocorrência de uma instância. Para ficar mais claro 
o entendimento, observe a figura a seguir:
FIGURA 37 – RELACIONAMENTO OPCIONAL
FONTE: Os autores
Neste relacionamento percebemos que não é obrigatório que a entidade 
PESSOA venha a possuir CARRO. Então, lendo o relacionamento, temos:
• Uma PESSOA poderá ter nenhum, um ou vários CARROS.
• Um CARRO sempre pertencerá a uma única pessoa.
Ainda é possível determinar o número máximo de associações que as 
entidades podem fazer em um relacionamento, de modo a atender características 
de limitações sobre abstrações do mundo real. Por exemplo, vamos observar a 
figura a seguir:
FIGURA 38 – LIMITE DE ASSOCIAÇÃO
FONTE: Os autores
É possível observar que existe uma limitação no número máximo de 
associações entre as entidades, nos dois sentidos do relacionamento. Fazendo a 
leitura, temos:
• Em um CAMPEONATO, terá que ter no mínimo1 e no máximo 24TIMES.
TÓPICO 3 | TIPOS DE RELACIONAMENTOS
95
Um TIME deverá participar em pelo menos um CAMPEONATO, podendo 
participar de no máximo até dois CAMPEONATOS.
3 GRAU DO RELACIONAMENTO
3.1 RELACIONAMENTO UM PARA UM
O grau de relacionamento ou cardinalidade do relacionamento é 
responsável por determinar o número de ocorrências entre duas entidades que 
estão associadas por um relacionamento.
Com base no grau de relacionamento ou cardinalidade, temos a 
possibilidade de classificar os relacionamentos entre as entidades com três tipos 
de graus distintos, conforme estudaremos a seguir:
No relacionamento Um para Um (1:1), cada elemento de uma entidade se 
relaciona a apenas um único elemento de outra entidade. Veja o exemplo na figura 
a seguir, onde cada elemento da entidade “PESSOA” está associado apenas a um 
único elemento de “PASSAPORTE”.
FIGURA 39 – RELACIONAMENTO UM PARA UM
FONTE: Os autores
Sempre que for feito o relacionamento entre duas entidades, devemos 
fazer a leitura nos dois sentidos do negócio, isso poderá evitar o erro na criação 
do grau do relacionamento entre as entidades. Para o exemplo apresentado, cada 
uma das entidades tem características próprias. O seu relacionamento é de 1:1 
em ambos os sentidos:
• Uma PESSOA poderá ter somente um PASSAPORTE.
• Cada PASSAPORTE pertencerá somente a uma única PESSOA.
96
UNIDADE 2 | MODELAGEM DE DADOS
3.2 GRAU UM PARA MUITOS
No relacionamento Um para Muitos (1:N), temos a associação de um 
elemento da entidade associado a vários elementos de outra entidade. Veja o 
exemplo a seguir, em que a entidade “PESSOA” associado a muitos elementos da 
entidade “CARRO”, e somente um elemento de “CARRO” associado à entidade 
“PESSOA”. Este grau de relacionamento na prática é o mais comum no mundo 
real, observe a figura a seguir.
FIGURA 40 – RELACIONAMENTO UM PARA MUITOS
FONTE: Os autores
Observando a figura anterior, podemos ter a seguinte interpretação:
• Cada PESSOA pode ser proprietária de um ou vários CARROS. 
• Cada CARRO por sua vez, pertence a uma única PESSOA.
Podemos observar que é importante fazermos sempre a leitura nos dois 
sentidos do negócio, pois caso a leitura fosse feita apenas no sentido de “CARRO” 
para “PESSOA”, o grau fica Um para Um, não chegaríamos a um grau de 
relacionamento que reflete a realidade em questão.
3.3 GRAU MUITOS PARA MUITOS
O relacionamento Muitos para Muitos (M:N) ocorre quando a ocorrência 
de uma entidade se relaciona com vários de outra e vice-versa. Para um melhor 
entendimento, observe a figura a seguir.
FIGURA 41 - RELACIONAMENTO MUITOS PARA MUITOS
FONTE: Os autores
Conforme ilustra a figura anterior, podemos observar que uma ocorrência 
da entidade “LIVRO” pode estar associa a várias ocorrências na entidade “AUTOR”, 
e uma ocorrência da entidade “AUTOR” pode estar associa a várias ocorrências na 
entidade “LIVRO”. Na prática, poderias ler:
TÓPICO 3 | TIPOS DE RELACIONAMENTOS
97
4 AUTORRELACIONAMENTO
O autorrelacionamento, assim como o seu próprio nome sugere é 
responsável por identificar o relacionamento de uma ocorrência de uma entidade 
com ela mesma. Este tipo de relacionamento normalmente seve para representar 
uma estrutura hierárquica. Por exemplo, vamos considerar uma entidade pessoa, 
onde uma ocorrência (Pessoa) pode ter um pai, este pai pode ter pai e assim 
sucessivamente. Para ilustrar observe a figura a seguir:
• Um LIVRO pode ser escrito por um ou vários AUTORES.
• Um AUTOR pode escrever um ou vários LIVROS.
Uma forma de identificar a cardinalidade Muitos para Muitos pode ser feita 
através da leitura do grau, onde o resultado vai ser Um para Muitos por ambos os 
lados da leitura.
Segundo Machado (2009, p. 84), “Esse tipo de relacionamento tem um 
aspecto extremamente peculiar, ele possui atributos. Isso quer dizer que esse 
relacionamento possui dados que são inerentes ao fato e não às entidades”. 
FIGURA 42 – AUTORRELACIONAMENTO
FONTE: Os autores
A figura que acabamos de observar represente uma entidade pessoa com 
autorrelacionamento, onde podemos fazer a seguinte leitura, que uma pessoa tem 
um único pai e um pai pode ter associado muitas pessoas (filhos). Neste caso, 
o relacionamento é um para muitos, conforme vimos anteriormente, a única 
diferença é que a entidade que será relacionada neste momento é a própria 
entidade de origem.
Vejamos a seguir como fica a representação deste autorrelacionamento 
dentro de uma única tabela, veja na figura a seguir.
98
UNIDADE 2 | MODELAGEM DE DADOS
FIGURA 43 – AUTORRELACIONAMENTO
ID-PESSOA NOME ID-PAI
1 Edson Neto Null
2 Roberto Carlos Null
3 Agatha Christie 1
4 Renato Russo 2
5 Anderson Silva 4
FONTE: Os autores
Com base na figura que acabamos de observar, podemos identificar que as 
ocorrências que possuem o atributo ID-PAI com valor informado, representam a 
ocorrência de um filho do pai em questão. 
Para facilitar o entendimento, vamos fazer a leitura da entidade que 
acabamos de analisar. Edson Neto é pai de Agatha Christie, Roberto Carlos é pai 
de Renato Russo e avô de Anderson Silva.
99
Neste tópico, você viu que: 
• Os relacionamentos definem como são feitas as associações entre duas ou mais 
entidades.
• Existem relacionamentos opcionais, que não exigem a obrigatoriedade de 
acontecerem instância e os que indicarão obrigatoriedade da existência.
• O grau de relacionamento ou cardinalidade do relacionamento é responsável por 
determinar o número de ocorrências entre duas entidades que estão associadas 
por um relacionamento.
• No relacionamento Um para Um (1:1), cada elemento de uma entidade se 
relaciona apenas com um único elemento de outra entidade.
• No relacionamento Um para Muitos (1:N), temos a associação de um elemento 
da entidade associado a vários elementos de outra entidade.
• O relacionamento Muitos para Muitos (M:N) ocorre quando a ocorrência de 
uma entidade se relaciona com vários de outra e vice-versa.
• O autorrelacionamento, como seu próprio nome sugere, é responsável por 
identificar o relacionamento de uma ocorrência de uma entidade com ela mesma.
RESUMO DO TÓPICO 3
100
AUTOATIVIDADE
1 O que define o relacionamento?
2 O que representa o grau de relacionamento ou cardinalidade do 
relacionamento?
3 Crie uma representação gráfica do relacionamento Um para Um (1:1) entre 
duas entidades.
4 Crie uma representação gráfica do relacionamento Um para Um (1:N) entre 
duas entidades.
5 Crie uma representação gráfica do relacionamento Um para Um (M:N) entre 
duas entidades.6 Crie uma representação gráfica de um autorrelacionamento.
101
TÓPICO 4
MODELO RELACIONAL
UNIDADE 2
1 INTRODUÇÃO
Neste tópico será apresentada uma breve introdução ao modelo de 
dados que é utilizado nos sistemas de gerenciamento de banco de dados do tipo 
relacional. O objetivo é dar condições para que você compreenda um projeto de 
um DB relacional, e não uma abordagem completa.
2 BANCO DE DADOS RELACIONAL
O banco de dados relacional é composto por estruturas que permitem o 
armazenamento e resgate de informações, de modo estruturado, respeitando uma 
série de regras de funcionamento. 
É preciso ter em mente que, o modelo lógico criado até aqui sofrerá uma 
adaptação para que possua aderência sobre estas estruturas de armazenamento 
que um banco de dados relacional dispõe.
Normalmente, um modelo lógico se transformará em um conjunto de 
tabelas e relações. As tabelas em um banco de dados relacionais têm sua origem 
no modelo entidade-relacionamento, onde elas eram chamadas de entidades. Os 
atributos de cada entidade irão compor campos em uma tabela.
Os relacionamentos têm a mesma origem quando é criado o modelo 
entidade-relacionamento além de criar as entidades e seus atributos, também é 
criado o relacionamento entre elas.
3 TABELA
A tabela é um objeto de grande importância para um banco de dados, 
pois é nela que serão armazenados os dados e futuramente disponibilizados aos 
usuários do sistema.
Segundo Heuser (2001, p. 78), uma tabela é um conjunto não ordenado de 
linhas (tupla), cada linha é composta por uma série de campos (atributo). Cada 
campo é identificado por um nome de campo (nome do atributo), o conjunto de 
campos homônimos de todas as linhas de uma tabela forma uma coluna. Observe 
a figura a seguir:
102
UNIDADE 2 | MODELAGEM DE DADOS
FIGURA 44 – TABELA
CÓDIGO NOME DATA DE NASCIMENTO ENDEREÇO
120958 Edson Vargas Farias 15/02/1985 Rua Chapecó
120959 Cintia Ferreira 27/08/1984 Rua Maranhão
120960 Robson da Silva 28/01/1983 Rua Ingá
120961 Agnaldo Ribeiro 02/05/1979 Rua Rondônia
120962 Júlio Bastos 25/10/1984 Rua Enry
FONTE: Os autores
Ao fazermos uma comparação da tabela com o modelo lógico, percebemos 
que as tabelas correspondem às entidades. É muito provável que cada entidade do 
modelo lógico seja convertida em uma tabela ou mais tabelas. 
Os campos da tabela (colunas) são facilmente relacionados aos atributos de 
cada entidade. 
As linhas por sua vez, representam cada instancia da entidade. Cada vez 
que houver uma ocorrência de registro de uma entidade, respectivamente na tabela 
será adicionada uma linha com os valores dos seus atributos.
4 CHAVE
As chaves, em relação ao modelo lógico, correspondem aos atributos 
identificadores. Eles permitem dar uma identificação a cada ocorrência de instância 
em uma tabela, e garantir que elas sejam únicas.
Porém, dentro do banco de dados propriamente dito, as chaves contam 
ainda com outras funcionalidades, sendo que, além de ter a função de identificar 
uma linha de uma tabela, elas ajudam a estabelecer o relacionamento entre as 
tabela de um banco de dados relacional.
Basicamente existem três tipos de chaves em um banco de dados relacional: 
chave primária, chave alternativa, chave estrangeira. Em seguida veremos mais 
detalhes referentes aos tipos de chaves e suas respectivas características.
4.1 CHAVE PRIMÁRIA
A chave primária ou primary key (PK) é uma coluna ou conjunto de colunas 
que identificam unicamente um registro dentro de uma tabela, ela pode ser simples 
ou composta. Os campos que pertencem à chave primária são obrigatórios, não 
admitindo valor vazio ou NULL.
TÓPICO 4 | MODELO RELACIONAL
103
Na abordagem relacional, segundo Heuser (2001), ao definir uma chave 
primária não se está definindo nenhum caminho de acesso, está-se definindo 
apenas uma restrição de integridade.
A chave primária simples é formada por apenas um campo da tabela. Neste 
caso podemos dizer que o valor da coluna chave não se repete.
FIGURA 45 – TABELA COM CHAVE PRIMÁRIA SIMPLES
PESSOA
CPF_PESSOA NOME
88381248175 André Ricardo
87702347368 Murilo Santos
66986242255 Magda Silva
FONTE: Os autores
A chave primária composta é formada por mais de um campo da tabela, 
quando temos esta situação, o valor do conjunto de colunas envolvidas na chave 
não se repete. Isso significa que os valores de parte das colunas podem se repetir.
FIGURA 46 – TABELA COM CHAVE PRIMÁRIA COMPOSTA
PESSOA_MATRÍCULA
CPF_PESSOA CD_MATRÍCULA SITUACAO
88381248175 223344 Ativo
87702347368 556644 Ativo
66986242255 552244 Formado
FONTE: Os autores
4.2 CHAVE ESTRANGEIRA
A chave estrangeira ou foreign key (FK), é uma coluna ou conjunto de 
colunas que se referem necessariamente a uma chave primária de outra tabela ou 
dela mesma no caso de recursividade, estabelecendo um relacionamento entre as 
tabelas. Este relacionamento garante a integridade dos dados relacionados, pois 
apenas serão permitidos valores que atendam ao relacionamento.
A existência de uma chave estrangeira, segundo Heuser (2001), impõe 
restrições que devem ser garantidas ao executar operações de alterações do DB.
104
UNIDADE 2 | MODELAGEM DE DADOS
FIGURA 47 – TABELA COM CHAVE ESTRANGEIRA
• Na inclusão de uma linha: Deve garantir que o valor da chave estrangeira 
apareça na coluna da chave primária referenciada.
• Na alteração do valor da chave estrangeira: Deve garantir que o novo valor da 
chave estrangeira apareça na coluna da chave primária referenciada.
• Na exclusão de uma linha da tabela que contém a chave primária referenciada 
pela chave estrangeira: Deve garantir que na coluna chave estrangeira não 
apareça o valor da chave primária que está sendo excluída.
• Na alteração do valor da chave primária referenciada pela chave estrangeira: 
Deve garantir que na coluna chave estrangeira não apareça o antigo valor da 
chave primária que está sendo alterada.
Observe a figura a seguir, onde a tabela FUNCIONÁRIO possui uma 
coluna ID_DEPARTAMENTO que é chave primária da tabela DEPARTAMENTO.
FUNCIONÁRIO
ID_PESSOA PK NOME_FUNCIONÁRIO ID_DEPARTAMENTO FK
123041 Maria da Silva 1022
123042 João Neto 1023
123043 Roberto Augusto 1023
123044 Jonas Manuel Ribeiro 1021
123045 Augusto Franco 1023
DEPARTAMENTO
ID_DEPARTAMENTO PK NOME_DEPARTAMENTO
1021 Financeiro
1022 Recursos Humanos
1023 Operacional
1024 Direção
FONTE: Os autores
As duas tabelas anteriores representam informações distintas: a primeira 
traz uma relação de funcionários de uma empresa fictícia, e a outra relaciona os 
departamentos desta empresa. 
TÓPICO 4 | MODELO RELACIONAL
105
Existe um relacionamento entre as tabelas, onde dentro da tabela de 
funcionário é feito referência ao departamento a que o funcionário pertence, 
a partir do número de sua identificação. Por exemplo, a funcionária “Maria da 
Silva”, cujo código é 123041, possui no campo ID_DEPARTAMENTO o valor 1022, 
que corresponde ao departamento “Financeiro” da tabela departamento. 
Logo, este campo ID_DEPARTAMENTO na tabela funcionários é uma 
chave estrangeira (foreing key) que faz referência à chave primária da tabela 
DEPARTAMENTOS.
4.3 CHAVE ALTERNATIVA
Em alguns casos mais de uma coluna ou grupo de colunas da tabela 
servem para identificar unicamente um registro. Neste caso, uma das chaves 
é criada como chave primária e a outra, como alternativa (também conhecida 
como Chave única “UK”).
FIGURA 48 – TABELA COM CHAVE ALTERNATIVA
VEÍCULO
CD_RENAVAM (PK) PLACA (UK) NOME
998833229 MTU8956 KOMBI
334432455 UTI0669 FUSCA
442634523 MIK9887 GOL
FONTE: Os autores
No exemplo visto anteriormente, tanto a chave primária CD_RENAVAM 
quanto a alternativa PLACA servem para identificar um veículo. Neste caso foi 
optado por definir o campo CD_RENAVAM como sendo primária, pois esta 
informação existe antes mesmo de um veículo possuir placa, é importante lembrar 
que a chave primária não aceita valor NULL, já a chave alternativa sim.
Em alguns SGDB, é possível criar uma chave estrangeira referenciando uma chave 
alternativa.
UNI106
UNIDADE 2 | MODELAGEM DE DADOS
LEITURA COMPLEMENTAR
As 12 Regras de Codd
Edgard F. Codd, em 1985, estabeleceu as 12 regras de Codd que determinam 
o quanto um banco de dados é relacional. Em algumas vezes, as regras se tornam 
uma barreira e nem todos os SGBDs relacionais fornecem suporte a elas. De qualquer 
forma, a título de conhecimento, vamos apresentá-las a seguir. Lembramos que 
nem todas as regras serão completamente compreendidas nesse momento, mas o 
serão até o final da disciplina.
Regra 1: Regra das informações em tabelas: As informações a serem armazenadas 
no banco de dados devem ser apresentadas como relações (tabelas formadas por 
linhas e colunas) e o vínculo de dados entre as tabelas deve ser estabelecido por 
meio de valores de campos comuns (chaves estrangeiras). 
Regra 2: Regra de acesso garantido: Todo e qualquer valor atômico em um BD 
relacional possui a garantia de ser logicamente acessado pela combinação do nome 
da tabela, do valor da chave primária e do nome do campo/coluna que deseja 
acessar. Isso porque, com o nome da tabela, se localiza a tabela desejada. Com o 
valor da chave primária a tupla desejada dentro da tabela é localizada. E com o 
nome do campo/coluna se acessa a parte desejada da tupla.
Regra 3: Regra de tratamento sistemático de valores nulos: Valores nulos devem ser 
suportados de forma sistemática e independente do tipo de dado para representar 
informações inexistentes e informações inaplicáveis. Deve-se sempre lembrar que 
valores nulos devem ter um tratamento diferente de “valores em branco”.
Regra 4: Regra do catálogo relacional ativo: Toda a estrutura do banco de 
dados (domínios, campos, tabelas, regras de integridade, índices etc.) deve estar 
disponível em tabelas (também referenciadas como catálogo). Sua manipulação 
é possível por meio de linguagens específicas (por exemplo, SQL). Essas tabelas 
são, geralmente, manipuladas pelo próprio sistema no momento em que o usuário 
efetua alterações na estrutura do banco de dados (por exemplo, a inclusão de um 
novo atributo em uma tabela).
Regra 5: Regras de atualização de alto nível: Essa regra diz que o usuário deve 
ter capacidade de manipular as informações do banco de dados em grupos 
de registros, ou seja, ser capaz de inserir, alterar e excluir vários registros ao 
mesmo tempo.
Regra 6: Regra de sublinguagem de dados abrangente: Pelo menos uma linguagem, 
com sintaxe bem definida, deve ser suportada, para que o usuário possa manipular 
a estrutura do banco de dados (como criação e alteração de tabelas), assim como 
extrair, inserir, atualizar ou excluir dados, definir restrições de integridade e de 
acesso e controle de transações (commit e rollback, por exemplo). Deve ser possível 
ainda a manipulação dos dados por meio de programas aplicativos.
TÓPICO 4 | MODELO RELACIONAL
107
Regra 7: Regra de independência física: Quando for necessária alguma modificação 
na forma como os dados estão armazenados fisicamente, nenhuma alteração deve ser 
necessária nas aplicações que fazem uso do banco de dados (isolamento), assim como 
devem permanecer inalterados os mecanismos de consulta e manipulação de dados 
utilizados pelos usuários finais.
Regra 8: Regra de independência lógica: Qualquer alteração efetuada na estrutura 
do banco de dados como inclusão ou exclusão de campos de uma tabela ou 
alteração no relacionamento entre tabelas não deve afetar o aplicativo utilizado ou 
ter um baixo impacto sobre o mesmo. Da mesma forma, o aplicativo somente deve 
manipular visões dessas tabelas.
Regra 9: Regra de atualização de visões: Uma vez que as visões dos dados de uma 
ou mais tabelas são, teoricamente, suscetíveis a atualizações, então um aplicativo 
que faz uso desses dados deve ser capaz de efetuar alterações, exclusões e inclusões 
neles. Essas atualizações, no entanto, devem ser repassadas automaticamente às 
tabelas originais. Ou seja, a atualização em uma visão deve refletir na atualização 
das tabelas representadas por essa visão.
Regra 10: Regra de independência de integridade: As várias formas de integridade 
de banco de dados (integridade de entidade, integridade referencial e restrições 
de integridade complementares) precisam ser estabelecidas dentro do catálogo 
do sistema ou dicionário de dados e serem totalmente independentes da lógica 
dos aplicativos. Assim, os aplicativos não devem ser afetados quando ocorrerem 
mudanças nas regras de restrições de integridade. 
Regra 11: Regra de independência de distribuição: Alguns SGBDs, notadamente 
os que seguem o padrão SQL, podem ser distribuídos em diversas plataformas/
equipamentos que se encontrem interligados em rede. Essa capacidade de 
distribuição não pode afetar a funcionalidade do sistema e dos aplicativos que fazem 
uso do banco de dados. Em resumo, as aplicações não são logicamente afetadas 
quando ocorrem mudanças geográficas dos dados (caso dos BDs distribuídos).
Regra 12: Regra não subversiva: O sistema deve ser capaz de impedir qualquer 
usuário ou programador de transgredir os mecanismos de segurança, regras de 
integridade do banco de dados e restrições, utilizando algum recurso de linguagem 
de baixo nível que eventualmente possam ser oferecidos pelo próprio sistema.
FONTE: Disponível em: <http://www.fernandoans.site50.net/curso/curso06/UFPE-
BancoDeDados.pdf>. Acesso em: 26 fev. 2013.
108
RESUMO DO TÓPICO 4
Neste tópico, você viu que: 
• O banco de dados relacional é composto por estruturas que permitem o 
armazenamento e resgate de informações, de modo estruturado, respeitando 
uma série de regras de funcionamento.
• As tabelas em um banco de dados relacionais têm sua origem no modelo 
entidade-relacionamento, onde elas eram chamadas de entidades. Os atributos 
de cada entidade irão compor campos em uma tabela.
• Os relacionamentos têm a mesma origem quando é criado o modelo entidade-
relacionamento além de criar as entidades e seus atributos, também é criado o 
relacionamento entre elas.
• A tabela é um objeto de grande importância para um banco de dados, pois é nela 
que serão armazenados os dados e futuramente disponibilizados aos usuários 
do sistema.
• A chave permite dar uma identificação a cada ocorrência de instância em uma 
tabela, e garantir que elas sejam únicas.
• Basicamente existem três tipos de chaves em um banco de dados relacional: 
chave primária, chave alternativa, chave estrangeira.
• A chave primária ou primary key (PK) é uma coluna ou conjunto de colunas que 
identificam unicamente um registro dentro de uma tabela, ela pode ser simples 
ou composta. Os campos que pertencem à chave primária são obrigatórios, não 
admitindo valor vazio ou NULL.
• A chave estrangeira ou foreign key (FK) é uma coluna ou conjunto de colunas 
que se referem necessariamente a uma chave primária de outra tabela ou 
dela mesma no caso de recursividade, estabelecendo um relacionamento 
entre as tabelas.
• A chave alternativa é criada quando mais de uma coluna ou grupo de coluna da 
tabela servem para identificar unicamente um registro.
109
AUTOATIVIDADE
1 Sabemos que uma tabela é um dos objetos mais importantes de um banco 
relacional. De que ela é composta?
2 A chave primária é formada por um ou vários campos de uma tabela, qual 
é o seu objetivo e o que ela garante?
3 A correta criação e aplicação da chave estrangeira é primordial para um 
bom funcionamento de um banco de dados relacional. Descreva o que você 
entendeu sobre a composição e funcionamento da chave estrangeira.
4 Quando se aplica a criação de uma chave alternativa?
110
111
TÓPICO 5
NORMALIZAÇÃO DE DADOS
UNIDADE 2
1 INTRODUÇÃO
Para que a construção de um projeto de banco de dados tenha sucesso é 
preciso que proporcione a integridade e consistência dos dados que irá armazenar. 
Para isso foi criado uma metodologia chamada normalização, que tem por objetivo 
possibilitar o desenvolvimento de um modelo de armazenamento consistente, 
além de um acesso eficiente e íntegro aos dados. 
O processo de normalizaçãoé composto por um conjunto de regras 
aplicadas sobre as tabelas (entidades) e seus relacionamentos, buscando evitar 
falhas no projeto de banco de dados, como redundâncias, dissociação de assuntos 
e informações relevantes ou pertinentes dentro de um domínio etc. Estas e outras 
falhas desta natureza são conhecidas por anomalias.
Segundo Machado (2009), com o processo de normalização, pode-se 
gradativamente substituir um conjunto de entidade e relacionamento por outro, 
que se apresenta “purificado” em relação às anomalias de atualização (inclusão, 
alteração e exclusão).
Estas anomalias se não tratadas podem causar certos problemas, tais 
como grupos repetitivos de dados, dependências parciais em relação a uma 
chave concatenada, redundância de dados desnecessária, perdas acidentais de 
informações, dificuldade na representação de fatos da realidade observada e 
dependências transitivas entre atributos.
O que é normalização?
Em 1970, o Professor Dr. Edgar F. Codd, analista da IBM, desenvolveu 
uma série de estudos sobre como tratar os dados, a fim de eliminar as anomalias 
de atualização e as suas consequências desagradáveis para as organizações. 
Deste esforço surgiram duas inovações que revolucionaram a maneira de 
tratar os dados. A primeira destas inovações foi o Modelo Relacional, no qual 
se basearam os Sistemas Gerenciadores de Base de Dados (SGBD) da metade 
da década de 1980 e início de 1990. A segunda inovação foi o processo de 
Normalização, sendo que ambas estão intimamente relacionadas.
112
UNIDADE 2 | MODELAGEM DE DADOS
O processo de normalização como foi proposto por Codd sujeita um 
esquema de relação a uma série de testes para certificar-se de que ele satisfaça 
certa forma normal. Na verdade, a normalização de dados pode ser vista como 
o processo de análise de determinados esquemas de relações com base em suas 
dependências funcionais e chaves primárias para alcançar as propriedades 
desejáveis de: (1) minimização de redundâncias e (2) minimização de 
anomalias de inserção, exclusão e alteração. Nesse processo, os esquemas de 
relações insatisfatórios, que não alcançam certas condições (no caso, os testes 
de forma normal) são decompostos em esquemas de relações menores que 
passam nos testes e, consequentemente, possuem as propriedades desejadas. 
Em outras palavras, quando uma tabela não atende ao critério de uma forma 
normal, sua estrutura é redesenhada através da projeção (jogar para fora) 
de alguns atributos, levando a construção de novas tabelas contendo algum 
atributo que possa refazer o conteúdo da tabela original através da junção 
(reunir) das tabelas resultantes.
O processo de normalização tem as seguintes funções:
• Analisar tabelas e organizá-las de forma que a sua estrutura seja simples, 
relacional e estável, para que o gerenciamento delas possa ser também 
simples, eficiente e seguro.
• Evitar a perda e a repetição da informação.
• Conseguir uma forma de representação adequada para o que se deseja 
armazenar.
• Oferecer mecanismos para analisar o projeto do BD (identificação de erros e 
possibilidades de melhorias) e oferecer métodos para corrigir problemas que, 
por ventura, sejam encontrados.
E, com essas funções, pretende-se alcançar os seguintes objetivos:
• Garantir a integridade dos dados, evitando que informações sem sentido 
sejam inseridas no banco de dados.
• Organizar e dividir as tabelas da forma mais eficiente possível, diminuindo 
a redundância e permitindo a evolução do banco de dados com o mínimo de 
efeito colateral.
Inicialmente Codd propôs três formas normais que ele chamou de 
primeira (1FN), segunda (2FN) e terceira (3FN) forma normal. Uma definição 
mais forte da 3FN (chamada forma normal BOYCE-CODD - FNBC ou BCNF) 
foi depois proposta por Boyce e Codd. Todas essas formas normais são baseadas 
nas dependências funcionais entre os atributos de uma relação. Posteriormente, 
uma quarta (4FN) e quinta (5FN) forma normal foram propostas.
TÓPICO 5 | NORMALIZAÇÃO DE DADOS
113
As formas normais são aplicadas para evitar redundância de dados, 
inconsistências e anomalias de atualização. Isso porque, redundância de dados 
é um fato gerador de inconsistências. Já as anomalias de atualização criam 
dificuldades operacionais para manutenção do banco de dados, quebrando a 
confiabilidade no dado ou ferindo a integridade dos dados.
Uma forma normal engloba todas as outras anteriores, ou seja, a hierarquia 
entre as formas normais indica que uma tabela só pode estar numa forma mais 
avançada se, além de atender as condições necessárias, já estiver na forma 
normal imediatamente anterior. 
Por exemplo, para que uma tabela esteja na 2FN, ela obrigatoriamente 
deve estar na 1FN e assim por diante. 
Na prática, o mais comum é normalizar relações apenas até a 3FN. Isso 
porque as três primeiras formas normais (1FN, 2FN e 3FN) atendem à maioria 
dos casos denormalização e já são suficientes para organizar as tabelas de um BD.
FONTE: Siebra (2010)
2 ANOMALIAS DE ATUALIZAÇÃO
A entidade que não for devidamente normalizada com base nas formas 
normais brevemente vista anteriormente, corre o risco de sofrerem com algumas 
anomalias, é justamente esta a situação que estaremos vendo a seguir.
Segundo Siebra (2010), a mistura de atributos de várias entidades pode 
gerar problemas conhecidos como anomalias de atualização, tais anomalias podem 
causar uma série de ocorrências tais como:
• Grupos repetitivos de dados.
• Dependências parciais de chave.
• Redundâncias desnecessárias de dados.
• Perdas acidentais de informações.
• Dificuldade de representação de fatos da realidade (modelos).
• Dependências transitivas entre atributos.
• As anomalias de atualização podem ser de três tipos:
• Anomalias de inserção – Causam a repetição desnecessária de dados 
(redundância).
• Anomalias de alteração – Levam as inconsistências e aumentam o esforço 
para a atualização dos dados.
• Anomalias de exclusão – Causam a perda de informações associadas a um 
dado registro.
114
UNIDADE 2 | MODELAGEM DE DADOS
Para exemplificar, Siebra (2010) usa uma suposição onde é criada uma 
relação de empregados de uma empresa.
FIGURA 49 – RELAÇÃO EMPREGADO
FONTE: Siebra (2010)
Ao criarmos a relação desta forma, é possível observar as seguintes 
anomalias de atualização:
• Anomalia de Inserção: Ocorre quando vamos inserir uma nova ocorrência 
(Registro) na relação de empregado, será necessário incluir também os valores 
para os atributos de departamento em que o empregado trabalha, ou deixar null 
os campos referentes ao departamento. Além disso, deve-se tomar cuidado ao 
inserir dados de um departamento que já exista na tabela, pois a possibilidade 
de registrar um mesmo código de departamento com um nome diferente, desta 
forma criando uma inconsistência na base. Outra questão é a dificuldade para 
inserir um novo departamento que ainda não tivesse empregados registrados, 
neste caso a única maneira é colocar valores null nos atributos referente aos 
empregados. Essa alternativa gera um problema, pois o CPF do empregado faz 
parte da chave primária da nossa relação de empregados, onde cada registro 
deve representar um empregado e não um departamento.
• Anomalia de Alteração: No caso de necessidade de alterar os atributos de um 
departamento qualquer, esse valor deve ser alterado em todas as ocorrências 
referente aos empregados que trabalhassem no departamento em questão. Caso 
contrário, novamente será gerada uma inconsistência na nossa.
• Anomalia de Remoção: No caso de remoção de uma ocorrência de empregado, se 
esta for a última ocorrência de um departamento, a informação do departamento 
será perdida.
Para evitar tais anomalias, podemos utilizar as técnicas de normalização 
(formas normais) criadas por Codd.
TÓPICO 5 | NORMALIZAÇÃO DE DADOS
115
3 APLICAÇÃO DAS FORMAS NORMALIZAÇÃO
O objetivo da disciplina não é se aprofundar em cada uma das formas 
normais, porém vamos ver como é o processo de aplicação conforme proposto por 
Machado (2009).• Entidade ou documento não normalizado, apresentando grupos repetitivos e 
certas anomalias de atualização.
→	Aplicação da 1FN
→	Decompor a entidade em uma ou mais entidades, sem grupos repetitivos.
→	Destacar um ou mais atributos como chave primária da(s) nova(s) 
entidades(s), e ele será concatenado com a chave primária da entidade 
original.
→	Estabelecer o relacionamento e a cardinalidade entre a(s) entidade(s) 
gerada(s) e a entidade geradora.
→	Verificar a questão da variação temporal de certos atributos e criar 
relacionamento 1:N entre a entidade original e a entidade criada por 
questões de histórico.
• Entidades na 1FN
→	Aplicação da 2FN
→	Para entidades que contenham chaves primárias concatenadas, destacar 
os atributos que tenham dependência parcial em relação à chave primária 
concatenada.
→	 Criar uma entidade que conterá esses atributos, e que terá como chave 
primária o(s) atributo(s) do(s) qual (quais) se tenha dependência parcial.
→	 Serão criadas tantas entidades quantos forem os atributos da chave 
primária concatenada, que gerem dependência parcial.
→	 Estabelecer o relacionamento e a cardinalidade entre a(s) nova(s) 
entidades(s) gerada(s) e a entidade geradora.
• Entidades na 2FN
→	 Aplicação da 3FN
→	Verificar se existem atributos que sejam dependentes transitivos de outros 
que não pertencem à chave primária, sendo ela concatenada ou não, bem 
como atributos que sejam dependentes de cálculo realizado a partir de 
outros atributos.
116
UNIDADE 2 | MODELAGEM DE DADOS
→	Destacar os atributos com dependência transitiva, gerando uma nova 
entidade com esse atributo e cuja chave primária é o atributo que originou 
a dependência.
→	Eliminar os atributos obtidos através de cálculos realizados a partir de 
outros atributos.
• Entidades na 3FN
→	Aplicação da FNBC
→	 Só aplicável em entidades que possuam chaves primárias e candidatas 
concatenadas.
→ Verificar se alguma chave candidata concatenada é um determinante, e em 
caso afirmativo, criar uma entidade com os que dependam funcionalmente 
desse determinante e cuja chave primária é o próprio determinante.
• Entidades na FNBC
→ Aplicação do 4FN
→ Para se normalizar em 4FN, a entidade (obrigatoriamente) deve estar na 
3FN.
→ Verificar se a entidade possui atributos que não sejam participantes da 
chave primária e que sejam multivalorados e independentes em relação a 
um mesmo valor da chave primária.
→ Retirar esses atributos não chaves e multivalorados, criando entidades 
individuais para cada um deles, herdando a chave primária da entidade 
desmembrada.
• Entidade na 4FN
→ Aplicação da 5FN
→ Aplicada em elementos que estejam na 4FN.
→ A ocorrência desse tipo de forma normal está vinculada aos relacionamentos 
múltiplos (ternários etc.) ou entidades que possuam chave primária 
concatenada com três ou mais atributos.
→ Verificar se é possível reconstruir o conteúdo do elemento original a partir 
de elementos decompostos desta.
→ Se não for possível, o elemento observado não está na 5FN, caso contrário, 
os elementos decompostos representam um elemento na 5FN.
TÓPICO 5 | NORMALIZAÇÃO DE DADOS
117
• Entidades na Forma Normal Final
O processo de normalização leva ao refinamento das entidades, retirando 
delas grande parte das redundâncias e inconsistências. Naturalmente, para que 
haja uma associação entre entidades é preciso que ocorram redundâncias mínimas 
de atributos que evidenciam esses relacionamentos. Sem as redundâncias não 
haveria relacionamento entre entidades.
4 FERRAMENTAS PARA MODELAGEM DE DADOS
Para desenhar o DER e até dar apoio a fases posteriores do projeto de banco 
de dados, como a conversão do MER. Para o modelo relacional existem diversas 
ferramentas de modelagem de dados. 
Na sequência será feito uma breve apresentação de três ferramentas de 
modelagem de dados (DBDesigner, CA Erwin, PowerDesigner).
4.1 DBDESIGNER
O DBDesigner é uma ferramenta gratuita para projeto de banco de 
dados que integra a modelagem, projeto, implementação e manutenção em um 
mesmo ambiente. 
Ela é desenvolvida pela empresa Fabulous Force Database Tools, atualmente, 
encontra-se na versão 4 e está disponível para download em: <http://fabforce.net/
dbdesigner4/>.
118
UNIDADE 2 | MODELAGEM DE DADOS
FIGURA 50 - INTERFACE DB DESIGNER 4
FONTE: Disponível em: <http://fabforce.net/dbdesigner4/screenshot_image.
php?screenshot=dbd4_ss_simplemodel.png>. Acesso em: 26 fev. 2013.
Este programa é útil para, ao invés de criarmos uma base de dados 
através de códigos, criarmos uma base de dados visualmente, com a definição 
de tabelas, tipos de dados e relações entre tabelas. A partir do resultado final do 
desenho de uma base de dados, termos acesso ao código que podemos utilizar 
para a criação da nossa base de dados. O DBDesigner é direcionado para o 
desenvolvimento de banco de dados com o SGBD MySQL, mas também oferece 
suporte para o Ms-SQL e o Oracle.
4.2 ERWIN
Esta é uma das ferramentas mais utilizada no mercado, conforme informado 
no site do fabricante (http://erwin.com/). Através desta ferramenta, o desenvolvedor 
de um sistema de informação pode especificar os dados envolvidos, as suas 
relações e os requisitos de análise.
TÓPICO 5 | NORMALIZAÇÃO DE DADOS
119
A ferramenta permite desde a criação e manutenção das bases de dados, até 
o uso de mecanismos de sincronização de dados necessários. Além disso, oferece 
recursos para realizar o processo inverso (Engenharia reversa4). O ERwin gera 
modelos para todos os principais bancos de dados atuais e pode ser integrado para 
ajudar no gerenciamento dos mesmos (para atualização das bases de dados).
A notação utilizada pelo ERwin não descende da notação original de Peter 
Chen, ela implementa diagramas parecidos com os utilizados na Engenharia de 
Software. A interface da ferramenta pode ser visualizada a seguir.
FIGURA 51 - ERWIN
FONTE: Os autores
4.3 POWERDESIGNER
É considerada juntamente com o ERwin, uma das ferramentas mais 
utilizadas e completas do mercado. Gera modelo conceitual, converte para modelo 
lógico (automaticamente, sem intervenção do usuário) e trabalha com todos os 
principais bancos de dados disponíveis empregando inclusive, técnicas de 
engenharia reversa e de integridade referencial.
120
UNIDADE 2 | MODELAGEM DE DADOS
Apesar de ser uma ferramenta paga, ela tem uma versão demo disponível 
para avaliação por 15 dias no site: <http://www.sybase.com.br/products/
modelingdevelopment/powerdesignerou>, <http://www.sybase.com>. A interface 
da ferramenta pode ser visualizada a seguir:
FIGURA 52 - POWERDESIGNER
FONTE: Disponível em: <http://pt.softpicks.net/software/Produtividade/Gerenciamento-de-
Projeto/Sybase-PowerDesigner_pt-220884.htm>. Acesso em: 26 fev. 2013.
121
RESUMO DO TÓPICO 5
Neste tópico, você viu que: 
• O processo de normalização é composto por um conjunto de regras aplicadas 
sobre as tabelas (entidades) e seus relacionamentos, buscando evitar falhas 
no projeto de banco de dados, como redundâncias, dissociação de assuntos e 
informações relevantes ou pertinentes dentro de um domínio etc.
• O processo de normalização pode-se, gradativamente, substituir um conjunto de 
entidade e relacionamento por outro, que se apresenta “purificado” em relação 
às anomalias de atualização (inclusão, alteração e exclusão).
• A entidade que não for devidamente normalizada com base nas formas normais 
corre o risco de sofrer algumas anomalias.
122
1 O que você entendeu sobre o processo de normalização de dados?
AUTOATIVIDADE
123
UNIDADE 3
SQL
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
Esta unidade tem por objetivos:
• fixar de forma prática os conteúdos apresentados nas unidades anteriores;
• introduzir a linguagem SQL para criação de bancos de dados;
• apresentar perspectivas sobre o uso desta tecnologia.
Esta unidade está dividida em três tópicos e em cada um deles, você en-
contrará atividades que proporcionarão a compreensão dos conteúdos 
apresentados.
TÓPICO 1 – INTRODUÇÃO À LINGUAGEMSQL
TÓPICO 2 – MANUTENÇÃO DOS DADOS 
TÓPICO 3 – OUTRAS ESTRUTURAS DE DADOS
124
125
TÓPICO 1
INTRODUÇÃO À LINGUAGEM SQL
UNIDADE 3
1 INTRODUÇÃO
“Transportai um punhado de terra todos os dias e fareis uma montanha”. 
(Confúcio)
Já estamos na Unidade 3, a última unidade deste Caderno de 
Estudos. Muita coisa aconteceu até aqui fazendo com que adquiríssemos 
mais conhecimento. Apenas para fins de revisão e clareza, vamos relembrar 
rapidamente o que foi visto.
Na Unidade 1 tivemos uma introdução do que é e como funciona o mundo 
dos bancos de dados. Conceitos e teorias que vão desde as primeiras formas de 
armazenamento até o estado atual da tecnologia, com SGBDs modernos e eficazes. 
Vimos que existem vários paradigmas de gerenciamento e adotamos para este 
livro o banco de dados relacional. No final da unidade mostramos os principais 
bancos relacionais existentes no mercado. 
Ao estudarmos a Unidade 2, evoluímos nossa forma de pensar sobre 
o modelo de dados relacional. Juntamente com o conhecimento adquirido na 
unidade anterior, conseguimos compreender como nascem as entidades (tabelas) 
e como elas podem se relacionar. Em resumo, pode-se dizer que tivemos uma boa 
base para projetar um banco de dados.
Agora estamos na Unidade 3. Chegou a hora de criarmos um banco de 
verdade. Vamos ver na prática como “nascem” as tabelas e como elas são populadas 
com dados. Como complemento, vamos explorar algumas estruturas que fazem 
parte do cotidiano desta área, como procedures, functions entre outras.
Será utilizado nos exemplos o banco de dados ORACLE, um dos principais 
bancos da atualidade. Bons estudos!
UNIDADE 3 | SQL
126
A Structured Query Language ou simplesmente SQL é uma linguagem 
utilizada para construirmos e manipularmos bancos de dados relacionais. É através 
dela que modelos de entidade-relacionamento viram realidade. Ela fornece uma 
série de comandos para criarmos estruturas e posteriormente recuperarmos dados.
Seguindo o caminho do aprendizado, vamos procurar entender como a SQL 
surgiu. Silberschatz, Korth e Sudarshan (2006) fazem um relato sobre a sua criação.
A IBM desenvolveu a versão original da SQL, originalmente chamada 
Sequel, como parte do projeto R no início da década de 1970. A linguagem 
Sequel evoluiu desde então, e seu nome mudou para SQL (Structured 
Query Language). Muitos produtos agora aceitam a linguagem SQL. A 
SQL se estabeleceu claramente como a linguagem padrão de banco de 
dados relacional.
Em 1986, o American National Standards Institute (ANSI) e a International 
Organization for Standardization (ISO) publicaram um padrão SQL, 
chamado SQL-86. Em 1989, o ANSI publicou um padrão estendido 
para a linguagem: a SQL-89. A próxima versão do padrão foi a 
SQL-92, seguida da SQL-1999; a versão mais recente é a SQL-2003. 
(SILBERSCHATZ, KORTH E SUDARSHAN, 2006, p. 3).
Como pôde ser visto na citação acima, vários padrões da linguagem SQL 
foram criados desde que ela nasceu. Isso fez com que fabricantes de bancos de 
dados relacionais escolhessem qual padrão gostariam de seguir. Sendo assim, 
a sintaxe, comandos e outras particularidades podem variar de um banco para 
o outro. Isso vem a ser um desafio para programadores que desejam fazer seus 
sistemas rodarem em bancos de fabricantes diferentes. Inclusive, alguns bancos de 
dados tem o seu próprio padrão de SQL que normalmente é derivado dos padrões 
definidos pela ANSI e ISO.
Pode parecer complicado em um primeiro momento assimilar algumas 
das informações passadas acima. No momento não se preocupe com isso, porque 
posteriormente vários assuntos ficarão mais claros. Por hora, entenda que SQL 
é a linguagem utilizada para trabalhar com bancos de dados relacionais e que 
cada banco pode seguir um padrão SQL específico. O que torna esse aspecto 
um pouco menos custoso é o fato que ambos os padrões derivam de um padrão 
definido por um órgão competente.
2 O QUE É SQL
3 MODELO DE DADOS DESTA UNIDADE
Para iniciar a parte prática deste Caderno de Estudos é essencial que seja 
definido um modelo de dados ou modelo entidade-relacionamento (MER). Na 
Unidade 2, você aprendeu regras, formas normais e uma série de boas práticas 
para modelar um banco de dados com qualidade. Não iremos revisar esses tópicos, 
apenas vamos tomar como base o modelo de dados definido aqui.
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
127
O nosso minimundo ou universo do discurso é um consultório médico, 
onde atuam quatro médicos. Cada um tem as suas especialidades e basicamente 
atendem a pacientes que agendam horário para as consultas. Levando em 
consideração que o foco desta unidade é o aprendizado de SQL, o modelo de 
dados será extremamente simples, tratando apenas o agendamento de consultas 
e deixando de lado outras questões, como por exemplo, pagamento de consultas, 
fluxo de caixa etc.
Segue figura com o modelo de dados que será utilizado nesta unidade.
FIGURA 53 – MODELO ENTIDADE-RELACIONAMENTO QUE SERÁ UTILIZADO NESTE CADERNO 
DE ESTUDOS
FONTE: Os autores
4 CRIANDO O BANCO DE DADOS
Enfim chegou o grande momento. Finalmente vamos criar nosso banco 
de dados seguindo o modelo que foi definido anteriormente. Vale a pena 
lembrar que os comandos apresentados neste Caderno de Estudos foram 
testados em uma base de dados Oracle 11g Express Edition. Esta versão é gratuita 
e pode ser baixada no endereço <http://www.oracle.com/technology/products/
database/xe>. É necessário apenas que se faça um cadastro no site e em seguida 
o download será liberado.
É interessante que você efetue o download e instale o banco de dados Oracle 
na sua máquina. Isso facilitará muito a sua aprendizagem, podendo testar todos 
os comandos apresentados. Não é nosso objetivo tratar questões relacionadas à 
instalação, porém o processo é simples, necessitando apenas que se deixem as opções 
default selecionadas e avance até o fim. Durante a instalação será solicitado para 
definir uma senha para o usuário system. Defina-a e memorize-a para uso posterior.
UNIDADE 3 | SQL
128
Por se tratar de um sistema robusto, a instalação do Oracle pode deixar o seu 
computador com uma performance um pouco inferior. Caso tenha alguma dúvida procure a 
ajuda de um profissional.
ATENCAO
4.1 CONEXÃO AO BANCO DE DADOS
Para realizarmos qualquer trabalho com um banco de dados é preciso fazer 
uma conexão ao mesmo. Para tal, é necessário um programa cliente que irá tratar 
todos os comandos recebidos, enviar ao banco e obter sua resposta. A própria 
Oracle fornece o SQL Plus que é instalado na máquina no momento da instalação 
do banco de dados.
Primeiramente, abra o SQL Plus. A localização deste programa pode variar 
de um sistema operacional para o outro. Procure pelo item “Oracle Database 11g 
Express Edition” -> “Executar Linha de Comandos SQL”. A figura a seguir mostra 
a localização do atalho utilizando o sistema operacional Windows XP.
FIGURA 54 – LOCALIZAÇÃO DO ATALHO DO SQL PLUS NO WINDOWS XP
FONTE: Os autores
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
129
Dando sequência no procedimento, digite o comando conn. Será solicitado 
que se informe um usuário e uma senha. O usuário poderá ser o system e a senha 
será a que você definiu durante a instalação.
A figura a seguir ilustra esse processo.
FIGURA 55 – CONEXÃO COM O BANCO DE DADOS ORACLE
FONTE: Os autores
O Oracle e a maioria dos bancos de dados fornece uma forma de organização 
para usuários e uma definição do que eles podem acessar. Não é nosso objetivo 
explorar a mesma, por isso vamos continuar utilizando o usuário system.
4.2 CRIAÇÃO DE TABELAS
Para criarmos as tabelas, é necessário primeiramente entender sobre os 
tipos de dados que os campos dela podem ter. O quadro alista os principais tipos 
de dados de um banco Oracle.
UNIDADE 3 | SQL
130
FONTE: Morelli (2000 p. 12)
A seguir, vamos criar as tabelas do nosso banco de dados de acordo com 
o modelo proposto para esta unidade. Inicialmente criaremos apenas as tabelas e 
sua chave primária, deixando os relacionamentos paraum segundo momento.
O comando para criação de tabelas é o create table. Sua sintaxe encontra-
se a seguir. O padrão adotado neste Caderno de Estudos define que os itens dentro 
de colchetes ([ ]) são opcionais e sua utilização depende da necessidade do usuário.
create table nome_da_tabela (
 coluna1 tipo_de_dado,
 ...
 ColunaN tipo_de_dado,
 primary key (nome_coluna))
Vamos criar a tabela paciente seguindo a sintaxe apresentada acima. 
Tipo Descrição
char (n) Cadeia de caracteres de tamanho fixo n. O default é 1 e o máximo, 255.
varchar2(n)
Cadeia de caracteres de tamanho variável com o 
máximo de n e pode ter o valor de até 4.000. Para que 
duas variáveis desse tipo sejam consideradas iguais, 
elas devem possuir, além do mesmo conteúdo, o mesmo 
tamanho.
long
Cadeia de caracteres de tamanho variável com o 
máximo de 2 gigabytes. Só pode existir um campo desse 
tipo por tabela.
raw e long raw
Equivalente ao varchar2 e long, respectivamente, mas 
utilizado para armazenar dados binários que não são 
interpretados pelo Oracle, como, por exemplo, sons, 
imagens etc. Para agilizar o acesso, costuma-se quebrar 
uma tabela em duas quando houver um campo desse 
tipo: a primeira teria os campos originais e a segunda, a 
chave e o campo “grande”. As duas seriam relacionadas 
em 1:1.
Limite para o tipo raw: 2.000 bytes.
number(p, e)
Valores numéricos em que p indica a precisão (máximo 
de 38) e indica a escala (número de casas decimais) que 
varia de -84 a + 127. Por exemplo, number(5,2) especifica 
um número na faixa entre -999,99 e +999,99.
date Armazena data e hora, incluindo século, ano, mês, dia, hora, minuto e segundo. Ocupam 7 bytes.
QUADRO 3 – TIPOS DE DADOS PARA CAMPOS DE TABELAS DO ORACLE
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
131
create table paciente (
 nr_sequencia number(6),
 nm_paciente varchar2(100),
 cpf_paciente varchar2(11),
 fone_paciente varchar2(15),
 primary key(nr_sequencia))
 
Uma forma de trabalhar com o SQL Plus para inserir comandos é através 
da utilização de um editor de textos. Para utilizar um, digite o comando ed que o 
bloco de notas ou o seu editor padrão se abrirá. Caso seja apresentada a mensagem 
“Nada para salvar”, digite qualquer comando com um ponto e vírgula no final. 
Depois de receber outro erro, digite novamente ed. A figura a seguir demonstra o 
funcionamento do processo.
FIGURA 56 – UTILIZANDO SEU EDITOR DE TEXTOS PARA COMANDOS SQL
FONTE: Os autores
Agora substitua o conteúdo do editor de textos pelo comando create da 
tabela paciente, deixando apenas a barra (“/”) no final do arquivo. Salve o conteúdo 
e feche o editor. Tecle barra (“/”) + enter que o comando será executado. Veja na 
figura a seguir, o resultado desses passos.
UNIDADE 3 | SQL
132
FIGURA 57 – COMANDO DO EDITOR SENDO EXECUTADO
FONTE: Os autores
A partir deste momento, a tabela paciente existe no nosso banco de dados. 
Poderíamos ter trabalhado diretamente na tela do SQL Plus sem utilizar o Notepad. 
É só digitar todo o comando SQL e no final colocar um ponto e vírgula (“;”).
IMPORTANT
E
Para verificar se tudo ocorreu conforme o planejado, um comando muito 
útil é o desc. Com ele podemos ver a estrutura dos objetos do banco. Sua sintaxe é:
desc nome_do_objeto;
Vamos testá-lo para verificar a estrutura da tabela paciente.
desc paciente;
O resultado pode ser visto na figura a seguir.
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
133
FIGURA 58 – RESULTADO DO COMANDO DESC
FONTE: Os autores
Note que um detalhamento dos campos da tabela é apresentado conforme 
definimos com o comando create table. Por enquanto não se preocupe com a 
coluna Nulo?. Ela será vista mais à frente.
Já que aprendemos a criar uma tabela, vamos ver agora o que temos que 
fazer para excluí-la. O comando é extremamente simples e muito poderoso. É o 
drop table.
drop table nome_da_tabela;
Veja na figura a seguir o que acontece quando executamos um drop 
table da tabela paciente e em seguida tentamos visualizar a sua estrutura com 
um comando desc.
FIGURA 59 – UTILIZANDO O COMANDO DROP TABLE
FONTE: Os autores
UNIDADE 3 | SQL
134
Como pôde ser visto, a tabela paciente não existe mais na nossa base de 
dados.
O comando drop table elimina completamente a tabela e os dados existentes 
nela. Depois da execução não é mais possível desfazer a ação que ele executou.
ATENCAO
Já que excluímos a tabela paciente vamos recriá-la só que desta vez sem 
o uso do editor de textos. Digite o comando create table da tabela paciente e para 
executá-lo coloque um ponto e vírgula (“;”) no final. Em seguida, procure ver a 
estrutura da tabela criada com o comando desc. A figura seguinte ilustra esse 
processo.
FIGURA 60 – CREATE TABLE DA TABELA PACIENTE SEM EDITOR DE TEXTO
FONTE: Os autores
Perfeito, agora temos a tabela paciente novamente criada! A seguir temos 
todos os comandos para criação das outras tabelas que compõem o nosso modelo 
de dados.
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
135
A partir deste momento vamos evitar o uso de imagens para demonstrar o 
funcionamento dos scripts. Assuma que tudo o que deve ser executado será através do SQL 
Plus aplicando o que foi ensinado sobre ele até o momento. Fique atento para o seguinte 
detalhe: Se você estiver utilizando um editor de texto, não coloque o ponto e vírgula no final 
do comando.
IMPORTANT
E
create table consulta (
 nr_sequencia number(10),
 nr_seq_paciente number(6),
 nr_seq_medico number(4),
 dt_hora_inicio date,
	 dt_hora_fim	date,
 ds_observacao varchar2(1000),
 primary key (nr_sequencia);
create table medico (
 nr_sequencia number(4),
 nm_medico varchar2(100),
 crm_medico varchar2(10),
 cpf_medico varchar2(11),
 fone_medico varchar2(15),
 primary key (nr_sequencia));
Se você deseja adicionar algum campo em alguma das tabelas segue um 
comando que cria o campo dt_nascimento na tabela paciente.
alter table paciente add (dt_nascimento date);
Para apagar a mesma coluna, use o seguinte comando.
alter table paciente drop column dt_nascimento;
Depois de efetuar alterações nas estruturas das tabelas, verifique se elas 
foram aplicadas conforme o esperado através da utilização do comando desc.
UNIDADE 3 | SQL
136
5 RESTRIÇÕES
Conforme você estudou na Unidade 2, o modelo relacional exige que sejam 
criadas várias integridades para garantir total confiança nos dados armazenados. 
Essa criação de integridade ou restrição é suportada pelo padrão SQL e por vários 
bancos de dados. Um sinônimo para restrição é a palavra constraint que inclusive 
chega a ser utilizada no SQL para criação de algumas restrições.
Morelli (2000, p. 12) nos dá uma definição para restrição ou o termo 
popularmente conhecido como constraint.
Um constraint ou restrição apresenta um mecanismo capaz de 
implementar controles que garantam a consistência dos dados 
(integridade de dados e referencial). Pode ser definido tanto em nível de 
coluna (afeta apenas um campo) como em nível de tabela (afeta todos 
os campos).
De uma forma resumida, podemos dizer que restrição é tudo o que faz 
alguma validação ou checagem em um conjunto de dados. 
5.1 CHAVE PRIMÁRIA E RESTRIÇÃO NOT NULL
Quando criamos as tabelas do nosso modelo de dados, a única restrição 
que programamos foi a de chave primária (primary key). Sinalizamos ao Oracle os 
campos que fazem parte da chave primária e ele entende que os valores desses 
campos não podem se repetir (pois identificam os registros da tabela), e também 
não podem ser nulos. Por isso, se você usar o comando desc nas tabelas verá que 
algumas linhas na coluna Nulo? aparecem com o valor NOT NULL.
Quando colocamos uma coluna para fazer parte da chave primária, 
automaticamente ela deverá ser NOT NULL, ou seja, não é permitido que ela não 
tenha valor. Veja a seguir o resultado do comando desc na tabela consulta.
 Nome Nulo? Tipo
 -------------------------------- -------- ----------
 NR_SEQUENCIA NOT NULL NUMBER(10)
 NR_SEQ_PACIENTE NUMBER(6)
 NR_SEQ_MEDICONUMBER(4)
 DT_HORA_INICIO DATE
 DT_HORA_FIM DATE
 DS_OBSERVACAO VARCHAR2(1000)
 
O campo nr_sequencia faz parte da chave primária, por isso, 
automaticamente quando criamos a restrição primary key (nr_sequencia), 
o Oracle colocou ele como NOT NULL.
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
137
Na tabela consulta só existe um campo que pode ser NULL: o DS_
OBSERVACAO. Todos os demais deverão ser NOT NULL. Para incluirmos essa 
restrição precisamos utilizar o comando alter table. Inicialmente vamos 
aplicar a restrição apenas à coluna NR_SEQ_PACIENTE.
alter table consulta modify (nr_seq_paciente NOT NULL);
Novamente vamos ver a estrutura da tabela consulta com o comando desc:
Nome Nulo? Tipo
 ------------------------------- -------- -------------
 NR_SEQUENCIA NOT NULL NUMBER(10)
 NR_SEQ_PACIENTE NOT NULL NUMBER(6)
 NR_SEQ_MEDICO NUMBER(4)
 DT_HORA_INICIO DATE
 DT_HORA_FIM DATE
 DS_OBSERVACAO VARCHAR2(1000)
Agora o campo NR_SEQ_PACIENTE não aceita mais valores nulos. Vale 
a pena lembrar que também é possível incluir esta restrição ao criar a tabela, no 
comando create table. Segue o exemplo para a tabela consulta.
create table consulta (
 nr_sequencia number(10) NOT NULL,
 nr_seq_paciente number(6) NOT NULL,
 nr_seq_medico number(4) NOT NULL,
 dt_hora_inicio date NOT NULL,
	 dt_hora_fim	date	NOT NULL,
 ds_observacao varchar2(1000),
 primary key (nr_sequencia);
Como nossas tabelas já estão criadas, vamos utilizar o alter table para 
programar as restrições NOT NULL. Seguem os comandos para todas as tabelas.
alter table consulta modify (
 nr_seq_medico NOT NULL,
 dt_hora_inicio NOT NULL,
	 dt_hora_fim	NOT	NULL);
alter table paciente modify (
 nm_paciente NOT NULL,
 cpf_paciente NOT NULL);
alter table medico modify (
 nm_medico NOT NULL,
 crm_medico NOT NULL,
 cpf_medico NOT NULL);
UNIDADE 3 | SQL
138
Agora temos todas as restrições NOT NULL programadas na nossa base. 
Lembrando que para fazer um campo NOT NULL aceitar valores nulos é simples. 
Basta fazer o alter table com uma restrição NULL conforme exemplo que 
segue:
alter table medico modify (
 nm_medico NULL);
Se você colocou o campo nm_medico da tabela médico para aceitar valores 
nulos (conforme descrito no último exemplo), modifique novamente para ele não aceitar nulos.
ATENCAO
5.2 CHAVE ESTRANGEIRA
A próxima restrição que vamos abordar é a de integridade referencial 
também conhecida como chave estrangeira ou foreign key. Você já estudou sobre 
esse tipo de restrição na Unidade 2, por isso vamos para a parte prática através do 
comando alter table. Veja no exemplo a seguir a criação da chave estrangeira 
entre as tabelas consulta e paciente.
alter table consulta add constraint consulta_paciente_fk 
 foreign key (nr_seq_paciente) 
 references paciente(nr_sequencia);
O comando acima criou uma restrição de chave estrangeira com o nome 
consulta_paciente_fk que tem como regra que o campo nr_seq_paciente da tabela 
consulta só pode conter valores que estão no campo da chave primária da tabela 
paciente (nr_sequencia).
Para excluir uma integridade referencial também usamos o comando 
alter table só que desta vez com o drop constraint. Segue um exemplo:
alter table consulta drop constraint consulta_paciente_
fk;
A seguir está o script para a criação de todas as chaves estrangeiras 
do nosso banco de dados (inclusive a constraint consulta_paciente_fk que 
acabamos de apagar).
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
139
alter table consulta add constraint consulta_paciente_fk 
foreign key (nr_seq_paciente) 
 references paciente(nr_sequencia)
alter table consulta add constraint 
 consulta_medico_fk 
 foreign key (nr_seq_medico) 
 references medico(nr_sequencia)
5.3 CHAVE ÚNICA
Em seções anteriores vimos como funciona a criação de uma chave primária. 
Percebemos também que os campos que a compõe não podem ter repetição de 
valores e também não podem ser nulos. A chave única ou Unique Key tem os 
mesmos princípios, porém com uma única diferença: os campos que a compõem 
podem ser nulos.
Para resumir, os campos que fazem parte de uma Unique Key não podem 
ter valores repetidos no seu conteúdo, mas aceitam valores nulos. São úteis em 
vários casos. No nosso banco de dados seria interessante uma restrição desse 
tipo na tabela paciente no campo cpf_paciente, para evitar que um paciente seja 
cadastrado mais de uma vez. Segue o comando da criação desta integridade.
alter table paciente add constraint 
 paciente_cpf_uk 
 unique (cpf_paciente);
Se caso desejássemos excluir esta integridade, poderíamos fazer com o 
seguinte comando:
alter table paciente 
 drop constraint paciente_cpf_uk;
Precisamos criar mais duas integridades deste tipo na tabela médico. Uma 
no campo cpf_medico para impedir a duplicação do cadastro de um médico e 
outra no crm_medico para impedir que existam dois CRMs iguais cadastrados 
nesta tabela. Abaixo segue os comandos com todas as Unique Keys da nossa base 
de dados (inclusive da tabela paciente, que foi excluída no exemplo acima).
alter table paciente add constraint 
 paciente_cpf_uk 
 unique (cpf_paciente);
alter table medico add constraint 
 medico_cpf_uk 
 unique (cpf_medico);
UNIDADE 3 | SQL
140
alter table medico add constraint 
 medico_crm_uk 
 unique (crm_medico);
5.4 CHECAGEM DE DADOS
É muito comum, quando se trabalha com banco de dados, querer que 
determinadas tabelas tenham os seus valores consistidos com alguma regra fixa. 
Para isso podemos usar uma constraint de checagem dos dados. Rob e Coronel 
(2011, p. 254) definem o que vem a ser uma restrição de checagem de dados ou 
simplesmente restrição check.
CHECK é utilizado para validar dados quando é inserido um valor de 
atributo. A restrição check não é exatamente o que o seu nome sugere: 
ela verifica se uma condição específica ocorre. Alguns exemplos desta 
restrição são: o valor mínimo de pedidos deve ser 10 ou a data deve ser 
posterior a 15 de abril de 2008.
Como foi citado acima, uma restrição check serve para validar dados de 
acordo com determinadas situações. No nosso banco de dados ela se encaixaria 
na tabela consulta. Temos os campos dt_hora_inicio e dt_hora_fim que registram 
o início da consulta e quando ela terminou. Jamais uma consulta pode terminar 
antes de começar, ou seja, o campo dt_hora_inicio deve ser sempre menor que o 
campo dt_hora_fim. Para isso vamos criar uma constraint check. O comando está 
logo abaixo.
alter table consulta add constraint 
 dt_hora_consulta_ck 
	 check	(dt_hora_inicio	<	dt_hora_fim)
O comando acima fará com que a tabela consulta nunca tenha consultas 
terminando antes mesmo de começar. Se você desejar excluir uma check constraint 
é só seguir os mesmos princípios de exclusão de uma unique key.
Caro(a) acadêmico(a)! A Leitura Complementar a seguir traz uma visão clara de 
questões relacionadas à origem do SQL e sua evolução até o momento. 
A seguir serão apresentados alguns fatores que devem ser analisados quando trabalhamos 
com esse tipo de tecnologia.
UNI
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
141
LEITURA COMPLEMENTAR
O QUE É SQL
O que é e para que serve o SQL?
As aplicações em rede são cada dia mais numerosas e versáteis. Em 
muitos casos, o esquema básico de operação é uma série de scripts que dirigem o 
comportamento de uma base de dados. 
Devido à diversidade de linguagens e de base de dados existentes, a maneira 
de comunicar entre umas e outras seria realmente complicado de providenciar, a 
não ser pela existência de padrões que nos permite realizar as operações básicas 
de uma forma universal. 
É justamente disso que se trata o Structured Query Language que não é 
mais do que uma linguagem padrão de comunicação com base de dados. Falamos, 
portanto, de uma linguagem normalizada que nospermite trabalhar com qualquer 
tipo de linguagem (ASP ou PHP) em combinação com qualquer tipo de base de 
dados (MS Access, SQL Server, MySQL...). 
O fato de ser padrão não quer dizer que seja idêntico para cada base de 
dados. Na prática, determinadas bases de dados implementam funções específicas 
que não têm necessariamente que funcionar em outras. 
À parte desta universalidade, o SQL possui outras duas características 
muito apreciadas. Por uma parte, apresenta potência e versatilidade notáveis que 
contrasta, por outra, com sua acessibilidade de aprendizagem. 
História do SQL
A história do SQL começa em 1970 com a publicação por E. F. Codd, no 
ACM Journal, de um artigo intitulado “A Relational Model of Data for Large 
Shared Data Banks”. 
O modelo proposto por Codd é hoje considerado a base de trabalho para 
qualquer Sistema de Gestão de Base de Dados Relacional (SGBDR).
A primeira implementação da linguagem SEQUEL foi realizada pela 
IBM e tinha por objetivo a implementação do modelo de Codd. A evolução desta 
linguagem veio a dar origem ao SQL.
A primeira implementação comercial de SQL foi realizada pela Relational 
Software, Inc., hoje conhecida por Oracle Corporation.
UNIDADE 3 | SQL
142
Nos dias de hoje, a linguagem SQL é considerada um standard dos Sistemas 
de Gestão de Base de Dados Relacionais (SGBDR); por isso, todos os fabricantes a 
integram nos seu produtos.
A linguagem SQL pertence à 4ª Geração das Linguagens de Programação, 
da qual é a única sobrevivente. Não é, no entanto, uma evolução das linguagens de 
3ª Geração (Pascal, BASIC, C, COBOL, FORTRAN), já que estas têm características 
bem diferentes:
- Existência de Variáveis, vectores etc.
- Existência de instruções condicionais (if, switch, case etc.).
- Existência de ciclos (for, while, do... while, repeat... until).
- Possibilidade de escrita de funções e procedimentos.
Nenhuma destas características existe no SQL, havendo maior ligação entre 
a 3ª e 5ª gerações de linguagens de programação do que com a 4ª.
A linguagem SQL destina-se, por isso e pela sua simplicidade, não só a 
informáticos, como também a gestores, utilizadores, administradores de bases de 
dados etc..
No entanto, a sua principal diferença em relação às linguagens de 3ª 
geração é a ausência nestas de um objetivo pré-definido, coisa que no SQL está 
bem determinado: proporcionar a interface entre o SGBDR e o utilizador, através 
da manipulação de dados.
A linguagem SQL implementa os conceitos definidos no modelo relacional, 
reduzindo assim as incompatibilidades entre os sistemas e evitando a opção por 
arquiteturas proprietárias que implicam maiores custos de desenvolvimento e 
maior esforço financeiro e humano por parte dos intervenientes. 
Com a linguagem SQL é possível:
Criar, alterar e remover todas as componentes de uma base de dados, como 
tabelas, índices, views etc.
Inserir, alterar e apagar dados.
Interrogar a base de dados.
Controlar o acesso dos utilizadores à base de dados, e às operações a que 
cada um deles tem acesso.
Obter a garantia da consistência e integridade dos dados.
A linguagem SQL é composta por vários conjuntos de comandos:
DDL (Data Definition Language): comandos para definir ou modificar a 
composição das tabelas, apagar tabelas, criar índices, definir “views”, especificar 
direitos de acesso a tabelas e views.
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
143
DML (interactive Data Manipulation Language): inclui uma linguagem de 
consulta baseada em álgebra relacional e em cálculo relacional sobre registos; inclui 
também comandos para inserir, apagar e modificar registos na base de dados.
As novas versões de SQL incluem capacidades de verificação de integridade 
dos dados, bem como comandos para especificação do princípio e fim de transações; 
algumas implementações permitem o impedimento explícito de acesso aos dados, 
para controle de acesso concorrencial.
FONTE: Disponível em: <http://www.xtibia.com/forum/topic/42593-o-que-e-sql-historia-do-sql/ >. 
Acesso em: 3 fev. 2013.
144
RESUMO DO TÓPICO 1
Neste tópico, você viu que:
• SQL é uma linguagem para acesso e manipulação de dados em um banco 
relacional.
• O modelo de dados ou modelagem entidade relacionamento vira realidade 
através da aplicação de comandos SQL.
• A criação de tabelas pode ser feita de várias formas, com algumas variações de 
comandos que têm o mesmo resultado.
• Restrições em tabelas servem para dar maior confiabilidade nos dados 
armazenados e procuram mantê-los íntegros.
145
AUTOATIVIDADE
1 De acordo com o conteúdo estudado, defina o que é SQL.
2 Escreva o comando que pode ser utilizado para apagar uma constraint de 
integridade referencial (chave estrangeira), cujo nome é aluno_matricula_fk?
3 Qual é o comando que pode ser utilizado para apagar uma tabela?
4 Com base no que foi aprendido até o momento, escreva um comando 
que crie um campo na tabela paciente para armazenar o documento de 
identidade do mesmo.
5 Crie um comando para excluir o campo que você criou na pergunta anterior.
146
147
TÓPICO 2
MANUTENÇÃO DOS DADOS
UNIDADE 3
1 INTRODUÇÃO
“A persistência é o menor caminho do êxito.” 
(Charles Chaplin).
Dando sequência à parte prática do nosso Caderno de Estudos, vamos 
relembrar o que fizemos até aqui. Basicamente, este caderno está dividido em três 
momentos, ou melhor, três unidades com focos bem distintos.
Na primeira unidade tivemos vários conceitos relacionados a entender o 
que é um banco de dados e qual é a sua utilidade hoje no mundo da tecnologia da 
informação. Podemos perceber que houve um grande processo evolutivo desde 
as primeiras formas de armazenamento. Já na segunda unidade, começamos a 
entender como se projeta um banco de dados, quais são as melhores práticas e 
boas recomendações sobre como alcançar os objetivos pretendidos.
Agora que chegamos a terceira e última unidade, estamos mergulhando 
neste mundo de forma prática, conhecendo com dinamismo tudo o que nos foi 
apresentado nas unidades anteriores. No primeiro tópico aprendemos a criar 
tabelas em suas devidas restrições e checagens. Agora, vamos colocar dados 
nessas tabelas e verificar se a estrutura que criamos realmente atende o que foi 
proposto inicialmente.
Bons estudos!
2 INSERINDO, SELECIONANDO, ATUALIZANDO E 
DELETANDO DADOS
2.1 VALIDANDO AS RESTRIÇÕES DA TABELA
Agora que já temos todas as tabelas criadas, vamos preenchê-las com 
dados e verificar se tudo o que programamos está funcionando. Essa verificação 
consiste basicamente em validar a chave primária, a obrigatoriedade de dados em 
campos NOT NULL, as integridades referenciais (chaves estrangeiras), as chaves 
de unicidade e checagem de dados (campos dt_hora_inicio e dt_hora_fim da tabela 
consulta). Aqui vamos aprender comandos relacionados à inserção, atualização e 
deleção dos dados nas tabelas.
148
UNIDADE 3 | SQL
Para isso ser possível, vamos começar utilizando um comando para inserir 
dados. É o comando insert, que tem sua sintaxe básica apresentada a seguir.
insert into nome_tabela (campo1, campo2, campoN) 
values (valor_campo1, valor_campo2, valor_campo3);
É um comando extremamente simples. Segue um código fonte da inserção 
de um paciente na tabela paciente.
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (1, 'Marcio Junior Silva', '16834865101', 
'(47)89899999');
Perceba que todos os campos do tipo varchar2 estão entre aspas simples. 
Isso é essencial para o correto funcionamento do comando. Para ver o que foi 
inserido no banco de dados, usamos o comando select.
select * from paciente;
O resultado é:
NR_SEQUENCIA NM_PACIENTE CPF_PACIENTE FONE_PACIENTE 
------------ ---------- ------------ ------------
1 MARCIO JUNIOR 16834865101 (47)89899999
 SILVAPara que você tenha um visão mais organizada dos dados selecionados via SQL 
Plus utilize os seguintes comandos:
set linesize 1000;
set pagesize 2000;
alter session set NLS_DATE_FORMAT = 'DD/MM/YYYY HH24:mi:ss'
DICAS
Vamos agora validar algumas restrições que criamos na tabela paciente. A 
primeira é a de chave primária, ou seja, jamais poderemos conseguir incluir outro 
paciente com o campo nr_sequencia igual a 1. Vamos tentar?
TÓPICO 2 | MANUTENÇÃO DOS DADOS
149
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (1, 'Alberto Moreira', '66440726820', 
'(51)99578156');
ERRO na linha 1: ORA-00001: restrição exclusiva (SYSTEM.SYS_C007104) 
violada
Nossa restrição de chave primária está funcionando. O Oracle retornou em 
erro ORA-00001 informando que já existe outro registro com esse código.
Nossa próxima validação se refere a campos que não aceitam valores nulos. 
Vamos relembrar quais são os campos através de um comando desc na tabela paciente.
Nome Nulo? Tipo
 --------------------------- -------- ----------------
 NR_SEQUENCIA NOT NULL NUMBER(6)
 NM_PACIENTE NOT NULL VARCHAR2(100)
 CPF_PACIENTE NOT NULL VARCHAR2(11)
 FONE_PACIENTE VARCHAR2(15)
O único campo que deve aceitar valores nulos é o fone paciente. Vamos 
tentar fazer um insert deixando o cfp_paciente com valor null.
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (2, 'Juliano Rosa', null, '(47)89899999');
ERRO na linha 2: ORA-01400: não é possível inserir NULL em 
("SYSTEM"."PACIENTE"."CPF_PACIENTE")
Como pode ser visto acima, o Oracle não permite que o campo seja nulo, 
confirmando que a validação programada funciona corretamente.
Para ser possível realizar teste de validação da integridade referencial, 
precisamos antes inserir algum registro na tabela médico para posteriormente 
tentarmos inserir consultas. Note que, segundo nosso modelo de dados, a tabela 
consulta é filha das tabelas paciente e médico, por isso se faz necessário inserir 
dados de pacientes e médicos antes de alguma consulta. 
Segue o comando para a inserção de um médico na tabela medico.
150
UNIDADE 3 | SQL
insert into medico (nr_sequencia, nm_medico, crm_medico, 
cpf_medico, fone_medico)
values (1, 'Jader Fonseca', '1002365', '94269268018', 
'(99) 12438080');
Se você desejar, pode fazer o comando select * from medico para 
visualizar os dados do médico cadastrado.
Finalmente, vamos inserir um registro na tabela consulta. Será uma 
consulta com o médico Dr. Jader Fonseca (nr_sequencia = 1) com data de início 
em 04/02/2013 15:00 e término as 04/02/2013 16:00. O paciente será o Marcio Junior 
Silva (nr_sequencia = 1). Segue o comando
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (1, 1, 1, to_date('04/02/2013 15:00:00', 'DD/
MM/YYYY HH24:MI:SS'), to_date('04/02/2013 16:00:00', 'DD/MM/
YYYY HH24:MI:SS'));
Note que usamos uma função to_date. Futuramente entraremos em mais 
detalhes sobre ela (seção 2.3 Conversão de dados). Apenas entenda que ela faz a 
conversão do tipo string para data. Veja o resultado do comando select * from 
consulta.
NR_SEQUENCIA NR_SEQ_PACIENTE NR_SEQ_MEDICO DT_HORA_
INICIO DT_HORA_FIM DS_OBSERVACAO
1 1 1 
04/02/2013 15:00:00 04/02/2013 16:00:00
A consulta foi inserida com sucesso. Agora vamos tentar cadastrar outra 
consulta para um paciente de código 10 (nr_sequencia da tabela paciente). Se nossa 
restrição de integridade estiver correta, esse comando não deverá funcionar. Veja 
o resultado.
 insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
 values (1, 10, 1, to_date('04/02/2013 15:00:00', 'DD/
MM/YYYY HH24:MI:SS'), to_date('04/02/2013 16:00:00', 'DD/MM/
YYYY HH24:MI:SS'))
ERRO na linha 1:
ORA-00001: restrição exclusiva (SYSTEM.SYS_C007105) violada
Como era esperado, o comando não funcionou. Não é possível incluir uma 
consulta para um paciente que não está cadastrado na tabela paciente. 
TÓPICO 2 | MANUTENÇÃO DOS DADOS
151
Temos o mesmo tipo de restrição de unicidade na tabela médico para os 
campos de CPF e CRM. Com os conhecimentos obtidos até aqui você pode testar se tudo está 
funcionado. Sinta-se à vontade para realizar os devidos testes de funcionamento.
DICAS
Para finalizar nossos testes de restrição de integridade, falta testar a check 
constraint ou checagem de dados que fizemos na tabela consulta. Ela impede a 
criação de um registro quando a data de início da consulta é maior que a data 
final, ou seja, se uma consulta começou antes de terminar. Segue um insert com 
essa situação.
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (5, 1, 1, to_date('04/02/2013 16:00:00', 'DD/
MM/YYYY HH24:MI:SS'), to_date('04/02/2013 15:00:00', 'DD/MM/
YYYY HH24:MI:SS'))
ERRO na linha 1: ORA-02290: restrição de verificação (SYSTEM.TD_
HORA_CONSULTA_CK) violada
Não é possível fazer uma inserção de consulta nesta situação. Terminamos 
aqui nossa validação de todos os tipos de restrições que criamos no nosso banco 
de dados. Fique à vontade para realizar novos testes, criar novos cenários. Com 
certeza isso irá lhe ajudar a compreender o funcionamento de um banco de dados.
Já que voltamos a falar desta tabela, vamos verificar o que acontece quando 
tentamos incluir novamente um CPF já cadastrado. Você lembra que criamos uma 
restrição de unicidade (chave única ou unique key) para o campo cpf_paciente? 
Criamos sim! Segue o comando com a inserção de outro paciente com o CPF do 
Márcio Júnior Silva (que já está cadastrado na tabela).
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (5, 'Mauricio Alves', '16834865101', 
'(99)89899999')
ERRO na linha 1: ORA-00001: restrição exclusiva (SYSTEM.PACIENTE_
CPF_UK) violada
Novamente nossa restrição funcionou. Não é possível inserir o mesmo CPF 
mais de uma vez na tabela paciente. 
152
UNIDADE 3 | SQL
Faça testes. Inclua registros nas tabelas e execute um commit. Inclua outros e 
efetue um rollback. Tente executar um rollback depois de executar um commit.
DICAS
2.3 CONVERSÃO DE DADOS
Anteriormente, quando trabalhamos com insert de data e hora utilizamos 
uma função to_date para fazer a conversão de string para o tipo date. Basicamente 
essa é a ideia chave das funções de conversão de dados. O Oracle trabalha com 
quatro funções distintas: to_char, to_number, to_date e nvl. O quadro 
a seguir mostra essas funções e detalha a sua aplicação.
2.2 TRANSAÇÕES
Na seção anterior, trabalhamos basicamente com os comandos insert e select 
para fazer a validação das restrições na nossa base de dados. Nossa metodologia 
para desempenhar tal tarefa foi inserir dados em tabelas e selecionar os mesmos 
para averiguação. Porém chegou a hora de uma grande revelação: os dados que 
você usou para fazer seus inserts ainda não estão gravados em definitivo nas 
tabelas. Inclusive se você fechar o SQL Plus e abri-lo novamente perceberá que os 
dados não vão estar mais disponíveis.
Para gravar os dados em definitivo é necessário executar o comando 
commit. Isso fará com que todas as inserções que foram feitas sejam gravadas em 
definitivo e disponibilizadas para todos os outros usuários do banco. Antes de 
um commit ser executado, os dados das tabelas que alteramos ficam disponíveis 
apenas para nós.
Esse é o funcionamento básico de uma transação. Morelli (2000) nos diz 
que uma transação é um conjunto de operações, comandos SQL, delimitada por 
um início e um fim. O fim pode ser um comando commit, que grava os dados em 
definitivo, ou um rollback, que desfaz todas as alterações que efetuamos na base até 
encontrar o último commit.
O funcionamento é bem simples. Para confirmar a gravação dos dados no 
banco, execute um commit. Se quiser desfazer a alteração, efetue umrollback. Não é 
possível desfazer as alterações com um rollback após ter dado um commit.
TÓPICO 2 | MANUTENÇÃO DOS DADOS
153
QUADRO 4 – FUNÇÕES DE CONVERSÃO DE DADOS DO ORACLE
Função Descrição
to_char(número ou data, 
‘formato’)
Converte um campo numérico ou data em uma 
cadeia de caracteres do tipo varchar2, com o 
formato definido pela variável formato.
to_number(char) Converte uma cadeia de caracteres numérica em número inteiro
to_date(char, ‘formato’)
Converte uma cadeia de caracteres, especificando 
uma data, no tipo date, de acordo com a variável 
formato (se omitida, é assumido ‘DD-MMM-
AA’).
nvl(coluna, valor) Converte um null que encontre na coluna, em um valor especificado.
FONTE: Morelli (2000 p. 37)
As funções to_char e to_date quando trabalham com datas possuem 
letras para definir o formato. O quadro a seguir mostra os principais formatos de 
conversão de data.
QUADRO 5 – FUNÇÕES DE CONVERSÃO DE DADOS DO ORACLE
Formato Descrição
YYYY Ano com 4 dígitos
MM Mês (01 – 12)
MON Nome abreviado do mês
WW Semana do ano (1 – 53)
W Semana do mês (1 – 5)
D Dia da semana (1 – 7)
DAY Nome do dia
DD Dia do mês (1 – 31)
DDD Dia do ano (1 – 366)
HH Hora do dia (1 – 12)
HH12 Hora do dia (1-12)
HH24 Hora do dia (0-23)
MI Minutos (0-59)
SS Segundos (0-59)
FONTE: Disponível em: <http://fazendoti.wordpress.com/2011/05/19/usando-
a-funcao-to_date-em-oracle/>. Acesso em: 3 fev. 2013.
154
UNIDADE 3 | SQL
2.4 COMANDOS UPDATE E DELETE
Agora que você já conhece e utiliza os comandos insert e select ficará 
fácil de entender o update e delete. Eles servem respectivamente para atualizar 
ou apagar os dados em tabelas. Vamos começar explorando o comando update. 
Sua sintaxe está a seguir.
update nome_da_tabela set nome_campo1 = valor_campo1, 
 nome_campo2 = valor_campo2,
 nome_campoN = valor_campoN
where campo_restricao = valor_campo_restricao;
Para exercitar, vamos executar um update para o nosso paciente Márcio 
Júnior Silva (cujo campo nr_sequencia tem o valor 1), para modificar o seu telefone. 
Antes vamos fazer um select e verificar qual é o número do telefone que está 
cadastrado na base.
select nr_sequencia, nm_paciente, fone_paciente from 
paciente;
NR_SEQUENCIA NM_PACIENTE FONE_PACIENTE
------------ ------------- ---------------------- 
 1 Marcio Junior Silva (47)89899999
 
 
O novo telefone dele deverá ser (47) 56897412. Segue o comando update.
Para exemplificar o uso de uma função que trabalhe com datas vamos ao 
seguinte comando.
select to_char(sysdate, ‘DD/MM/YYYY HH24:MI:SS’) from 
dual;
Se você executar esse comando, o resultado dele será a data do sistema 
juntamente com hora, minuto e segundo. É dessa forma que o Oracle trabalha com 
conversão de datas. Neste caso, o sysdate é um comando que retorna a data e hora 
atual do sistema e a tabela dual é uma espécie de tabela genérica do Oracle que 
existe para ser utilizada nessas situações.
Existem também várias outras funções que o Oracle disponibiliza para trabalhar 
com números, caracteres ou datas. Alguns exemplos podem ser vistos em <http://
www.linknacional.com.br/criar-site/2011/11/funcoes-de-manipulacao-no-oracle/>.
TÓPICO 2 | MANUTENÇÃO DOS DADOS
155
update paciente set fone_paciente = '(47) 56897412'
 where nr_sequencia = 1;
commit;
É muito importante o uso da cláusula where, pois sem ela, todos os registros 
da tabela paciente ficariam com o mesmo telefone. Normalmente o campo que 
faz parte do where é o que identifica o registro que deve ser alterado, ou seja, 
a chave primária da tabela. Notem também a presença do commit, para gravar 
definitivamente a alteração na tabela. Vamos novamente executar um select 
para verificar o que aconteceu.
select nr_sequencia, nm_paciente, fone_paciente from 
paciente;
NR_SEQUENCIA NM_PACIENTE FONE_PACIENT
------------ ------------------- ---------------------- 
 1 Marcio Junior Silva (47) 56897412
Conforme pode ser visto, o telefone foi alterado. 
Dando continuidade, vamos ver como funciona o comando delete. Ele 
tem a finalidade de eliminar registros de tabelas. Também necessita de um commit 
no final do processo para confirmar as alterações. Sua sintaxe básica é a seguinte:
delete from nome_tabela 
where campo_restricao = valor_campo_restricao;
Para testá-lo vamos novamente utilizar nosso paciente Márcio Júnior Silva 
(cujo campo nr_sequencia tem o valor 1). Vamos tentar apagá-lo da tabela paciente. 
Segue o comando.
delete from paciente where nr_sequencia = 1
ERRO na linha 1: ORA-02292: restrição de integridade (SYSTEM.
CONSULTA_PACIENTE_FK) violada - registro filho localizado
Desta vez o comando não funcionou. Você se lembra da integridade 
referencial que existe entre a tabela consulta e paciente? É uma chave estrangeira 
na tabela consulta para o código do paciente. Anteriormente cadastramos uma 
consulta para ele e por isso não podemos excluir esse paciente. Uma consulta não 
pode ficar sem um paciente e caso o banco permitisse isso, teríamos um erro de 
integridade e dados não íntegros.
156
UNIDADE 3 | SQL
Se algum dia você desejar eliminar todos os registros de determinada tabela em 
uma única vez, não o faça por meio do comando delete. É mais performático 
utilizar o comando truncate table nome_da_tabela e logo em seguida um commit.
DICAS
3 SELEÇÃO DE DADOS
Neste ponto, já sabemos como inserir, alterar e excluir dados de tabelas 
do banco. Tivemos uma pequena noção de seleção de dados, que foi necessária 
para validar as alterações que foram feitas com os comandos insert, update 
e delete. Agora chegou o momento de aprofundarmos um pouco nossos 
conhecimentos sobre o comando select.
Para conseguir apagar esse paciente, precisamos executar dois comandos 
delete. O primeiro para apagar todas as consultas que o paciente tem e o segundo 
para eliminar o seu cadastro da tabela paciente. Veja a seguir:
delete from consulta where nr_seq_paciente = 1;
delete from paciente where nr_sequencia = 1;
commit;
Aparentemente os registros foram excluídos. Note que no delete da 
tabela consulta não foi utilizado o campo nr_sequencia no where, mas sim o 
campo nr_seq_paciente que contém o código do paciente. Como a ideia era excluir 
todas as consultas do paciente de código = 1, a condição where buscou todas as 
consultas do paciente 1. Vamos selecionar os dados da tabela paciente para ver o 
que encontramos.
select * from paciente
não há linhas selecionadas
Na tabela paciente que estou utilizando não existem mais registros porque 
o Márcio Júnior Silva era o único que estava cadastrado. Caso você tenha mais 
pacientes e executar o comando select acima, todos os pacientes devem aparecer, 
menos o Márcio Júnior Silva.
TÓPICO 2 | MANUTENÇÃO DOS DADOS
157
Para isso ser possível, primeiro precisamos cadastrar mais dados em 
nossas tabelas. Seguem os comandos para inserção dos dados. Se desejar, você 
pode ignorar esses comandos e inserir seus próprios registros.
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (1, ‘Marcio Silva’, ‘16834865101’, ‘(47)89899999’);
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (2, ‘Juca Pedro’, ‘76820503903’, ‘(47)89748596’);
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (3, ‘Maria Quadros’, ‘62052125442’, 
‘(47)12256897’);
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (4, ‘Pedro Almeida’, ‘84828752137’, 
‘(47)89452541’);insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (5, ‘Josiane Silva’, ‘38145048524’, 
‘(49)58574859’);
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (6, ‘Marcos Rocha’, ‘30305222619’, ‘(51)37865247’);
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (7, ‘Tiago Prado’, ‘18131028640’, ‘(39)85697454’);
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (8, ‘Augusto Pereira’, ‘03660633321’, 
‘(41)45859687’);
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (9, ‘Priscila Chaves’, ‘67742258706’, 
‘(45)25417896’);
158
UNIDADE 3 | SQL
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente, fone_paciente)
values (10, ‘Marta Campos’, ‘43407732805’, 
‘(49)65897485’);
insert into medico (nr_sequencia, nm_medico, crm_medico, 
cpf_medico, fone_medico)
values (1, ‘Jader Fonseca’, ‘1002365’, ‘94269268018’, 
‘(99) 12438080’);
insert into medico (nr_sequencia, nm_medico, crm_medico, 
cpf_medico, fone_medico)
values (50, ‘Fernando Ferreira’, ‘105263’, ‘56624682736’, 
‘(45) 58996452’);
insert into medico (nr_sequencia, nm_medico, crm_medico, 
cpf_medico, fone_medico)
values (51, ‘Marleide Benta’, ‘1089745’, ‘21764632184’, 
‘(48) 49564586’);
insert into medico (nr_sequencia, nm_medico, crm_medico, 
cpf_medico, fone_medico)
values (52, ‘Cabral Rodrigues’, ‘2035698’, ‘13167468106’, 
‘(44) 89745214’);
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (100, 1, 1, to_date(‘04/02/2013 20:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘04/02/2013 21:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (101, 10, 50, to_date(‘05/02/2013 15:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘05/02/2013 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (102, 9, 51, to_date(‘10/02/2013 15:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘10/02/2013 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
TÓPICO 2 | MANUTENÇÃO DOS DADOS
159
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (103, 8, 52, to_date(‘04/02/2013 11:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘04/02/2013 12:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (104, 7, 1, to_date(‘20/02/2012 15:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘20/02/2012 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (105, 6, 50, to_date(‘11/04/2013 16:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘11/04/2013 17:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (106, 4, 51, to_date(‘13/06/2013 17:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘13/06/2013 18:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (107, 5, 52, to_date(‘14/09/2012 14:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘14/09/2012 15:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (108, 2, 1, to_date(‘24/01/2011 13:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘24/01/2011 14:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (109, 1, 50, to_date(‘07/04/2013 15:30:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘07/04/2013 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (110, 3, 1, to_date(‘08/11/2010 13:30:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘08/11/2010 14:30:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
160
UNIDADE 3 | SQL
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (111, 3, 50, to_date(‘02/12/2012 19:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘02/12/2012 20:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (112, 2, 1, to_date(‘05/03/2013 15:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘05/03/2013 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (113, 1, 52, to_date(‘19/07/2012 15:30:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘19/07/2012 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (114, 5, 1, to_date(‘11/01/2013 14:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘11/01/2013 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (115, 1, 51, to_date(‘28/04/2013 13:40:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘28/04/2013 15:20:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (116, 1, 1, to_date(‘10/08/2013 15:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘10/08/2013 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (117, 1, 50, to_date(‘09/02/2013 15:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘09/02/2013 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (118, 1, 1, to_date(‘27/11/2013 15:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘27/11/2013 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
TÓPICO 2 | MANUTENÇÃO DOS DADOS
161
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (119, 1, 52, to_date(‘09/05/2013 15:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘09/05/2013 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
insert into consulta (nr_sequencia, nr_seq_paciente, 
nr_seq_medico,	dt_hora_inicio,	dt_hora_fim)
values (120, 1, 1, to_date(‘14/05/2013 15:00:00’, ‘DD/
MM/YYYY HH24:MI:SS’), to_date(‘14/05/2013 16:00:00’, ‘DD/MM/
YYYY HH24:MI:SS’));
Depois de colocarmos dados nas tabelas, vamos adiante. Um comando 
select tem várias particularidades e detalhes. Segue uma sintaxe básica:
select [distinct] coluna1, coluna2, colunaN
from tabela1, tabela2, tabelaN
where condições
[group by colunas]
[having [condição]
[order by colunas]
Vamos apresentar alguns exemplos de comandos select com tudo o que está 
apresentado nesta sintaxe. Porém, vamos iniciar pelo básico. Segue um select que 
tem como objetivo listar o nome de todos os médicos que tem telefone informado.
select nm_medico
from medico
where fone_medico is not null;
Segue o resultado do comando.
NM_MEDICO 
------------------------------------------------------
Jader Fonseca
Fernando Ferreira
Marleide Benta
Cabral Rodrigues
Neste select, a cláusula where é responsável por filtrar se todos os telefones 
tem valor informado (se são não nulos). Em outros momentos ela pode servir 
também para fazer joins entre tabelas, ou seja, quando eu necessito acessar mais 
de uma tabela para recuperar os dados, é feito a junção através dos campos que 
compõem o relacionamento. 
162
UNIDADE 3 | SQL
Veja no exemplo a seguir, um select que mostra todas as consultas realizadas 
no período de 01/01/2012 até 31/01/2013. Os dados que serão buscados são o nome 
do médico, a data da consulta e o nome do paciente.
select b.nm_medico, a.dt_hora_inicio, c.nm_pacientefrom consulta a, medico b, paciente c
where a.dt_hora_inicio between to_date(‘01/01/2012 
00:00:00’, ‘DD/MM/YYYY HH24:MI:SS’)
 and to_date(‘31/01/2013 23:59:59’, ‘DD/MM/YYYY 
HH24:MI:SS’)
and b.nr_sequencia = a.nr_seq_medico
and c.nr_sequencia = a.nr_seq_paciente
order by a.dt_hora_inicio;
 
O comando between serve para informar o Oracle para buscar dados 
dentro de um intervalo definido, que no caso acima é um período de datas. Esse 
comando é um filtro dentro do select. Já as duas linhas em destaque são joins das 
tabelas médico e paciente com a tabela consulta. Note que o acesso é feito pelos 
campos que compõem a chave estrangeira. Foi utilizado a cláusula order by que 
serve apenas para ordenar os dados. Segue o resultado:
NM_MEDICO DT_HORA_INICIO NM_PACIENTE 
----------------------- ------------------- ----------
Jader Fonseca 20/02/2012 15:00:00 Tiago Prado
Cabral Rodrigues 19/07/2012 15:30:00 Marcio Junior Silva
Cabral Rodrigues 14/09/2012 14:00:00 Josiane Silva
Fernando Ferreira 02/12/2012 19:00:00 Maria Quadros
Jader Fonseca 11/01/2013 14:00:00 Josiane Silva
Ao invés de listar as datas e nome dos pacientes, poderíamos apenas 
contar por médico quantas consultas eles atenderam no mesmo intervalo de datas. 
Usaríamos uma função de agrupamento de dados para obter esse resultado. O 
comando pode ser visto a seguir:
select b.nm_medico, count (a.nr_sequencia)
from consulta a, medico b
where a.dt_hora_inicio between to_date(‘01/01/2012 
00:00:00’, ‘DD/MM/YYYY HH24:MI:SS’)
 and to_date(‘31/01/2013 23:59:59’, ‘DD/MM/YYYY 
HH24:MI:SS’)
and b.nr_sequencia = a.nr_seq_medico
group by b.nm_medico;
As partes em destaque no comando fazem parte do agrupamento de dados. 
A função count conta o número de consultas. Sempre que trabalhamos com esse 
tipo de função precisamos usar o group by e informar todos os campos que não 
estão sendo contados. Existem outras funções para agrupamento de valores como 
o max e o min que buscam o valor maior e o valor menor respectivamente.
TÓPICO 2 | MANUTENÇÃO DOS DADOS
163
Segue o resultado do comando:
NM_MEDICO COUNT(A.NR_SEQUENCIA)
------------------------ -------------------- 
Cabral Rodrigues 2 
Jader Fonseca 2 
Fernando Ferreira 1 
Para finalizarmos nosso tópico, vamos falar sobre o having. Este comando 
tem a finalidade de aplicar um filtro nos dados depois de eles serem agrupados. 
Para exemplificar, vamos fazer com que no select acima sejam retornados somente 
os médicos com duas consultas. Segue o comando e o resultado:
select b.nm_medico, count (a.nr_sequencia)
from consulta a, medico b
where a.dt_hora_inicio between to_date(‘01/01/2012 
00:00:00’, ‘DD/MM/YYYY HH24:MI:SS’)
 and to_date(‘31/01/2013 23:59:59’, ‘DD/MM/YYYY 
HH24:MI:SS’)
and b.nr_sequencia = a.nr_seq_medico
group by b.nm_medico
having count (a.nr_sequencia) = 2;
NM_MEDICO COUNT(A.NR_SEQUENCIA)
------------------------ -------------------- 
Cabral Rodrigues 2 
Jader Fonseca 2 
Retornaram somente os médicos com duas consultas.
Existe uma infinidade de recursos e funcionalidades avançadas que são 
possíveis de aplicar ao comando select. O que foi passado neste Caderno de 
Estudos é apenas uma forma introdutória de seleção de dados. Você pode consultar 
a bibliografia da disciplina se deseja aprofundar ainda mais os seus estudos.
164
UNIDADE 3 | SQL
SITE PROTEGIDO CONTRA SQL INJECTION E CONCEITUAÇÃO 
A Injeção de SQL, mais conhecida através do termo americano SQL 
Injection, é um tipo de ameaça de segurança que se aproveita de falhas em sistemas 
que interagem com bases de dados via SQL. A injeção de SQL ocorre quando o 
atacante consegue inserir uma série de instruções SQL dentro de uma consulta 
(query) através da manipulação das entradas de dados de uma aplicação.
Funcionamento
Para exemplificar o funcionamento da injeção de SQL, vamos considerar 
uma instrução SQL comum:
SELECT id, nome, sobrenome FROM autores;
Essa instrução, que representa uma consulta na base de dados, retorna 
todos os registros das colunas “id”, “nome” e “sobrenome” da tabela “autores”. A 
partir desta mesma instrução, os registros a serem retornados podem ser restritos 
através da inclusão da cláusula WHERE, como é visto no exemplo abaixo:
SELECT id, nome, sobrenome FROM autores WHERE nome = 
‘josé’ AND sobrenome = ‘silva’;
Com base nesta instrução, é fácil supor que “josé” e “silva” são strings, 
cujo conteúdo será preenchido pela entrada feita por algum usuário que estiver 
fazendo uso da aplicação.
Portanto, supondo que a aplicação não faça o tratamento apropriado do 
conteúdo inserido pelo usuário, o mesmo pode fazer o uso acidental do caractere 
de aspas simples. Gerando a entrada: nome = jo’sé e sobrenome = silva, fazendo 
com que a aplicação gere o código:
Caro(a) acadêmico(a)! A Leitura Complementar a seguir fala sobre um tema 
que é muito comentado principalmente no mundo WEB: a injeção de dados maliciosos em 
comandos SQL. Visando obter vantagens de acesso ou até mesmo a invasão de um sistema, 
pessoas mal intencionadas fazem uso desta vulnerabilidade.
UNI
LEITURA COMPLEMENTAR
TÓPICO 2 | MANUTENÇÃO DOS DADOS
165
SELECT id, nome, sobrenome FROM autores WHERE nome = 
‘jo’sé’ AND sobrenome = ‘silva’;
De acordo com a especificação da linguagem SQL, existe um erro 
de sintaxe nessa instrução, uma vez que a string passada para o campo nome é a 
apenas palavra “jo”, pois a adição das aspas simples quebrou a delimitação das 
aspas simples originais da consulta. O interpretador do SQL espera que o restante 
da instrução seja outros comandos SQL válidos que complementem a instrução 
principal. No entanto, como “sé” não é um identificador válido, essa instrução não 
será executada e retornará um erro.
Com base neste problema, um possível atacante pode manipular os dados 
de entrada a fim de gerar um comportamento não esperado na base de dados.
Para exemplificar este conceito, consideremos na mesma consulta 
apresentada, a entrada dos seguintes dados pela aplicação: nome = jo’; DROP 
TABLE autores ; -- sobrenome = silva, fazendo com que a aplicação gere o código:
SELECT id, nome, sobrenome FROM autores WHERE nome = 
‘jo’; DROP TABLE autores ; --’ AND sobrenome = ‘silva’;
Neste caso, a instrução será executada normalmente, pois não há um erro 
de sintaxe, no entanto, com a adição do caractere ponto-e-vírgula, a instrução foi 
dada como finalizada de modo prematuro dando espaço para uma nova instrução. 
Essa nova instrução, que poderia ser qualquer uma escolhida pelo atacante, pode 
ser a responsável por retornar dados confidenciais armazenados na base de dados 
ou de executar instruções que comprometam o sistema, como a remoção de dados 
e/ou tabelas, como pode ser visto no exemplo apresentado.
Aparentemente um método para prevenir esse problema seria a remoção 
de aspas simples dos campos de inserção da aplicação, ou simplesmente não 
executando a query nestas situações. Isso é verdade, mas existem várias dificuldades 
com esse método tanto quanto soluções. Primeiro, nem todos os usuários inserem 
dados em forma de strings. Se o usuário puder selecionar um autor pelo ‘id’ 
(presumivelmente um número), por exemplo, nossa query aparecerá como abaixo:
SELECT id, forename, surname FROM authors WHERE id=1234
Nesta situação, o atacante pode simplesmente adicionar uma instrução SQL 
no fim do ‘input’ numérico. Verificando os dialetos de SQL, vários delimitadores 
podem ser usados no Microsoft Jet DBMS engine, por exemplo, datas podem 
ser delimitadas com o caracter sustenido. Portanto, escapando da execução da 
adição de aspas simples, não necessariamente uma solução como demonstrado 
anteriormente.
FONTE: Disponível em: <http://www.2bweb.com.br/Artigos-software-Web/site-protegido-contra-
sql-injection-e-conceituacao.cfm>. Acesso em: 3 fev.2013.
166
RESUMO DO TÓPICO 2
Neste tópico, você viu que: 
• O comando insert serve para inserir dados em tabelas.
• O comando update atualiza dados em tabelas.
• O comando delete apaga dados em tabelas.
• Existem vários modos de fazer a validação das restrições em tabelas.
• O comando select seleciona os dados de um banco de dados.
167
AUTOATIVIDADE
1 Faça um comando select que liste todos os nomes de pacientes em ordem 
alfabética.
2 Tente apagar algum médico que possua uma consulta. É possível fazer isso? 
Se não for, explique o motivo.
3 Escolha uma das consultas cadastradas na tabela consulta e tente colocar o 
valor 599 para o campo nr_seq_paciente. Relate o que aconteceu.
4 Para fins de otimização de performance, que comando deve ser utilizado 
para apagar todos os registros de determinada tabela?
5 Que comando pode ser utilizado para contar registros em um select que 
utiliza uma função de agrupamento de dados?
168
169
TÓPICO 3
OUTRAS ESTRUTURAS DE DADOS
UNIDADE 3
1 INTRODUÇÃO
“Não são as ervas más que afogam a boa semente, 
e sim a negligência do lavrador”. (Confúcio)
Chegamos ao último tópico deste Caderno de Estudos. Com muito esforço 
e determinação estamos concluindo a disciplina de princípios de bancos de dados. 
O conteúdo que será apresentado nesta última parte é composto de algumas 
estruturas de bancos de dados que ainda não vimos.
FIGURA 61 – CHEGAMOS À RETA FINAL
FONTE: Disponível em: <http://run-x.blogspot.com.br/2010_03_01_
archive.html>. Acesso em: 4 fev. 2013.
Elas servem basicamente para complementar tudo o que já foi visto, em 
alguns casos até automatizando comandos que antes fazíamos “no braço”. Está 
dividida em dois momentos: o primeiro trata de alguns objetos de bancos de dados 
e o segundo lista alguns recursos da linguagem PL/SQL. 
Novamente desejo a você bons estudos!
UNIDADE 3 | SQL
170
2 OBJETOS DE BANCOS DE DADOS
Esta seção tem como objetivo apresentar estruturas de dados de um banco. 
As mesmas visam dar suporte a uma gama de recursos que complementam o 
trabalho de armazenar e recuperar dados.
De uma forma geral, vamos discutir sobre três itens: índices, sequences e 
views. Daremos exemplos de um uso cotidiano apresentando a necessidade de 
uma forma detalhada.
2.1 ÍNDICES
É um tipo de estrutura que tem como objetivo facilitar o acesso dos 
dados pelo banco de dados. Está diretamente ligado a questões de desempenho 
e diminuição do uso de recursos do servidor no qual o banco está disponível (se 
você instalou o Oracle na sua máquina, ela é o servidor).
Morelli (2000, p. 69) nos dá uma definição do que é um índice.
Índices (index) são estruturas especiais inseridas no banco de dados 
com o objetivo de melhorar o desempenho de acesso às tabelas. Sua 
função é reduzir o I/O em disco utilizando uma estrutura de árvore 
binária (B*Tree) para localizar rapidamente os dados. Ao varrer a 
árvore binária, ele identifica a chave e recupera o seu rowid, ponteiro 
para acesso ao dado, localizando o registro rapidamente. O Oracle cria 
automaticamente um índice do tipo unique ao criar uma chave primária, 
o qual recebeu o mesmo nome da constraint.
Entenda que rowid é um indentificador único de registros gravados em 
tabelas. Ele tem certa relação com índices. Segue a sintaxe de criação de um índice.
create index nome_do_indice on tabela (nome_campo);
A sintaxe é extremamente simples. Índices na sua forma mais básica são 
criados em campos que fazem parte de relacionamentos. Seguindo esta linha, 
precisamos criar dois índices no nosso modelo de dados e ambos na tabela consulta. 
Seguem os comandos:
create index nr_seq_paciente_fk_i on consulta (nr_seq_
paciente);
create index nr_seq_medico_fk_i on consulta (nr_seq_
medico);
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
171
O texto a seguir trata sobre algumas dicas para a criação de índices no que se 
refere a situações quando devem ser criados.
UNI
DICAS PARA CRIAÇÃO DE ÍNDICE
 
Deparei com um material bem interessante que traz algumas “premissas” 
para a criação de índices.
Segue a lista de sugestões:
Crie índices quando:
Uma coluna contiver uma grande faixa de valores.
Uma coluna contiver muitos valores nulos.
Quando uma ou mais colunas forem usadas frequentemente em clausulas 
WHERE ou em JOINS.
Se a tabela for muito grande e as consultas realizadas recuperarem menos 
de 5% dos registros.
NÃO crie índices quando:
As colunas não são usadas frequentemente como condição nas consultas.
A tabela for pequena ou se os resultados das consultas forem maiores que 
5-10% dos registros.
A tabela for atualizada com frequência.
As colunas fizerem parte de uma expressão
* Nesse item entende-se por expressão algo na cláusula where tipo:
SELECT TABLE_NAME
FROM ALL_TABLES
WHERE TABLE_NAME||OWNER = ‘DUALSYS’
Observe que na cláusula de comparação as colunas TABLE_NAME e 
OWNER fazem uma expressão de comparação e por consequência um índice 
não ajudaria em nada.
UNIDADE 3 | SQL
172
Outras coisas importantes de lembrar:
ÍNDICES NÃO SÃO ALTERÁVEIS! (Para alterar um índice você deve 
removê-lo e recriá-lo.)
ÍNDICES ONERAM A PERFORMANCE DE INSERT / UPDATE (Não 
dá para fazer milagres, se sua tabela tiver muitos índices as performances de 
alterações podem ser comprometidas).
FONTE: Disponível em: <http://www.dartanghan.com.br/oracledb/oracle-index-dicas-para-
criacao-de-indice/>. Acesso em: 4 fev. 2013.
2.2 SEQUENCES
Este tipo de estrutura visa gerar sequências de números, que na maioria das 
vezes são utilizadas em chaves primárias de tabelas. É basicamente um objeto que 
gera valores numéricos toda vez que for solicitado, porém sempre em sequência, 
incrementando os valores para que eles não se repitam.
Pense no nosso modelo de dados. Para as tabelas médico, consulta e paciente 
poderia existir uma sequence para cada uma delas. Ao invés de fazermos o insert 
com números fixos, poderíamos chamar uma sequence para gerenciar a inserção 
dos campos nr_sequencia. De uma forma geral, esta é a função de uma sequence.
Segue a sintaxe do comando para criação de uma sequence segundo Morelli 
(2000).
create sequence sequencia
 [increment by n]
 [start with n]
 [maxvalue n | nomaxvalue]
 [cycle | nocycle]
 [cache n | nocache];
QUADRO 6 – DETALHE DOS ITENS DA SINTAXE
Opção Descrição
sequencia Nome da sequência que não pode ser o nome de uma tabela ou view.
increment by n Especifica de quanto será o incremento ou decremento da sequência. O default é 1.
start with n Especifica o primeiro número a ser gerado. O default é 1.
maxvalue n Especifica o valor máximo que a sequência pode assumir. O default é nomaxvalue, indo até 1027.
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
173
FONTE: Morelli (2000, p. 73)
minvalue n
Especifica o valor mínimo para sequências que estejam 
sendo decrementadas. É mutuamente exclusiva à 
anterior.
cycle | nocycle
Indica que, quando atingir o valor máximo, a 
numeração continuará a partir do valor inicial. O 
default é nocycle.
cache n | nocache Especifica quantos valores o Oracle pré-aloca e mantém em memória. O default é 20.
Visando um pouco de prática, vamos criar uma sequence para a tabela 
paciente.
create sequence nr_sequencia_paciente_sequ maxvalue 999999;
Note que o número máximo da sequence será 999999 porque na definição do 
campo nr_sequencia da tabela paciente temos um numérico de seis posições. Vale 
a pena ressaltar que uma sequence não tem vínculo nenhum com tabela ou campo, 
entretanto pode não ser correto declarar uma sequence com tamanho incompatível 
com o do campo onde ela será utilizada.
Para buscar o próximo número da sequence criada acima, podemos usar nr_
sequencia_paciente_seq.nextval. Já para retornar o valor corrente usamos 
o nr_sequencia_paciente_seq.currval. Para fins de testes é possível fazer 
o select seguinte para retornar valores das sequences.
select nr_sequencia_paciente_sequ.nextval from dual
 NEXTVAL
----------
 1 
select nr_sequencia_paciente_sequ.currval from dual
 
 CURRVAL
----------1 
UNIDADE 3 | SQL
174
Para fins de lembrança, como foi abordada anteriormente a tabela dual é uma 
espécie de tabela coringa no Oracle e serve para utilizar nesses casos em que precisamos 
retornar valores. 
DICAS
Segue o exemplo de um comando insert utilizando a sequence criada.
insert into paciente (nr_sequencia, nm_paciente, cpf_
paciente)
values (nr_sequencia_paciente_sequ.nextval, 'Alberto 
Antunes', '21724524593');
Se acaso for utilizado o comando nextval na sequence ela incrementará o 
seu valor atual. Quando for feito um nextval e o valor não for utilizado, o mesmo 
será “perdido”, pois sempre que a sequence é requisitada com nextval ela muda 
o seu valor.
O texto a seguir compara o comportamento de uma sequence no Oracle com os 
recursos que outros bancos de dados disponibilizam.
UNI
SEQUÊNCIAS ORACLE
Se você utiliza MS Access, deve conhecer o tipo de dados AutoNumber, 
que pode ser utilizado para definir uma coluna de tabela preenchida 
automaticamente com valores numéricos exclusivos. Com efeito, quando se 
cria uma tabela em MS Access e se esquece de definir uma chave primária, o 
aplicativo oferecerá a criação de uma coluna de PK. Se aceita, observe que o 
MS Access cria uma coluna chamada ID com tipo de dados AutoNumber. Após 
definir uma coluna com AutoNumber, todas as vezes em que uma linha for 
inserida na tabela, o MS Access adicionará automaticamente um valor a essa 
coluna, começando com 1 e aumentando em uma unidade a cada nova linha 
adicionada. Além disso, não é possível incluir esta coluna em comandos insert 
– o Access não permite editar esse valor de modo algum. O MS SQL Server 
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
175
utiliza a propriedade da coluna “Identity” (identidade) para atender a uma 
finalidade similar. Em MS SQL Server, uma tabela pode ter, no máximo, uma 
coluna definida como “Identity”. Essa coluna se comporta de modo similar a 
coluna do MS Access com tipo de dados AutoNumber.
O Oracle não dá suporte ao tipo de dados AutoNumber ou à propriedade 
de coluna “Identity”. Em vez disso, pode-se utilizar uma “sequencia” para 
atribuir valores a uma coluna de tabela. Mas as sequencias do Oracle são muito 
diferentes do AutoNumber do Access e merecem uma análise mais detalhada.
- São objetos independentes no banco de dados (não são um tipo de dados).
- Possuem um nome e podem ser utilizadas em qualquer posição de comando 
em que se espere um valor.
- Não são atreladas a uma tabela ou coluna.
- Geram um valor numérico automático que pode ser atribuído a qualquer 
coluna de qualquer tabela.
- O atributo de tabela ao qual é atribuído um valor com base em sequência pode 
ser editado e modificado.
- É possível editar e excluir uma sequência do Oracle a qualquer momento.
FONTE: Rob e Coronel (2011, p. 352)
2.3 VIEWS
Uma view é uma espécie de tabela virtual que o Oracle disponibiliza para 
visualização de dados. Ela pode ter diversos fins, como formatação de dados, 
obtenção de informações calculadas com base em dados, segurança etc. É um 
objeto que está construído para retornar informações de um select.
Rob e Coronel (2011, p. 294) nos dão um exemplo de aplicabilidade das views.
Suponha que, no fim de cada dia, deseje-se obter uma lista de todos 
os produtos que devem ser encomendados, ou seja, produtos cuja 
quantidade disponível é menor ou igual a uma quantidade mínima. Em 
vez de digitar a mesma consulta no fim de cada dia, não seria melhor 
salvar essa consulta de forma permanente no banco de dados? Essa é a 
função de uma visualização relacional. Uma visualização é uma tabela 
virtual baseada em uma consulta select.
Na citação acima entenda visualização relacional como um termo designado 
para definir uma view. Segue a sintaxe básica da criação de uma view.
create view nome_da_view as comando select;
Não existe muito segredo quanto a sua definição. O comando é extremamente 
simples. Entretanto, vale a pena ser discutida a sua aplicação. 
UNIDADE 3 | SQL
176
Morelli (2000) cita dois exemplos onde à criação de uma view pode ser 
aplicada. No primeiro, ele explica que uma view pode ser criada para evitar que 
usuários não autorizados tenham acesso a todos os dados de uma tabela. Para isso, 
cria-se uma visão com apenas uns campos.
Outro exemplo que esse mesmo autor nos dá se refere à associação de uma 
visão a consultas que utilizam critérios de seleção complexos, facilitando assim a 
vida dos usuários.
Voltando novamente o foco para o nosso modelo de dados, poderíamos 
criar uma visão para mostrar todas as consultas que um médico vai atender ou já 
atendeu e seus respectivos pacientes. Assim, teríamos facilidade maior em fazer 
uma pesquisa com os dados. Segue o comando de criação da view.
create or replace view medico_consulta_paciente as
select a.nr_sequencia nr_seq_medico,
 a.nm_medico,
 a.crm_medico,
 a.cpf_medico,
 a.fone_medico,
 b.nr_sequencia nr_seq_consulta,
 b.dt_hora_inicio,
							b.dt_hora_fim,
 b.ds_observacao,
 c.nr_sequencia nr_seq_paciente,
 c.nm_paciente,
 c.cpf_paciente,
 c.fone_paciente
from medico a,
 consulta b,
 paciente c
where b.nr_seq_medico = a.nr_sequencia
and c.nr_sequencia = b.nr_seq_paciente;
A partir de agora, os comandos de seleção de dados ficam mais fáceis. Por 
exemplo, se desejarmos uma lista de médicos com todos os pacientes que já se 
consultaram ou vão se consultar, apenas buscamos os campos que precisamos sem 
necessidade de acessar mais de uma tabela.
select distinct nm_medico, nm_paciente 
from medico_consulta_paciente
order by nm_medico
E o resultado é:
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
177
NM_MEDICO NM_PACIENTE 
---------------------------------------- ---------------
Cabral Rodrigues Augusto Pereira
Cabral Rodrigues Marcio Junior Silva
Cabral Rodrigues Josiane Silva
Fernando Ferreira Marcio Junior Silva
Fernando Ferreira Marta Campos
Fernando Ferreira Marcos Rocha
Fernando Ferreira Maria Quadros
Jader Fonseca Josiane Silva
Jader Fonseca Maria Quadros
Jader Fonseca Juca Pedro
Jader Fonseca Marcio Junior Silva
Jader Fonseca Juca Pedro
Jader Fonseca Tiago Prado
Marleide Benta Marcio Junior Silva
Marleide Benta Priscila Chaves
Marleide Benta Pedro Almeida
Perceba que foi utilizado o comando distinct no select porque um paciente 
pode ter consultado mais de uma vez um médico e caso o distinct seja retirado, 
alguns registros irão se repetir.
O comando distinct normalmente está relacionado a uma performance baixa 
no momento da execução do mesmo. Ele torna, em alguns casos, o trabalho de retornar 
um resultado um pouco mais lento que o normal. Utilize-o somente em casos quando for 
extremamente necessário.
ATENCAO
3 PL/SQL
Até este momento você aprendeu a utilizar comandos SQL para criar 
estruturas de dados como tabelas, índices, sequences, views etc. Outro foco era a 
manipulação de dados, com comandos de inserção, atualização, deleção e seleção.
A partir deste momento, vamos falar de uma linguagem procedural, com 
comandos de if/else, while, for etc. Estamos nos referindo a PL/SQL, a linguagem 
implementada pelo banco de dados Oracle.
Outros bancos também têm suas linguagens próprias, como é o caso 
do PostgreSQL que utiliza o PgSQL como sua linguagem de programação. Essa 
abordagem traz alguns benefícios, dentre eles uma melhoria no desempenho e 
uma centralização das regras de negócio.
UNIDADE 3 | SQL
178
Em relação à centralização de regras de negócio, Rob e Coronel (2011, p. 
360) fazem uma breve consideração.
Uma abordagem melhor é isolar o códigofundamental e, em seguida, 
fazer com que todos os aplicativos chamem esse código compartilhado. 
A vantagem de tal abordagem modular é que o código de aplicação é 
isolado em um único programa, resultando, assim, em melhor controle 
de manutenção e lógica. 
Quanto à melhoria de desempenho, podemos considerar um fato bem básico. 
Quando os dados são todos processados dentro do próprio banco de dados, eles 
não trafegam pela rede, diminuindo bastante o tempo de resposta. Claro que essa 
afirmação pode sofrer variações, pois ela não é verdadeira no caso em que a máquina 
que hospeda o banco de dados não tenha um bom poder de processamento.
Focando especificamente no PL/SQL, vamos ver apenas quatro recursos de 
programação: procedure, function, package e triggers. A linguagem PL/SQL possui 
uma série de outros recursos, entretanto o que vamos mencionar faz parte da base 
da linguagem e é pré-requisito para adquirir conhecimentos mais avançados.
3.1 PROCEDURES
Uma procedure é um agrupamento de comandos SQL que podem conter 
estruturas de seleção, controle e repetição para gerenciá-los. Uma das características 
é que uma procedure pode fazer alterações de dados em tabelas e não retorna um 
valor no final do seu processamento.
Como a linguagem PL/SQL tem vários recursos no que se refere à 
programação, não vamos mais trabalhar com a ideia de sintaxe dos comandos. Ao 
invés disso, vamos apresentar um exemplo de uma necessidade acompanhada da 
implementação do código fonte.
Voltando para o nosso modelo de dados, suponhamos que seja necessário 
atrasar uma determinada consulta em um dia. Podemos criar uma procedure 
que recebe o código da consulta (nr_sequencia da tabela consulta) e executa um 
update no horário de início e horário de fim. Caso a solicitação de atraso tenha sido 
solicitada pelo paciente, colocar uma mensagem no campo ds_observacao com os 
seguintes dizeres: “Paciente solicitou alteração de data da consulta. A data antiga 
era em data_antiga”.
O código fonte a seguir mostra a implementação desta procedure.
create or replace procedure p_atrasa_consulta
 ( p_consulta consulta.nr_sequencia%type
 , p_solic_paciente varchar2) is
 l_data_hora_inicio_ant date;
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
179
begin
-- se atraso foi solicitado pelo paciente
-- busca as datas antigas para armazenar no campo ds_
observacao
if(p_solic_paciente = 'S') then
 select dt_hora_inicio
 into l_data_hora_inicio_ant
 from consulta
 where nr_sequencia = p_consulta;
 -- atualiza o campo de observação
 update consulta set ds_observacao = 'Paciente solicitou 
alteração de consulta. A data antiga era ' || to_char(l_data_
hora_inicio_ant, 'DD/MM/YYYY HH24:MI:SS')
 where nr_sequencia = p_consulta;
end if;
-- atrasa a consulta em um dia
update consulta set dt_hora_inicio = dt_hora_inicio + 1, 
dt_hora_fim	=	dt_hora_fim	+	1
where nr_sequencia = p_consulta;
end p_atrasa_consulta;
Se sua base de dados contém uma consulta cujo nr_sequencia = 110, o 
comando a seguir executa a procedure, fazendo com que a data seja alterada e a 
observação gerada.
exec p_atrasa_consulta(110, ‘S’);
commit;
3.2 FUNCTION
Uma function tem os mesmos princípios de uma procedure, porém retorna 
um valor no final de sua execução. Vamos a um exemplo prático: todo CPF válido 
deve ter 11 caracteres. Vamos fazer uma function que recebe um CPF e retorna S no 
caso de ter 11 caracteres e N para qualquer outro caso. Segue o código fonte.
create or replace function f_valida_cpf(p_cpf varchar2) 
return varchar2 is
 l_result varchar2(1);
UNIDADE 3 | SQL
180
begin
l_result := 'N';
if(length(p_cpf) = 11) then
 l_result := 'S';
end if;
return l_result;
end f_valida_cpf;
Para testar a função você pode usar o comando a seguir, variando o número 
do CPF que é passado para a função.
select f_valida_cpf(‘numero do cpf’) from dual;
Para fins de esclarecimento, o número do CPF possui uma fórmula para validação. 
Como nosso foco aqui é meramente educativo, decidimos validar apenas a presença de 11 
caracteres.
ATENCAO
3.3 PACKAGES
Até o momento, vimos o conceito de procedure e function. Tivemos um exemplo 
de declaração de cada tipo para elucidar a forma de trabalho de uma linguagem de 
banco de dados procedural. Com o passar do tempo, quando programamos, muitas 
vezes, percebemos que determinada function está ligada logicamente a um conceito 
que uma procedure pode abranger.
Nesse ponto entra o conceito de package. É um agrupamento de procedures, 
functions e outros objetos que estão relacionados a alguma situação específica. É uma 
espécie de empacotamento de funcionalidades com um foco comum. Segue uma package 
com o nome teste_package.
create or replace package teste_package is
			--	definição	de	functions	e	procedures	(somente	a	definição)
create or replace function f_valida_cpf(p_cpf varchar2) 
returnvarchar2;
end teste_package;
create or replace package body teste_package is
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
181
--	definição	de	functions	e	procedures	(definição	e	implementação)
create function f_valida_cpf(p_cpf varchar2) returnvarchar2is
 l_result varchar2(1);
 begin
 l_result := 'N';
 if(length(p_cpf) = 11) then
 l_result := 'S';
 end if;
 return l_result;
end f_valida_cpf;
end teste_package;
Perceba que a criação de uma package é dividida em dois momentos. O 
primeiro contém apenas o cabeçalho das procedures ou functions e o segundo trata 
da definição propriamente dita. A função f_valida_cpf foi incluída para fins de 
demonstração. Se uma function ou procedure for criada dentro do body de uma 
package e não for declarada no cabeçalho, a mesma não poderá ser acessada por 
comandos que estejam fora da package. Segue um exemplo para executar a função 
criada em uma estrutura de package.
select teste_package.f_valida_cpf(‘numero do cpf’) from 
dual;
3.4 TRIGGERS
Uma trigger tem a finalidade de executar alguma rotina de programação 
quando são feitas manutenções ou inserções de registros em tabelas. É basicamente 
um gatilho que é acionado conforme foi designado na sua programação.
É possível, por exemplo, a criação de uma trigger que execute determinado 
comando quando for dado update em alguma tabela. Isso vale também para ações 
de insert e delete.
Algumas aplicações práticas são: log dos dados alterados, alimentação de 
dados redundantes, validação das informações inseridas ou atualizadas etc. Nosso 
exemplo irá supostamente tratar a inserção de CPF inválido na tabela paciente. 
Sempre que um CPF for considerado inválido, o Oracle emitirá uma mensagem de 
erro. Segue a implementação.
UNIDADE 3 | SQL
182
create or replace trigger valida_cpf_paciente
before insert or update on paciente
for each row
begin
if(f_valida_cpf(:new.cpf_paciente) = 'N') then
 raise_application_error(-20500, 'CPF inválido');
end if;
end valida_cpf_paciente;
Uma trigger tem uma forma interessante de acessar os valores da tabela 
que está sendo alterada. Ela usa :new.nome_do_campo para buscar o valor após a 
alteração e :old.nome_do_campo para retornar o valor antigo. Para executar a trigger, 
realize um update na tabela paciente em algum CPF como no exemplo a seguir.
update paciente set cpf_paciente = '565' where nr_
sequencia = 11;
Esse comando fará com que a trigger seja disparada e retorne um erro, pois 
o CPF só tem três caracteres. Não se esqueça de trocar o nr_sequencia = 11 para 
nr_sequencia = algum nr_sequencia cadastrado na sua base. Se acaso tudo estiver 
certo, a trigger não irá gerar erro algum.
Caro(a) acadêmico(a)! A Leitura Complementar a seguir traz uma visão sobre 
performance em PL/SQL. Ele trata de duas questões: a troca de contexto e o manutenção de 
dados em tabelas temporárias. Entenda a troca de contexto como um comando SQL sendo 
executado dentro de um PL/SQL e tabelas temporárias como sendo a mesma filosofia de 
uma tabela normal, porém seus dados são temporários, ou seja, quando o scritp terminar de 
executar a tabela estará vazia. 
UNI
TÓPICO 3 | OUTRAS ESTRUTURASDE DADOS
183
LEITURA COMPLEMENTAR
DICAS PARA OBTER PERFORMANCE EM PL/SQL
O primeiro tópico que eu gostaria de abordar é questão da troca de 
contexto. Muita gente não sabe disso, então convém citar uma breve introdução. 
No Oracle, existem duas engines distintas que vão se encarregar de fazer o parse 
do seu código e executá-lo: a engine SQL e a engine PL/SQL. Acontece que, quando 
você envia para o Oracle um comando SQL, ele vai diretamente para a engine SQL 
para executar a validação do comando, o parse, a elaboração do plano e por fim a 
execução e fetch. Agora, se você envia um comando PL/SQL, tudo aquilo que não 
for relacionado ao SQL é executado pela engine de PL/SQL, como por exemplo, 
alocação de memória para arrays, atribuição de variáveis, cálculos, etc. Porém, 
quando o seu bloco chega em uma instrução SQL, ele vai simplesmente passar a 
informação adiante para a engine SQL processar. Neste evento ocorre a chamada 
troca de contexto, que nada mais é o ponto onde a engine PL/SQL para e passa o 
controle para a engine SQL.
O que acontece é que esta troca de contexto tem um custo para o banco... no 
meu banco eu fui capaz de medir em uma situação muito especifica um tempo de troca 
de contexto da ordem de 18us (microssegundos). Parece pequeno, mas não é. Pense 
neste tempo dentro de um loop for que executa um milhão de vezes, por exemplo.
Um caso típico de troca de contexto que pode ser otimizada é o “Select ... 
Into ... From Dual;”. Muita gente utiliza este comando com o objetivo de atribuir 
valores a variáveis, quando na verdade deveria estar simplesmente fazendo a 
atribuição da forma “x := y;” que não envolve nenhuma troca de contexto.
Remover a troca de contexto desnecessárias de blocos PL/SQL em processos 
intensivos foi responsável, na minha experiência prática, por ganhos de até 30% 
na velocidade de execução. Já houve um tempo que o PL/SQL não dispunha da 
maioria das funções disponíveis no SQL, porém hoje em dia a grande maioria está 
implementada nas duas engines e, portanto, não há mais necessidade de fazer 
chamadas com Select from dual. Uma exceção que eu poderia citar é a função 
REVERSE (que inverte uma string) que, pelo menos na versão do banco que eu 
estou trabalhando (10g R2), não existe no PL/SQL. Podem existir outras exceções, 
mas o importante é remover aqueles pontos que não há necessidade.
Outra questão que gera grande degradação de performance em processos é o 
uso excessivo de tabelas temporárias. Eu sei que esta é uma prática herdada de outros 
bancos, mas no Oracle o abuso destas tabelas pode dar muita dor de cabeça. Num 
outro caso de tuning de sucesso que eu executei, uma tabela temporária estava sendo 
utilizada para passar valores múltiplos para uma procedure. Esta é uma abordagem 
muito comum em Sybase e SQL Server, porém em Oracle o correto é passar os valores 
através de um array, especialmente pelo que vou descrever a seguir.
UNIDADE 3 | SQL
184
A tabela temporária funcionava muito bem quando havia uma única 
chamada de procedure, porém, quando o sistema evoluiu houve a necessidade 
de chamar este processo dentro de um processo externo que fazia um loop em 
certa massa de dados. Além disso, como vários pontos do processo usavam 
tabelas temporárias, não era possível fazer truncate de nenhuma tabela, pois este 
comando gera um commit implícito que esvazia todas as tabelas temporárias da 
sessão (exceto as on commit preserve rows, o que não é o caso).
Enfim, o efeito colateral desta modelagem é que antes de cada chamada 
da procedure era necessário fazer um delete desta temporária. E, embora o fato 
das tabelas temporárias serem minimamente logadas, ou seja, gerarem o mínimo 
de undo, elas geram redo e redo gera undo. Além disso, a operação de delete é 
uma daquelas que mais gera undo e redo nas temporárias. No fim das contas, o 
problema de performance que encontrávamos neste processo se devia ao excessivo 
uso de redo e undo logs. A solução, para não quebrar a compatibilidade com o 
código existente, foi criar parametros opcionais para que a procedure aceitasse 
também arrays como metodo de passagem de valores.
A alteração teve um resultado extremamente positivo, resultando no ganho 
de até 40% no desempenho da procedure em questão.
Sei que estas dicas são meio vagas sem um caso de estudo acompanhando, 
portanto em breve espero postar dois casos simples reproduzindo estas situações 
que comentei. Fiquem ligados!
FONTE: Disponível em: <http://oraculodosul.blogspot.com.br/2011/11/performance-com-plsql.
html>. Acesso em: 6 fev. 2013. 
185
Neste tópico, você viu que:
• Para complementar o gerenciamento e manipulação de dados existem outras 
estruturas de dados como índices, sequences e views.
• Índices servem exclusivamente para questões relacionadas à recuperação de 
dados em um banco de dados. Tem um grande compromisso com a performance, 
ou seja, o rápido retorno na solicitação de algum dado.
• PL/SQL é uma linguagem procedural utilizada pelo Oracle para permitir a criação 
de rotinas com características idênticas à de uma linguagem de programação. 
Ficam armazenadas e são executadas no servidor de banco de dados.
• Triggers são funções que são chamadas automaticamente durante a alteração de 
dados em tabelas conforme a sua programação.
RESUMO DO TÓPICO 3
186
AUTOATIVIDADE
1 Defina o que é uma sequence em um banco de dados.
2 O que é uma view?
3 De acordo com o que foi estudado, descreva o que é PL/SQL.
4 Qual é a principal diferença entre procedures e functions?
5 O que é uma trigger e quando ela é executada?
187
REFERÊNCIAS
DATE, Christophe J.. Introdução a sistemas de bancos de dados. 8. ed. São 
Paulo: Elsevier, 2003.
ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. 6. ed. 
São Paulo: Pearson, 2011.
HEUSER, Carlos Alberto. Projeto de banco de dados. Porto Alegre: Instituto de 
informática da UFRGS, 2001.
KORTH, Henry F.; SILBERSCHATZ, Abraham. Sistemas de bancos de dados. 2. 
ed. São Paulo: Makron Books, 1995.
MACHADO, F. N. R. Projeto de banco de dados: uma visão prática. São Paulo: 
Érica, 2009.
__________. Banco de dados: projeto e implementação. São Paulo: Érica, 2004.
MILANI, André. MySQL: Guia do pogramador. São Paulo: Novatec, 2007.
MORELLI, Eduardo M. Terra. Oracle 8: SQL, PL/SQL e Administração. São 
Paulo: Érica, 2000.
ROB, Peter; CORONEL, Carlos. Sistemas de banco de dados: Projeto, 
implementação e administração. São Paulo: Cengage Learning, 2011.
SIEBRA. Sandra de Albuquerque. Banco de dados. v. 2, Recife: UFRPE, 2010.
SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de 
banco de dados. 5. ed. São Paulo: Campus, 2006.
188
ANOTAÇÕES
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
________________________________________________________________________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
189
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________

Mais conteúdos dessa disciplina