Escolar Documentos
Profissional Documentos
Cultura Documentos
de Dados
2013
Copyright © UNIASSELVI 2013
Elaboração:
Prof. Décio Lehmkuhl
Prof. Djayson Roberto Eger
005.75
L523p Lehmkuhl, Décio
Princípios de banco de dados / Décio Lehmkuhl; Djayson Roberto.
Indaial : Uniasselvi, 2013.
189 p. : il
1. Banco de dados.
I. Centro Universitário Leonardo da Vinci.
Impresso por:
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.
III
UNI
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.
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.
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.
IV
V
VI
Sumário
UNIDADE 1 – FUNDAMENTOS DE BANCO DE DADOS ........................................................... 1
VII
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
VIII
4.3 CHAVE ALTERNATIVA . ............................................................................................................... 105
LEITURA COMPLEMENTAR ............................................................................................................... 106
RESUMO DO TÓPICO 4 ....................................................................................................................... 108
AUTOATIVIDADE ................................................................................................................................. 109
IX
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
X
UNIDADE 1
FUNDAMENTOS DE BANCO
DE DADOS
OBJETIVOS DE APRENDIZAGEM
Esta unidade tem por objetivos:
PLANO DE ESTUDOS
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.
1
2
UNIDADE 1
TÓPICO 1
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)
FONTE: Os autores
3
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
FONTE: Os autores
4
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
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?
FONTE: Os autores
5
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
DICAS
6
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
FONTE: Os autores
7
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
Com muito trabalho, ele consegue examinar todas as suas pastas e 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.
8
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
FONTE: Os autores
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.
FONTE: Os autores
10
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
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.
11
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
FIGURA 9 – SGBD
FONTE: Os autores
FONTE: Os autores
12
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
FONTE: Os autores
13
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
14
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
15
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
• 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.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.
16
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
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.
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.
17
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
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>.
5.3 POSTGRESQL
É 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.
UNI
O QUE É O POSTGRESQL?
HISTÓRICO DO POSTGRESQL
18
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
O POSTGRESQL HOJE
19
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
COMO COMEÇAR?
20
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
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.
21
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
UNI
LEITURA COMPLEMENTAR
22
TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS
23
RESUMO DO TÓPICO 1
Neste tópico, você viu que:
• Algumas dicas são importantes para ter sucesso na escolha do banco de dados
a ser utilizado.
24
AUTOATIVIDADE
5 O que faz uma pessoa que tem o cargo de Administrador do Banco de Dados
(DBA – Database Administrator)?
25
26
UNIDADE 1
TÓPICO 2
1 INTRODUÇÃO
“O descontentamento é o primeiro passo na evolução de um homem
ou de uma nação”. (Oscar Wilde)
Bons estudos!
27
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
PAI
FONTE: Os autores
28
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
RAIZ
FONTE: Os autores
RAIZ
FONTE: Os autores
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.
29
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
FONTE: Os autores
30
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
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.
FONTE: Os autores
31
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
FONTE: Os autores
Para detalhar melhor qual foi a origem deste tipo de banco de dados,
Silberschatz, Korth e Sudarshan (2006) nos apresentam um breve relato.
E
IMPORTANT
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.
33
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
O QUE ACONTECEU?
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.
34
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
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.
35
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
TURO S
ESTUDOS FU
FONTE: Os autores
36
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
TURO S
ESTUDOS FU
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.
37
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
SISTEMAS PARALELOS
38
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
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.
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.
NOTA
39
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
Vantagens Desvantagens
40
TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS
LEITURA COMPLEMENTAR
41
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
42
RESUMO DO TÓPICO 2
Neste tópico, você viu que:
43
AUTOATIVIDADE
44
UNIDADE 1
TÓPICO 3
TENDÊNCIAS E PERSPECTIVAS
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 apontadas como tendência para o futuro. Será
percebido que algumas delas já fazem parte do cotidiano em algumas áreas, porém
ainda precisam evoluir.
45
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
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.
46
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
UNI
47
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
48
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
UNI
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.
49
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
50
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
UNI
Projeto GMOD
Citrina
BioMart
51
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
Chado
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.
52
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
Rob e Coronel (2011, p.615) fazem um relato do cenário onde a XML pode
estar envolvida.
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.
53
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
54
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
55
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.
UNI
56
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
57
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
UNI
Tudo é feito para melhorar a tomada de decisão das empresas. O texto a seguir
mostra como isso é possível.
58
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
59
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
UNI
60
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
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.
61
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
62
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
UNI
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.
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.
63
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.
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.
64
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
LEITURA COMPLEMENTAR
Tiago Curcio
65
UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS
66
TÓPICO 3 | TENDÊNCIAS E PERSPECTIVAS
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.
67
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.
68
AUTOATIVIDADE
69
70
UNIDADE 2
MODELAGEM DE DADOS
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
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.
71
72
UNIDADE 2
TÓPICO 1
MODELOS DE DADOS
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.
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.
73
UNIDADE 2 | MODELAGEM DE DADOS
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.
FONTE: Os autores
74
TÓPICO 1 | MODELOS DE DADOS
3 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.
75
UNIDADE 2 | MODELAGEM DE DADOS
FONTE: Os autores
76
TÓPICO 1 | MODELOS DE DADOS
UNI
Caso você não tenha entendido o script gerado, não se preocupe, pois
abordaremos mais detalhes sobre este assunto na Unidade 3.
LEITURA COMPLEMENTAR
78
TÓPICO 1 | MODELOS DE DADOS
79
RESUMO DO TÓPICO 1
Neste tópico, você viu que:
• 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.
80
AUTOATIVIDADE
( ) Modelos conceituais.
( ) Modelos lógicos.
( ) Modelos físicos.
81
82
UNIDADE 2 TÓPICO 2
MODELO ENTIDADE-RELACIONAMENTO
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.
83
UNIDADE 2 | MODELAGEM DE DADOS
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.
84
TÓPICO 2 | MODELO ENTIDADE-RELACIONAMENTO
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”.
FIGURA 33 – ENTIDADES
FONTE: Os autores
UNI
85
UNIDADE 2 | MODELAGEM DE DADOS
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 [...]”.
FONTE: Os autores
86
TÓPICO 2 | MODELO ENTIDADE-RELACIONAMENTO
UNI
Para que a entidade seja relevante ao projeto MER, ela deverá ter pelo menos um
ou mais atributos.
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.
FONTE: Os autores
87
UNIDADE 2 | MODELAGEM DE DADOS
88
TÓPICO 2 | MODELO ENTIDADE-RELACIONAMENTO
89
UNIDADE 2 | MODELAGEM DE DADOS
LEITURA COMPLEMENTAR
90
RESUMO DO TÓPICO 2
Neste tópico, você viu que:
• O MER foi originalmente definido por Peter Chen em 1976, baseado na teoria
relacional criada em 1970 por Codd.
91
AUTOATIVIDADE
4 Basicamente existem dois tipos de atributos, quais são eles e para que servem?
92
UNIDADE 2
TÓPICO 3
TIPOS DE RELACIONAMENTOS
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.
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âncias e os que indicarão obrigatoriedade da participação.
Para que o conceito fique mais claro, vamos observar alguns exemplos
práticos. Observe a figura:
FONTE: Os autores
93
UNIDADE 2 | MODELAGEM DE DADOS
FONTE: Os autores
FONTE: Os autores
94
TÓPICO 3 | TIPOS DE RELACIONAMENTOS
3 GRAU DO RELACIONAMENTO
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.
FONTE: Os autores
95
UNIDADE 2 | MODELAGEM DE DADOS
FONTE: Os autores
FONTE: Os autores
96
TÓPICO 3 | TIPOS DE RELACIONAMENTOS
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.
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:
FIGURA 42 – AUTORRELACIONAMENTO
FONTE: Os autores
97
UNIDADE 2 | MODELAGEM DE DADOS
FIGURA 43 – AUTORRELACIONAMENTO
98
RESUMO DO TÓPICO 3
Neste tópico, você viu que:
99
AUTOATIVIDADE
100
UNIDADE 2
TÓPICO 4
MODELO RELACIONAL
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.
É 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.
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.
101
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
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.
102
TÓPICO 4 | MODELO RELACIONAL
FONTE: Os autores
103
UNIDADE 2 | MODELAGEM DE DADOS
FUNCIONÁRIO
ID_PESSOA PK NOME_FUNCIONÁRIO ID_DEPARTAMENTO FK
DEPARTAMENTO
ID_DEPARTAMENTO PK NOME_DEPARTAMENTO
1021 Financeiro
1022 Recursos Humanos
1023 Operacional
1024 Direção
FONTE: Os autores
104
TÓPICO 4 | MODELO RELACIONAL
FONTE: Os autores
UNI
Em alguns SGDB, é possível criar uma chave estrangeira referenciando uma chave
alternativa.
105
UNIDADE 2 | MODELAGEM DE DADOS
LEITURA COMPLEMENTAR
As 12 Regras de Codd
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 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 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 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.
107
RESUMO DO TÓPICO 4
Neste tópico, você viu que:
• 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.
108
AUTOATIVIDADE
109
110
UNIDADE 2
TÓPICO 5
NORMALIZAÇÃO DE DADOS
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 que é normalização?
111
UNIDADE 2 | MODELAGEM DE DADOS
112
TÓPICO 5 | NORMALIZAÇÃO DE DADOS
Por exemplo, para que uma tabela esteja na 2FN, ela obrigatoriamente
deve estar na 1FN e assim por diante.
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.
113
UNIDADE 2 | MODELAGEM DE DADOS
Para exemplificar, Siebra (2010) usa uma suposição onde é criada uma
relação de empregados de uma empresa.
114
TÓPICO 5 | NORMALIZAÇÃO DE DADOS
→ Aplicação da 1FN
• Entidades na 1FN
→ Aplicação da 2FN
• Entidades na 2FN
→ Aplicação da 3FN
115
UNIDADE 2 | MODELAGEM DE DADOS
• Entidades na 3FN
→ Aplicação da FNBC
• Entidades na FNBC
→ Aplicação do 4FN
• Entidade na 4FN
→ Aplicação da 5FN
116
TÓPICO 5 | NORMALIZAÇÃO DE DADOS
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.
117
UNIDADE 2 | MODELAGEM DE DADOS
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.
118
TÓPICO 5 | NORMALIZAÇÃO DE DADOS
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.
119
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
120
RESUMO DO TÓPICO 5
Neste tópico, você viu que:
• A entidade que não for devidamente normalizada com base nas formas normais
corre o risco de sofrer algumas anomalias.
121
AUTOATIVIDADE
122
UNIDADE 3
SQL
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
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.
123
124
UNIDADE 3
TÓPICO 1
1 INTRODUÇÃO
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.
125
UNIDADE 3 | SQL
2 O QUE É SQL
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.
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.
126
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
Segue figura com o modelo de dados que será utilizado nesta unidade.
FONTE: Os autores
127
UNIDADE 3 | SQL
ATENCAO
FONTE: Os autores
128
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
FONTE: Os autores
129
UNIDADE 3 | SQL
Tipo Descrição
Cadeia de caracteres de tamanho fixo n. O default é 1 e
char (n)
o máximo, 255.
Cadeia de caracteres de tamanho variável com o
máximo de n e pode ter o valor de até 4.000. Para que
varchar2(n) duas variáveis desse tipo sejam consideradas iguais,
elas devem possuir, além do mesmo conteúdo, o mesmo
tamanho.
Cadeia de caracteres de tamanho variável com o
long máximo de 2 gigabytes. Só pode existir um campo desse
tipo por tabela.
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
raw e long raw 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.
Valores numéricos em que p indica a precisão (máximo
de 38) e indica a escala (número de casas decimais) que
number(p, e)
varia de -84 a + 127. Por exemplo, number(5,2) especifica
um número na faixa entre -999,99 e +999,99.
Armazena data e hora, incluindo século, ano, mês, dia,
date
hora, minuto e segundo. Ocupam 7 bytes.
130
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
FONTE: Os autores
131
UNIDADE 3 | SQL
FONTE: Os autores
E
IMPORTANT
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 (“;”).
desc nome_do_objeto;
desc paciente;
132
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
FONTE: Os autores
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;
FONTE: Os autores
133
UNIDADE 3 | SQL
Como pôde ser visto, a tabela paciente não existe mais na nossa base de
dados.
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.
FONTE: Os autores
134
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
E
IMPORTANT
135
UNIDADE 3 | SQL
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.
De uma forma resumida, podemos dizer que restrição é tudo o que faz
alguma validação ou checagem em um conjunto de dados.
136
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
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.
ATENCAO
138
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
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.
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).
139
UNIDADE 3 | SQL
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.
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.
UNI
140
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
LEITURA COMPLEMENTAR
O QUE É SQL
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.
História do SQL
141
UNIDADE 3 | SQL
142
TÓPICO 1 | INTRODUÇÃO À LINGUAGEM SQL
143
RESUMO DO TÓPICO 1
• A criação de tabelas pode ser feita de várias formas, com algumas variações de
comandos que têm o mesmo resultado.
144
AUTOATIVIDADE
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?
5 Crie um comando para excluir o campo que você criou na pergunta anterior.
145
146
UNIDADE 3
TÓPICO 2
1 INTRODUÇÃO
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.
Bons estudos!
147
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.
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.
O resultado é:
DICAS
Para 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'
148
TÓPICO 2 | MANUTENÇÃO DOS DADOS
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.
O único campo que deve aceitar valores nulos é o fone paciente. Vamos
tentar fazer um insert deixando o cfp_paciente com valor null.
Como pode ser visto acima, o Oracle não permite que o campo seja nulo,
confirmando que a validação programada funciona corretamente.
149
UNIDADE 3 | SQL
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.
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.
150
TÓPICO 2 | MANUTENÇÃO DOS 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).
DICAS
151
UNIDADE 3 | SQL
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.
DICAS
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.
152
TÓPICO 2 | MANUTENÇÃO DOS DADOS
Função Descrição
Converte um campo numérico ou data em uma
to_char(número ou data,
cadeia de caracteres do tipo varchar2, com o
‘formato’)
formato definido pela variável formato.
Converte uma cadeia de caracteres numérica em
to_number(char)
número inteiro
Converte uma cadeia de caracteres, especificando
uma data, no tipo date, de acordo com a variável
to_date(char, ‘formato’)
formato (se omitida, é assumido ‘DD-MMM-
AA’).
Converte um null que encontre na coluna, em um
nvl(coluna, valor)
valor especificado.
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)
153
UNIDADE 3 | SQL
Para exemplificar o uso de uma função que trabalhe com datas vamos ao
seguinte comando.
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/>.
O novo telefone dele deverá ser (47) 56897412. Segue o comando update.
154
TÓPICO 2 | MANUTENÇÃO DOS DADOS
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.
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.
155
UNIDADE 3 | SQL
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.
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.
156
TÓPICO 2 | MANUTENÇÃO DOS DADOS
157
UNIDADE 3 | SQL
158
TÓPICO 2 | MANUTENÇÃO DOS DADOS
159
UNIDADE 3 | SQL
160
TÓPICO 2 | MANUTENÇÃO DOS DADOS
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;
NM_MEDICO
------------------------------------------------------
Jader Fonseca
Fernando Ferreira
Marleide Benta
Cabral Rodrigues
161
UNIDADE 3 | SQL
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:
NM_MEDICO COUNT(A.NR_SEQUENCIA)
------------------------ --------------------
Cabral Rodrigues 2
Jader Fonseca 2
163
UNIDADE 3 | SQL
UNI
LEITURA COMPLEMENTAR
Funcionamento
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.
164
TÓPICO 2 | MANUTENÇÃO DOS DADOS
165
RESUMO DO TÓPICO 2
166
AUTOATIVIDADE
2 Tente apagar algum médico que possua uma consulta. É possível fazer isso?
Se não for, explique o motivo.
5 Que comando pode ser utilizado para contar registros em um select que
utiliza uma função de agrupamento de dados?
167
168
UNIDADE 3
TÓPICO 3
1 INTRODUÇÃO
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.
169
UNIDADE 3 | SQL
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).
170
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
UNI
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.
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.
171
UNIDADE 3 | SQL
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.
Opção Descrição
Nome da sequência que não pode ser o nome de uma
sequencia
tabela ou view.
Especifica de quanto será o incremento ou decremento
increment by n
da sequência. O default é 1.
start with n Especifica o primeiro número a ser gerado. O default é 1.
Especifica o valor máximo que a sequência pode
maxvalue n
assumir. O default é nomaxvalue, indo até 1027.
172
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
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.
NEXTVAL
----------
1
CURRVAL
----------
1
173
UNIDADE 3 | SQL
DICAS
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.
UNI
SEQUÊNCIAS ORACLE
174
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
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.
175
UNIDADE 3 | SQL
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.
E o resultado é:
176
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
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
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.
177
UNIDADE 3 | SQL
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.
( p_consulta consulta.nr_sequencia%type
, p_solic_paciente varchar2) is
l_data_hora_inicio_ant date;
178
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
begin
select dt_hora_inicio
into l_data_hora_inicio_ant
from consulta
where nr_sequencia = p_consulta;
end if;
end p_atrasa_consulta;
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.
179
UNIDADE 3 | SQL
begin
l_result := 'N';
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.
ATENCAO
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.
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.
end teste_package;
180
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
l_result varchar2(1);
begin
l_result := 'N';
return l_result;
end f_valida_cpf;
end teste_package;
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.
181
UNIDADE 3 | SQL
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.
UNI
182
TÓPICO 3 | OUTRAS ESTRUTURAS DE DADOS
LEITURA COMPLEMENTAR
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.
183
UNIDADE 3 | SQL
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!
184
RESUMO DO TÓPICO 3
• 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.
185
AUTOATIVIDADE
186
REFERÊNCIAS
DATE, Christophe J.. Introdução a sistemas de bancos de dados. 8. ed. São
Paulo: Elsevier, 2003.
187
ANOTAÇÕES
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
188
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
189