Você está na página 1de 293

1

www.tiagodemelo.info
Banco de Dados I
Curso de Graduao em Engenharia da Computao
Segundo quadrimestre de 2008
Prof. Msc. Tiago Eugenio de Melo
tiago@comunidadesol.org ou tiagodemelo@gmail.com
A primeira verso deste material foi elaborada pelo professor Alexandre Guimares.
2
www.tiagodemelo.info
Sumrio

Conceitos Bsicos de Banco de Dados

Modelo de Entidade-Relacionamento

Modelo Entidade-Relacionamento Estendido

Modelo Relacional

Ferramenta de Modelagem

Structured Query Language (SQL)


3
www.tiagodemelo.info
Bibliografia

Sistemas de Gerncia de Banco de Dados e Modelagem de Dados

A First Course in Database Systems

Ullman, J & Widom, J

Prentice Hall, 2001, 3


th
ed.

Database Systems Concepts

Korth, H. F.; Silberschatz, A; Sudarshan, S

McGraw Hill, Inc., 2005, 5


th
ed.

Fundamentals of Database Systems

Elmasri, R; Navathe, S

Benjamin Cummings, 2003, 4


th
ed.

Database Management Systems

Ramakrishnan, R

McGraw Hill, 2003, 3


rd
ed.
4
www.tiagodemelo.info
Bibliografia

Livros de Banco de Dados em Portugus

Sistemas de banco de Dados

Korth, H. F.; Silberschatz, A; Sudarshan, S

Editora Campus, 2006.

Introduo a Sistemas de Bancos de Dados

Date, C. J.

Editora Campus, 8a ed, 2004.


5
www.tiagodemelo.info
Conceitos Bsicos: Banco de Dados

Banco de Dados (BD) se transformou em um componente essencial do dia-


a-dia na sociedade moderna.
Exemplos:

ir a um banco para fazer depsito ou retirada de dinheiro.

fazer a reserva em um hotel ou em uma companhia area.

fazer pesquisa de itens em uma biblioteca computadorizada.

pesquisar preos de itens em um supermercado.

As atividades acima so exemplos de aplicaes tradicionais de BD. Onde


a maioria das informaes so armazenadas atravs de textos ou nmeros.

H poucos anos atrs, a tecnologia permitiu novas aplicaes para BD


Exemplos:

: armazena figuras, som e vdeo.

- Sistemas de informaes geogrficas: armazenam e analisam mapas,


tempo e imagem de satlite.

: controle de cho de fbrica e processos de


manufatura.
6
www.tiagodemelo.info
AUMENTO DE COMPETITIVIDADE
VANTAGEM ESTRATGICA
Passagem Area
Supermercado
Avano tecnolgico
Tempo
Hardware
Software
falta de mtodos padres
falta de ferramentas produtivas
Sistemas de Informao
7
www.tiagodemelo.info
Conceitos Bsicos: Banco de Dados

uma coleo de dados inter-relacionados, representando


informaes sobre um domnio especfico (conceito geral)

um BD representa aspectos do mundo real. Mudanas no mundo real


so refletidas no BD.

um BD uma coleo lgica e coerente de dados com relacionamentos


intrnsecos.
um conjunto de dados sem nenhum relacionamento, no pode ser
considerado um BD.

um BD projetado, construdo e mantido para uma proposta


especfica. direcionado a um grupo de usurios de uma determinada
aplicao.

um BD pode possuir qualquer tamanho/complexidade.

Em outras palavras, um BD tem alguma fonte onde os dados so


derivados, algum grau de interao com eventos no mundo real, e
uma audincia interessada no contedo desse BD
8
www.tiagodemelo.info
Conceitos Bsicos: Banco de Dados

Criao/Controle de um BD:

manual

por um grupo de aplicaes especficas

Sistema de Gerenciamento de Banco de Dados ( ): que uma


coleo de programas que permite aos usurios criar e manter um BD
9
www.tiagodemelo.info
Aplicao Aplicao
SGBD
B C A
Meta Dados
Aplicao Aplicao
A B C
os aplicativos acessam e
manipulam os arquivos
diretamente nos discos
os aplicativos acessam e
manipulam as informaes
atravs dos SGBDs
SO
Sistemas de Informao:
10
www.tiagodemelo.info
Sistemas de Informao baseados em Arquivos

tipo de arquivo/formato do registro escolhido de acordo


com as de uma aplicao

problemas aparecem na manuteno, evoluo ou


integrao de sistemas

falta de gesto centralizada de dados

falta de autonomia dos dados em relao aos


programas

falta de facilidade de alto nvel para tratamento de


problemas comuns a qualquer manipulao de dados
11
www.tiagodemelo.info
Sistemas de Informao baseados em arquivos

Complexidade / Volume de registros

nmero mximo de arquivos

tamanho de memria

limitaes do tipo de arquivo, tipo de acesso

preocupaes tcnicas junto com problemas de domnio

sem reservas?

sem multas pendentes?

registra emprstimo

abre arquivos (fechando outros...)

carrega registros na memria (abre ndice, usa o ponteiro, estourou


memria?, ...)
12
www.tiagodemelo.info
Sistemas de Informao baseados em arquivos

Falta de integrao e centralizao

redundncia

inconsistncia

entrada repetida de informaes

usurio tem a responsabilidade de garantir a sincronia entre as


diferentes cpias da mesma informao

Dificuldade de acesso nova informao

nova informao = nova aplicao

Isolamento

a organizao sabe que os dados existem?

formato de arquivo apropriado para uma nova aplicao?

possvel integrar dados de diferentes sistemas?


13
www.tiagodemelo.info
Sistemas de Informao baseados em arquivos

Concorrncia

difcil implementao

Tolerncia a falhas

falta de luz, interrupo de funcionamento, etc

cpias? restaurao do estado anterior? consistncia da base?


Segurana

acesso diferenciado por tipo de usurio

ex:

funcionrio visualiza reserva de livros, identifica usurios e cancela


reservas

usurio visualiza reserva de livros


14
www.tiagodemelo.info

natureza auto-contida

um BD armazena +
(catlogo)

O catlogo traz informaes da estrutura do BD, formato dos


dados, restries de valores que os dados podem assumir, quem
pode acessar os dados, etc

Um BD pode guardar informaes no catlogo, referentes s


restries. Se um registro for removido de um arquivo,
automaticamente os registros sero tambm removidos em
arquivos interligados (preservando a integridade)
15
www.tiagodemelo.info

Acesso aos dados

Os SGBDs so responsveis pelo a um mesmo


dado, deixando os programas de ter este tipo de responsabilidade.

Como um BD um repositrio centralizado de dados, os SGBDs


provem aos dados, ou seja, s
permite acesso para os usurios autorizados.
16
www.tiagodemelo.info

Abstrao e Vises de dados

O SGBD prov uma dos dados, excluindo


detalhes de como os dados so armazenados.

O maior propsito de um BD o de oferecer aos usurios uma


viso abstrata dos dados. Isto , o sistema esconde certos detalhes
de como o dado armazenado e mantido. A complexidade est
escondida atravs de diversos nveis de abstrao que simplificam a
interao do usurio do Sistema.

Um BD permite que os usurios tenham vises abstratas dos dados,


isso possvel porque os BDs so construdos atravs de um

Um BD tem muitos usurios com vises diferentes dos dados. Um


SGBD deve prover mecanismos para definir mltiplas vises dos
dados.
17
www.tiagodemelo.info

Independncia entre dados e programas

Na abordagem de arquivos, cada programa possui em seu cdigo uma


descrio da estrutura dos arquivos

Na abordagem de banco de dados existe um catlogo que permite que


qualquer programa possa recuperar as informaes dinamicamente
18
www.tiagodemelo.info
Um SGBD

um conjunto de aplicaes usado para gerenciar um


Banco de Dados:

armazenar, recuperar e modificar informaes.

proporcionar um ambiente conveniente e eficiente para


recuperar e armazenar informaes de um banco de dados.

manipular grande volume de informaes.

prover segurana s informaes armazenadas.

controlar concorrncia, evitando resultados anmalos na


atualizao de informaes no BD.

prover mecanismos para criao e manipulao de estruturas


de armazenamento de informao.

restringir acesso a dados de usurios no autorizados.


19
www.tiagodemelo.info
Um SGBD

Um SGBD um software de propsito geral que facilita os


seguintes processos:

Definio

Construo

Manipulao

um meio conveniente e eficiente para recuperao e


armazenamento.

IMPORTANTE: No necessrio usar um SGBD para implementar


um banco de dados.
20
www.tiagodemelo.info
SGBDs - Atores

Programador de Aplicaes

Usurio Final

aplicao

linguagem de consulta interativa


21
www.tiagodemelo.info
SGBDs - Atores

Administrador do Banco de Dados (DBA)

conjunto de descries escritas com a DDL que so


armazenadas no Dicionrio de Dados

Requisitos de espao de armazenamento,


desempenho, concorrncia, criao ou no
de ndices, etc.

desempenho e alterao nos requisitos funcionais

22
www.tiagodemelo.info
SGBDs - Atores

Projetista do Banco de Dados

23
www.tiagodemelo.info
Quando usar um SGBD ?

Controlar redundncia

Aumento da consistncia atravs de uma maior integrao e


centralizao dos dados

Restringir acesso no autorizado

Persistncia dos dados (alm da execuo)

Representao de relaes complexas entre os dados

Estabelecimento de regras e padres

Fornecer back-up e recuperao

Controle de acesso concorrente

Esforo reduzido de desenvolvimento para aplicaes


orientadas a dados
24
www.tiagodemelo.info
Razes para NO se usar um SGBD

Custo maior que o benefcio !!!

custo de HW, SW e treinamento.

solues genricas para definir e processar dados.

custo pela segurana, controle de concorrncia, recuperao,


manuteno de integridade, etc.

Base de dados e aplicaes simples, bem definidas, e


a mdio prazo.

Aplicaes com (ex: tempo


real).

Aplicaes mono-usurio.
25
www.tiagodemelo.info
MundoReal
Processo de Solu
o
Modelo a representao abstrata e simplificada de uma
determinada realidade, com a qual se pode explicar ou testar o
seu comportamento, em sua totalidade ou em partes antes de
sua existncia real.
26
www.tiagodemelo.info
no disco
Modelo de Dados

Modelo de Entidade do
Cliente

Tabular do Modelo de
Entidade
Modelo do
Sistema
(
)
Modelo de Dados de
Alto Nvel
( )
Modelo de Dados de
Nvel Intermedirio
( ou
)
Modelo de Baixo
Nvel (
27
www.tiagodemelo.info
MundoReal
nvel lgico
nvel fsico
nvel conceitual
28
www.tiagodemelo.info
Perguntas sobre a ltima aula

Quais os nveis de abstrao de dados?

O que descreve o modelo conceitual?

Qual a funo do catlogo em um BD?

O que um SGBD e qual o seu objetivo?

Quais as vantagens de um SGBD?

Qual a importncia dos modelos de dados para


a estrutura de um BD?
29
www.tiagodemelo.info


neste nvel de abstrao so que
representaro os objetos do modelo conceitual no computador.
o nvel mais alto de abstrao, fala de objetos do mundo real e suas
respectivas operaes. Ex: aluno, livro, empregado. O importante nesta
fase escolher abstraes do mundo real que capturem o universo de
discurso, segundo o ponto de vista do sistema a ser construdo.
e no como ela ser implementada.
o mais baixo nvel de abstrao e descreve como os dados sero
armazenados, como deve ser a representao fsica das estruturas
lgicas definidas no modelo lgico. Especifica-se tambm as operaes
do modelo lgico usando-se a representao fsica.
30
www.tiagodemelo.info

um modelo de dados consiste de um conjunto de conceitos que usado para


o banco de dados da mesma forma que uma linguagem de
programao usada para descrever um programa

Descreve a do Banco de Dados. A estrutura de um BD significa os


, , , e as que devem
ser obedecidas, geralmente feita segundo um

A descrio de um BD chamada de Esquema de Banco de Dados

O Projeto do BD denominado de esquema do BD

A coleo de informaes armazenadas em um BD em um dado momento no


tempo denominado instncias do BD
31
www.tiagodemelo.info
Arquitetura dos 3 Esquemas
Viso
Externa A
Viso
Externa B
Viso
Externa N
32
www.tiagodemelo.info
Esquemas x Modelos de Dados
Viso
Externa A
Viso
Externa B
Viso
Externa N
33
www.tiagodemelo.info
Independncia de Dados

Habilidade de modificar a definio do esquema em um


nvel sem afetar a definio do esquema no prximo
nvel acima

Independncia de Dados Fsica : modificaes no esquema


fsico no causam modificaes nos programas

Geralmente ocorrem para melhorar desempenho (reorganizao


fsica)

Refere-se ao ISOLAMENTO de uma aplicao das estruturas


fsicas de armazenamento

Independncia de Dados Lgica: modificaes no esquema


conceitual no causam modificaes nos programas
34
www.tiagodemelo.info
identificao dos objetos que
compe a realidade, seguida pela
identificao das operaes que
incidem sobre estes
identificao de um conjunto de
procedimentos que nela se realizam,
interao entre eles e identificao
dos dados necessrios para a
execuo desses procedimentos
35
www.tiagodemelo.info
Fases de um Projeto de BD
Simplificado
36
www.tiagodemelo.info
sistema de informao
Programa = estrutura de dados + algoritmos
Sistema de Informao = base de dados + operaes
37
www.tiagodemelo.info
Modelo de Entidade e
Relacionamento
Banco de Dados
38
www.tiagodemelo.info
entidade
relacionamento
atributo

proporciona uma viso lgica de alto nvel dos dados

uma descrio abstrata de uma poro do mundo real

todos os dados so visualizados como fatos especficos sobre entidades,


relacionamentos e atributos

atravs do MER, podemos ter uma fotografia do sistema

as entidades, relacionamentos e atributos descrevem as regras de negcio da


empresa
39
www.tiagodemelo.info
Entidade Fraca
Entidade
Relacionamento
Atributo
Atributo Chave
Atributo Multivalorado
Relacionamento Identificador
40
www.tiagodemelo.info
Atributo Composto
...
Atributo Derivado
E2 E1 R
Participao total de E2 em R
E2 E1 R
Cardinalidade 1:N para E1:E2 em R
E R
Constraint (min,max) de E em R
(min,max)
1 N
Ex: Agncia e Conta Corrente
41
www.tiagodemelo.info
DEPARTAMENTO FUNCIONRIO
TRABALHA
SUPERVISIONA
DEPENDENTES
DEPENDENTE
GERENCIA
TRABALHA
NO
PROJETO
TRABALHA
NO
Diagrama ER do Banco de uma Empresa
42
www.tiagodemelo.info
cliente
nome
codigo
endereco
filme
nome
codigo
fita
codigo
possui
1
qtde fitas
funcionario
nome
codigo
endereco
N
N
aluguel
N
dt aluguel
dt prev ret
dt retorno
Valor
previsto
multa
salario
supervisor
N
N
1
ator
codigo
nome
possui
N
N
principal
genero
genero
codigo descr
preco
condicao
Status
cliente
possui
N
1
codigo descr
Valor
pago
N
1
43
www.tiagodemelo.info
cliente
nome
codigo
endereco
filme
nome
codigo
fita
codigo
possui
1,N
qtde fitas
funcionario
nome
codigo
endereco
1,N
1,N
aluguel
1,N
dt aluguel
dt prev ret
dt retorno
Valor
previsto
multa
salario
supervisor
1,1
1,1
4,N
ator
codigo
nome
possui
1,N
2,N
principal
genero
genero
codigo descr
preco
condicao
Status
cliente
possui
1,1
0,N
codigo descr
Valor
pago
1,1
0,N
44
www.tiagodemelo.info

Entidade

qualquer coisa pela qual desejamos guardar informao

conjunto de objetos individuais chamados instncias

uma instncia uma simples ocorrncia de uma entidade

cada instncia representa um conjunto de fatos sobre a


entidade

uma instncia deve ter uma identidade distinta de todas as


outras
45
www.tiagodemelo.info

Dependentes

entidades que dependem de outras para sua


existncia (dependncia por existncia)

entidades que dependem de outras para sua


identificao (dependncia por identificao)

Independentes

entidades que no dependem de outras para sua


existncia e identificao
46
www.tiagodemelo.info
Entidade
dependente
Entidade
independente
funcionario
nome
codigo
endereco
1
salario
supervisor
N
1
dependente
nome
codigo
N
tem
departamento
nome
codigo
1
trabalha
N
47
www.tiagodemelo.info
Componentes do MER

Atributo

caractersticas particulares do conjunto de entidades

os fatos ou propriedades de uma entidade so chamados de


atributos

cada atributo de uma entidade representa uma informao


sobre essa entidade

Relacionamento

relacionamento representa um link ou associao entre


entidades
48
www.tiagodemelo.info
Relacionamentos: Identificadores e no Identificadores

Identificadores

o conceito de entidade dependente e independente reforado


pelo tipo de relacionamento

quando se quer que uma entidade se torne dependente, cria-se


um relacionamento identificador

No Identificadores

tambm conecta entidade me e filha, porm no capaz de


identificar de forma nica, instncias na entidade filha
49
www.tiagodemelo.info
Entidade
dependente
Entidade
independente
funcionario
nome
codigo
endereco
1
salario
supervisor
N
1
dependente
nome
codigo
N
tem
departamento
nome
codigo
1
trabalha
N
identificador
No identificador
possui de

c
o
m
p
o
s
t
o

d
e
tr
a
b
a
lh
a
n
o
Papel do
relacionamento
Relacionamentos: Identificadores e no Identificadores
50
www.tiagodemelo.info
funcionario
nome
codigo
endereco
salario
supervisor
N 1
Relacionamentos Recursivos

situao em que uma entidade me e filha ao mesmo


tempo
51
www.tiagodemelo.info

a propriedade do relacionamento que define exatamente quantas


instncias aparecem na entidade filha para cada instncia
correspondente na entidade me(cardinalidade) e como sua
participao(obrigatoriedade)

cardinalidade: um ou muitos

obrigatoriedade: total (obrigatria) ou parcial(opcional)


E2 E1
1 1
E2 E1 R
1 N
E2 E1
R
N N
E2 E1
1 1
E2 E1
E2 E1
total
parcial
R
R
R
1 N
R
N N
R
52
www.tiagodemelo.info

a forma de agrupar um conjunto de entidades


que compartilham caractersticas comuns.
Restries:

mutuamente exclusivo - quando uma instncia da entidade


generalizao s pode estar em uma entidade de
especializao

sobrepostos - quando uma instncia da entidade


generalizao pode estar em duas ou mais entidade de
especializao

cada entidade da generalizao deve pertencer a pelo


menos uma entidade de especializao

: cada entidade da generalizao pode ou no pertencer


a uma entidade de especializao
53
www.tiagodemelo.info
funcionario
nome
codigo
endereco
sexo
consultor terceiro
horas tx hora salario
tipo
generalizao
total
d
54
www.tiagodemelo.info
funcionario
nome
codigo
endereco
sexo
consultor terceiro
horas tx hora salario
tipo
Parcial
Especializao
O
Sobreposta
55
www.tiagodemelo.info
funcionario
nome
codigo
endereco
sexo
consultor
horas tx hora
tipo
especializao
mostra a direo do
relacionamento
superclasse/subclasse
56
www.tiagodemelo.info
empresa
candidato
entrevista
entrevistador data
Agregao

mostra um relacionamento binrio

, onde guarda informaes sobre a para


empresas. Guarda tambm informaes sobre o entrevistador e a data.
57
www.tiagodemelo.info
entrevistador data
cargo
Agregao

Suponha que algumas entrevistas resultem em cargos oferecidos e outras


no.

Este modelo est , pois exige que cada entrevista tenha um


cargo oferecido
empresa
candidato
entrevista
58
www.tiagodemelo.info
entrevistador data
cargo
encaminha
empresa
candidato
entrevista
Agregao

O no permite relacionamento entre relacionamento


59
www.tiagodemelo.info
Agregao

O melhor modo para representar a situao anterior usando a .

No modelo acima na entrevista para encaminhar um


candidato a um cargo
entrevistador
data
cargo
encaminha
empresa
candidato
entrevista
60
www.tiagodemelo.info
Outras Notaes
Exemplos de Diagramas
ER e ER Estendidos
Banco de Dados
61
www.tiagodemelo.info
Diagramas EER

Diagrama com Notao de Markowitz / Shoshani (1994)


PROJETO
PESSOA
ALOCADA
CHS
CHEFIA
CPF
NOME
TELEFONES TITULO VERSO
62
www.tiagodemelo.info

Vejamos estas notaes para: , e


as Associaes , Identificao ou , e
PROJETO
PESSOA
ALOCADA
CHS
CHEFIA
CPF
NOME
TELEFONES TITULO
ADMINISTRATIVO TCNICO ENGENHEIRO VERSO
VERSO
ESPECIALIDADE
Diagramas EER
63
www.tiagodemelo.info
Diagramas EER

Especializao
PROJETO
EMPREGADO
TRABALHA
ESPORTISTA ENGENHEIRO
ESPECIALIDADE
FILIADO
EQUIPE
MODALIDADE
64
www.tiagodemelo.info
Diagramas EER

Diagrama com a Notao do Navathe


DEPARTAMENTO
EMPREGADO
TRABALHA
CHEFIA
GERENCIA
65
www.tiagodemelo.info
Diagramas EER
EMPREGADO
Secretrio Tcnico Engenheiro Gerente
Gerente
Gerencia
Assalariado
Empregado
Honorrio
SuporteRedes SuporteBD
66
www.tiagodemelo.info
Vamos analisar este diagrama !!

O que este DER descreve ?

Qual o problema deste DER ?


DISCIPLINA
PR-
REQUISITO
CURSO
67
www.tiagodemelo.info
requerimentos e anlise
projeto conceitual do banco de dados
escolha de um SGBD
mapeamento do modelo de dados
projeto fsico do banco de dados
implementao e configurao do BD
68
www.tiagodemelo.info
Metodologia para projeto de Banco de Dados

Requerimentos e Anlise

descobrir os atores que iro interagir com o sistema

ator pode ser um usurio, um sistema, etc.

so os atores que iro listar as regras de negcio do sistema

atores podem ser internos ou externos

pea a cada ator para ter uma exploso de idias


(requerimentos) e fazer uma lista de todos os documentos, caso
exista

neste momento voc tambm descobre alguns requerimentos


que o cliente no listou, liste-os
69
www.tiagodemelo.info
Metodologia para projeto de Banco de Dados

Projeto Conceitual do Banco de Dados MER

O MER do Sistema ser montado a partir de cada requerimento


de um ator

Para cada requerimento:

Incluir no MER objetos para atender somente a este requerimento

Quando o MER estiver sendo montado, possvel que voc


descubra requerimentos que o ator no listou, liste-os. Isto tambm
deve gerar novos objetos no MER

Se necessrio, defina entidades de apoio: para acumulados,


para ganho de performance em consultas, etc
70
www.tiagodemelo.info
Metodologia para projeto de Banco de Dados

Escolha de um SGBD

Custo de aquisio do software: web, interface, linguagem de


programao, tipos de dados suportados, etc

Custo de manuteno

Custo de aquisio de hardware

Criao do BD e custo de converso

Custo personalizado

Custo de treinamento

Custo de operao
71
www.tiagodemelo.info
Metodologia para projeto de Banco de Dados

Mapeamento do Modelo de Dados

criao do modelo lgico: mapeamento do projeto conceitual


para o projeto lgico

mapeamento independente do sistema: neste caso o


mapeamento no considera nehuma caractersticas especficas
do SGBD

mapeamento dependente do sistema: neste caso o


mapeamento leva em considerao as caractersticas do SGBD
72
www.tiagodemelo.info
Metodologia para projeto de Banco de Dados

Projeto Fsico do Banco de Dados

tempo resposta

espao de utilizao

transaes
73
www.tiagodemelo.info
Metodologia para projeto de Banco de Dados

Implementao e Configurao do Banco de Dados

Criao dos objetos do banco de dados atravs de


scripts ou carga: tabelas, triggers, views, etc

Criao de usurios, definio de permisses

Configuraes de parmetros do banco

etc
74
www.tiagodemelo.info
ATORES: cliente, funcionrio e o dono
REQUERIMENTOS:
controlar acervo de filmes
controlar acervo de fitas
fazer aluguel de fitas
fazer devoluo de fitas
consultar fitas em atraso
consultar previso de caixa
cadastro de cliente
cliente quer consultar seus filmes alugados, seus melhores
filmes e os melhores do rank
clculos de multas
Estudo de Caso: Locadora de Vdeo
75
www.tiagodemelo.info
ATORES: aluno, professor, funcionrio
REQUERIMENTOS:
cadastro de alunos, professores e funcionrios
controlar acervo da biblioteca
fazer emprstimo de itens do acervo
fazer reserva do acervo
consultar itens do acervo: ttulo, palavras-chave, etc
consultar itens em atraso
Estudo de Caso: Biblioteca
76
www.tiagodemelo.info
Listas de Exerccios
Modelo Conceitual - MER
Banco de Dados
77
www.tiagodemelo.info
definir SGBDs e quais so os objetivos principais?
identificar as principais vantagens dos SGBDs exemplificando tais
vantagens quando comparados aos sistemas tradicionais
descrever os nveis de abstrao de dados
qual a importncia dos modelos de dados para a estrutura de um BD?
o que voc entende por instncia e esquema de dados
qual a funo do catlogo em um BD
o que voc entende por: abstrao de dados, independncia entre dados
e programas, natureza auto-contida, acesso concorrente, controle de
Acesso, manuteno de restries
descrever e exemplificar os objetos do MER

o que voc entende por taxa de Cardinalidade e Participao


definir e exemplificar entidades fracas e fortes
definir e exemplificar relacionamentos identificadores e no
identificadores
Modelo Conceitual:
78
www.tiagodemelo.info
Exerccios bsicos de MER
1. Venda de Produtos
Uma firma vende produtos de limpeza, e deseja melhor controlar
os produtos que vende, seus clientes e os pedidos. Cada produto
caracterizado por um cdigo nico, nome do produto, categoria
(ex. detergente, sabo em p, sabonete, etc), e seu preo. A
categoria uma classificao criada pela prpria firma. A firma
possui informaes sobre todos os seus clientes. Cada cliente
identificado por um cdigo nico (interno firma), o nome do
cliente, endereo (rua, nro, sala, cidade, cep, UF), telefone,
status do cliente (bom, mdio, ruim), e o seu limite de crdito.
Guarda-se igualmente a informao dos pedidos feitos pelos
clientes. Cada pedido possui um nmero (nico), e guarda-se a
data de elaborao de podido. Cada pedido pode envolver de 1 a
vrios produtos, e para cada produto, indica-se a quantidade
pedida. Atualmente, a firma usa o formulrio a seguir para
controle de pedidos, preenchido a ttulo de exemplo. As demais
informaes so hoje mantidas pelos vendedores em listas em
papel diversas.
Modelo Conceitual:
79
www.tiagodemelo.info
Exerccios bsicos de MER
Limpex S.A.
Comendador Oliveira, 27
CGC: 7654321/09
Controle Interno
Pedido: 98765
Data: 27/03/2002
Cdigo: C-1234
Nome: Joo da Silva
End: Anita Garibaldi, 8765, Porto Alegre, RS, 90345-678
Telefone: (051) 234-5678
3 3 Escovex 678
4,00 2 Detergentex 345
10,00 1 Limpa Tudo 123
Total Qtde Desc Cod
17,00 TOTAL
1. Venda de Produtos (cont.)
Modelo Conceitual:
80
www.tiagodemelo.info
Exerccios bsicos de MER
1. Hollywood
Hollywood possui diversos estdios cinematogrficos, cada um
caracterizado por um nome nico, um dono, data de fundao, e
o faturamento do ano anterior. Estes estdios produzem filmes
que possuem um nome nico, o nmero de meses que levou
sendo feito, o ano de lanamento, o nmero do "copyright", e o
custo total do filme. Em cada filme atuam atores, que possuem
um nome artstico nico, um nmero de seguro social (tambm
nico), uma nacionalidade, idade, sexo, e um conjunto de tipos
de papis para o qual seu tipo fsico aconselhvel (ex: av,
mocinha jovem, gal com idade avanada, adolescente). Estes
tipos de papis no so pr-definidos, constituindo uma lista
preenchida a critrio de cada ator. Em cada filme onde atua, um
ator ganha um cach, e desempenha um personagem que
possui um nome. Estdios podem existir mesmo que ainda no
tiverem produzido um filme, mas s so considerados atores que
j atuaram em pelo menos um filme.
Modelo Conceitual:
81
www.tiagodemelo.info
Exerccios bsicos de MER
1. Biblioteca
O acervo de uma biblioteca composto por exemplares de livros.
Cada livro caracterizado por um ou mais autores, um ttulo,
uma editora, local de edio, um cdigo ISBN e um conjunto de
palavras-chave. A biblioteca possui pelo menos um exemplar de
cada livro, numerados seqencialmente (exemplares 1, 2, 3, etc).
Os associados da biblioteca podem retirar exemplares dos livros.
Cada associado pode ter emprestados no mximo trs
exemplares. Para cada emprstimo, registrada a data em que
este foi realizado. Cada associado possui um cdigo, nome e
endereo.
A biblioteca deseja manter registro somente dos
emprstimos correntes (ou seja, ainda no devolvidos).
A biblioteca deseja manter todo o histrico de
emprstimos.

Modelo Conceitual:
82
www.tiagodemelo.info
Exerccios avanados de MER
1. Aeroclube
Num aeroclube, esto inscritos pilotos, instrutores e alunos de
pilotagem. Todos scios (inscritos) so identificados pelo nmero
de matrcula, e caracterizados por nome, endereo e idade. Os
pilotos possuem um nmero de brev (nico). Os instrutores so
pilotos com formao adicional de instrutor, e deve ser registrado
o nome do curso, a data de obteno do diploma, bem como a
instituio.
Para os alunos de pilotagem, guarda-se o registros de todas
suas sadas para contabilizao de horas para obteno do
brev. Para cada sada registra-se a data, instrutor, hora de
sada de de chegada, bem como o parecer do instrutor sobre o
vo. A escola s ministra cursos bsicos, e portanto no h
professores que so alunos de cursos avanados. Para emisso
do brev, necessrio que o aluno comprove ter o nmero de
horas mnimo de vo, bem como apresente os pareceres dos
instrutores sobre as habilidades desenvolvidas a cada aula
prtica.

Modelo Conceitual:
83
www.tiagodemelo.info
Exerccios avanados de MER
1. Receitas
Uma empresa deseja informatizar o acervo de receitas que ela inventa, e
comercializa sob a forma de livros. Esto envolvidos na elaborao das
receitas e dos livros os cozinheiros, os degustadores (que controlam a
qualidade das receitas), e os editores dos livros. Todas estas pessoas so
empregados da empresa, e so caracterizados por um RG, nome, data de
ingresso na firma, e salrio recebido.
Cada receita tem cdigo nico, um nome, foi inventada por um cozinheiro
numa dada data, e pertence a uma categoria. Podem existir diferentes
receitas com o mesmo nome, mas um mesmo cozinheiro no elabora
duas receitas com o mesmo nome. Uma categoria extrada de uma lista
de categorias fixas elaborada pela empresa (ex: carne, ave, bolo, torta,
sopa, etc). norma da empresa no permitir a elaborao de receitas que
no pertenam a categorias registradas pela firma, sendo possvel no
existirem receitas para categorias recm criadas.
Diversos ingredientes (ex: acar, farinha, leite) so usados para elaborar
uma receita, cada um deles usado numa certa quantidade (ex: 2) e numa
certa medida (ex: colher de cha, xcara, ml). A medida pode ser opcional
para certos ingredientes (ex: ovo). Uma receita possui tambm uma
descrio de seu modo de preparao, e o nmero de pores que rende.
Modelo Conceitual:
84
www.tiagodemelo.info
Exerccios avanados de MER
1. Receitas (cont.)
Cada ingrediente possui um nome nico e uma descrio, particularmente
til para ingredientes exticos tais como blachan, kiri ou umeboshi.
Os cozinheiros renomados podem, para efeito de publicidade dos livros,
fornecer um nome fantasia, bem como uma lista de restaurantes
importantes nos quais j trabalhou. Esta lista fornecida pelo cozinheiro
no momento de sua contratao, sendo que nenhum cozinheiro inform-
la. Todo cozinheiro deve produzir um certo nmero de receitas por ms,
sendo que os cozinheiros recm-contratados tm um prazo de at 45 dias
para entregar suas primeiras receitas.
Receitas podem ser testadas por degustadores. Cada teste envolve um
degustador, executado numa data, e envolve a atribuio de uma nota.
Podem existir receitas sem teste, mas todo degustador contratado pela
firma j executou pelo menos um teste.
A empresa edita livros de receitas, nos quais, obviamente, constam
diversas receitas. Essas receitas podem ou no ser inditas, ou seja, j
terem sido publicadas em outros livros. Alm de suas receitas, cada livro
caracterizado por um ttulo nico, um cdigo ISBN (tambm nico), e
pelo editor do livro.
Modelo Conceitual:
85
www.tiagodemelo.info
Exerccios avanados de MER
1. Programa de Milhagem
A companhia area WARIGUI deseja oferecer um programa de milhagens
a todo passageiro seu que o solicitar. Com estas milhas, passageiros
podem usufruir de vrias promoes, como vos gratuitos, upgrade de
classe, descontos em redes de hotis credenciados, etc. Para boa gesto
do programa, ela deseja um sistema de informao que controle o crdito
das milhas e a emisso de certificados para usufruto dos benefcios.
Um passageiro admitido no programa quando este encaminha
companhia uma solicitao com dados cadastrais (nome, endereo, cpf,
rg, telefone(s) de contato, profisso, renda mensal e opcionalmente tipos
de carto de crdito que j possui - VISA, MASTERCARD, etc), junto com
pelo menos um bilhete de avio acompanhado do respectivo carto de
embarque usado, comprovante de renda, e cpia dos documentos de
identidade (RG, CPF). A companhia analisa a solicitao, e se positiva,
atribui a este cliente um nmero de carto SORRISO (nico), cadastrando
o passageiro como cliente. Ela tambm fabrica e envia o carto ao cliente,
que deve apresentar o carto ou informar seu nmero para obteno de
crditos. Ao cadastrar o cliente, j so atribudos seu(s) primeiro(s)
crdito(s) no programa de milhagens. Um mesmo passageiro no pode ter
dois cartes SORRISO, e esta verificao feita atravs dos documentos
de identificao fornecidos.
Modelo Conceitual:
86
www.tiagodemelo.info
Exerccios avanados de MER
1. Programa de Milhagem (cont.)
As solicitaes indeferidas so descartadas, e no interessam ao sistema,
isto , o sistema somente gerencia clientes do programa SORRISO.
Todo crdito tem um nmero, nico entre os crditos de um mesmo
cliente (isto , dois clientes distintos podem ter crditos com o mesmo
nmero). Alm do nmero do crdito, devem ser registrados a data do
crdito, o nmero de milhas creditadas, e opcionalmente as milhas bnus,
atribudas somente em promoes. Estas informaes servem para
emisso de correspondncia para informe de crdito de milhas e milhas
acumuladas, bem como para emisso de certificados de milhagem. Todo
o crdito j utilizado para emisso de certificado deve ser marcado com
esta informao.
O programa SORRISO de milhagens atualmente credita crditos por trs
tipos de servio: vos da companhia e das companhias associadas,
compra de produtos em estabelecimentos credenciados, e hospedagem
em hotis credenciados.
Modelo Conceitual:
87
www.tiagodemelo.info
Exerccios avanados de MER
1. Programa de Milhagem (cont.)
Para crdito de milhas, a WARIGUI necessita saber o cdigo do vo (e.g.
RG230, TR450), o trecho voado pelo passageiro daquele vo (origem e
destino), a classe utilizada, e a data de partida do passageiro. Todos os
trechos (combinao de origem e destino) devem estar cadastrados no
sistema junto com a milhagem correspondente, independentemente dos
vos que servem o trecho (e.g. o vo de Porto Alegre a So Paulo credita
900 milhas). A WARIGUI no se interessa atravs deste sistema controlar
os vos por ela oferecidos, nem por suas companhias associadas:
somente as milhagens correspondentes a trechos, e os vos realizados
por clientes que do origem a crditos. Os crditos podem ser atribudos
na recepo do aeroporto por ocasio do embarque, ou posteriormente,
quando o cliente envia os comprovantes necessrios (passagem e carto
de embarque).
Para crditos obtidos atravs de compras ou de hospedagem, o sistema
necessita saber dados sobre o estabelecimento conveniado, tais como
nome, cdigo do convnio (nico), endereo para correspondncia (rua,
nro, complemento - opcional, cidade, estado, pas, cdigo postal),
percentagem de milhas sobre valor de consumo no estabelecimento
acertado no convnio.
Modelo Conceitual:
88
www.tiagodemelo.info
Exerccios avanados de MER
1. Programa de Milhagem (cont.)
Para o crdito necessrio, alm do estabelecimento, a data da compra
ou hospedagem, valor comprado ou do total de dirias, e uma descrio
do consumo efetuado (e.g. compra de jia, estadia fim de semana,
compra de coleo em promoo). Para obteno deste crdito, o cliente
deve enviar a gesto do programa SORRISO a nota fiscal comprovando o
consumo (compra ou estadia), e o nmero desta armazenado junto com
o crdito.
Todo o ms, a WARIGUI emite avisos de crditos para aqueles clientes
com novos crditos no ms. Ela tambm verifica se a soma dos crditos
no usados pode dar origem a um ou mais certificados. Em caso positivo,
os crditos so marcados como usados, e os certificados de milhagem
so emitidos. Cada certificado tem um nmero nico, pessoal de um
cliente do programa, e possui uma data de emisso e uma de validade.
Quando o cliente usa o certificado para obteno de benefcios, os
certificados so marcados como usados.
A WARIGUI deseja guardar todas as informaes sobre crditos e
certificados j atribudos/emitidos a seus clientes, pois deseja analisar
como o programa de milhagem est funcionando, e fazer modificaes
conforme necessidade.
Modelo Conceitual:
89
www.tiagodemelo.info
Exerccios avanados de MER
1. Evento cientfico
O CBBD o maior evento cientfico anual no Brasil na rea de banco de
dados. A cada ano, sua organizao fica a cargo de alguma universidade
brasileira, que fica encarregada de controlar todos os aspectos cientficos
e operacionais do evento. Sabendo da dificuldade desta complexa tarefa,
e que o congresso tem atrado um nmero cada vez maior de
interessados, os organizadores do ano que vem resolveram se antecipar,
e projetar um sistema de informao que os auxilie na melhor organizao
do evento. O sistema deve dar apoio a todo o processo de seleo de
trabalhos cientficos, submetidos pelos membros da comunidade. Ele
tambm deve numa etapa ulterior auxiliar a gesto da organizao,
mantendo informaes sobre toda a programao e os participantes do
evento. O evento cientfico comea com a designao de um comit de
programa (CP), que tem como funo avaliar os artigos cientficos
submetidos, selecionando os melhores. Para cada membro do CP
(revisor), registra-se seu nome (nico), a instituio (h no mximo um
representante por instituio), suas reas de especialidade para reviso
dos trabalhos (e.g. data warehouse, data mining, bancos de dados
orientados a objetos), seu endereo eletrnico (nico), e coordenadas
para contato (endereo regular, telefone, fax).
Modelo Conceitual:
90
www.tiagodemelo.info
Exerccios avanados de MER
1. Evento cientfico (cont.)
Alguns meses depois, os artigos comeam a ser recebidos, e cada artigo
deve ser cadastrado. Para cada artigo gerar-se- um cdigo nico, que o
identificar ao longo de todo o processo de avaliao. Alm disso, devem
ser cadastrados o ttulo, seus autores, a instituio de cada um de seus
autores, o endereo eletrnico do primeiro autor, e as palavras-chaves.
Tanto as palavras-chaves quanto as especialidades dos revisores so
itens de uma lista de assunto divulgada junto chamada de trabalhos.
Encerrado o prazo para submisso de artigos, o presidente atribui a cada
artigo 3 revisores, e envia-os para avaliao. Os avaliadores tm um
prazo para l-los, e atribuir uma nota ao artigo. Como os revisores sempre
se atrasam, imperativo saber quem est com que artigo para revisar,
para poder cobrar os pareceres na poca adequada. Os artigos com
melhores notas so selecionados, e devem ser enviados e-mails para o
primeiro autor dos artigos selecionados e dos no selecionados para
comunicao do resultado. Os autores dos artigos aceitos, com base no
parecer, fazem modificaes e enviam a verso final de seu artigo,
usando um formato eletrnico pr-definido. Deseja-se saber quem j
mandou a verso final, e qual o nome do respectivo arquivo.
Modelo Conceitual:
91
www.tiagodemelo.info
Exerccios avanados de MER
1. Evento cientfico (cont.)
Comeam ento os preparativos para a organizao do evento. A
universidade realizar o evento em suas dependncias, e j reservou uma
srie de salas e auditrios para este fim. Cada local identificado por seu
nome, e descrito pela sua capacidade. O evento contar com sesses
tcnicas (onde sero apresentados os trabalhos aceitos), bem como
palestras convidadas e minicursos, ministrados por cientistas de renome
nacional e internacional. Estes 3 tipos de atividades compem o programa
da conferncia. Cada atividade ocorre em um local em uma dada
data/hora, sendo que algumas atividades podem ocorrer em paralelo.
Obviamente, no h duas atividades iniciando no mesmo local ao mesmo
tempo. Para montar o programa, os organizadores atribuem as atividades
aos locais, determinando horrio de inicio e fim, quais recursos devem
estar disponveis (ex. retroprojetor, canho, computador), e quem o
responsvel pela coordenao da atividade. Os recursos e o responsvel
podem ser informados posteriormente definio da atividade.
Cada sesso tcnica tem um nome nico (data warehouse I, KDD II), e
descrita pelos artigos que sero nela apresentados, e em que ordem (1, 2,
etc). Cada artigo apresentado uma nica vez.
Modelo Conceitual:
92
www.tiagodemelo.info
Exerccios avanados de MER
1. Evento cientfico (cont.)
As palestras e minicursos possuem um ttulo, um autor, uma instituio, e
alm destas informaes tcnicas, devem ser informados, quando sabido,
a data/hora de chegada e partida, e as informaes dos vos de ida e
volta (companhia, cdigo de cada vo), j que, por serem pessoas mais
importantes, de bom tom busc-los e lev-los ao aeroporto. A diferena
entre um minicurso e uma palestra convidada que na primeira os
participantes devem se inscrever e pagar uma taxa. A taxa de cada curso
deve ser mantida junto descrio do curso, bem como o nmero de
vagas disponveis e as pessoas inscritas. As informaes sobre a
programao so muito importantes, pois a partir delas que so
divulgadas as atividades do evento (e.g. pgina web, livreto, cartazes,
etc).
Por fim, a organizao quer poder controlar os inscritos. Cada participante
possui um nome, instituio (opcional), endereo, telefone, e-mail,
categoria (scio, no scio, estudante, estudante no scio, j que h
descontos para scios da SBC). Pelo menos um autor de cada artigo
selecionado deve se inscrever no evento at uma dada ocasio
(divulgada aos autores), condio necessria de publicao do artigo nos
anais da conferncia. O sistema deve permitir o registro da inscrio de
um autor associada ao(s) seu(s) respectivo(s) artigo(s).
Modelo Conceitual:
93
www.tiagodemelo.info
Exerccios avanados de MER
1. Evento cientfico (cont.)
Tambm, porque so cobrados e porque so distribudas apostilas,
deseja-se saber em qual(quais) minicursos um participante eventualmente
se inscreveu. Com estas informaes so gerados os crachs, definido
o nmero de cpias das apostilas de cada miniscurso bem como a quem
devem ser distribudas, alm dos certificados de participao no evento e
nos minicursos
Modelo Conceitual:
94
www.tiagodemelo.info
Exerccios avanados de MER
1. Eletrotcnica
Uma eletrotcnica tem enfrentado problemas para atender a demanda de
servio de consertos que tem recebido. Os clientes reclamam de atrasos
freqentes na entrega prevista dos consertos, e estima-se que esta
devida a m previso dos recursos humanos e materiais para realizao
de consertos.
Cada vez que um cliente traz um aparelho para consertar aberta uma
ordem de servio (uma por aparelho). Esta ordem de servio diz respeito
a um cliente, que deixa seu nome, endereo, e um ou mais nmeros de
telefone para contato. Um mesmo cliente pode ter outras ordens de
servio suas em andamento, e a empresa mantm um cadastro de todos
os seus clientes. Na ordem de servio constam ainda a data de
recebimento do aparelho, a marca e nmero de srie do aparelho, a
descrio do defeito, e a data de previso da entrega do aparelho ao
cliente, e a data na qual foi efetivamente retirado.
Modelo Conceitual:
95
www.tiagodemelo.info
Exerccios avanados de MER
1. Eletrotcnica (cont.)
Para resolver o problema dos atrasos, a firma optou por designar um
tcnico experiente como gerente. Este gerente, inicia o dia examinando
todas as ordens de servio novas, designando ento um conjunto de
tcnicos, e para cada tcnico designado a este conserto, as ferramentas/
aparelhos de teste necessrios para que este detecte o defeito e/ou teste
(a parte do) o conserto realizado (sempre h pelo menos um aparelho). A
previso dos recursos materiais tambm importante pois o nmero de
ferramentas/aparelhos de teste limitado. Cada tcnico pode estar
associado a vrias ordens de servio. Cada aparelho de teste possui um
nmero de srie nico, e caracterizado por uma descrio. Os tcnicos
so caracterizados por seu nome, endereo, eventualmente nmero(s) de
telefone para contato, e contrato de trabalho (nmero nico).
Modelo Conceitual:
96
www.tiagodemelo.info
Exerccios avanados de MER
1. Cinema
Um cinema possui vrias salas de cinema, as quais exibem filmes em
horrios diversos. O cinema tem interesse em saber quais filmes esto
atualmente em cartaz, em que salas e em que horrios.
Cada sala possui um nome (nico) e capacidade (nmero de lugares). Os
filmes so caracterizados por seu nome em portugus, nome na lngua
original (se estrangeiro), diretor, ano de lanamento, tipo, e sinopse. No
existem dois filmes com o mesmo nome (em portugus) e ano de
lanamento. Eventualmente, podem existir para o filme premiaes ou
indicaes para premiao (e.g. Palma de Ouro em 1987, Oscar de
melhor atriz em 89, indicado para melhor filme estrangeiro em 1996), e
esta informao usada para divulgao dos filmes. Uma exibio de
filme ocorre em uma dada sala e horrio. Um mesmo filme pode ser
exibido na mesma sala, em vrios horrios. Para filmes muito procurados,
o cinema pode ter exibio simultneas em vrias salas (em horrios
simultneos ou no). Filmes diferentes podem passar na mesma sala,
desde que obviamente no no mesmo horrio.

Modelo Conceitual:
97
www.tiagodemelo.info
Exerccios avanados de MER
1. Cinema (cont.)
O cinema s trabalha com horrios fixos de filmes, os quais atualmente
so: 16:00, 17:00, 18:00, 19:30, 20:00, 22:00, 24:00. A cada um destes
horrios est vinculado um conjunto de funcionrios responsveis pelo
bom andamento das atividades do cinema naquele horrio, e que
desempenham uma funo (ex: caixa, balas, lanterninha, bilheteiro). Cada
funcionrio caracterizado pelo nmero da carteira da trabalho (nico),
nome, data de admisso e salrio. Para maior satisfao dos funcionrios,
existe um rodzio das funes conforme o horrio (ex: um mesmo
funcionrio pode ser caixa no horrio das 16:00, e baleiro no horrio das
21:00). Todo horrio tem pelo menos trs funcionrios alocados

Modelo Conceitual:
98
www.tiagodemelo.info
Exerccios avanados de MER
1. Cinema (variao)
Para aumentar a renda do cinema, em cada sesso so exibidas
propagandas. Uma propaganda identificada por um cdigo, e
caracterizada por um nome, agncia, e faixa etria apropriada, e pode ser
exibida em vrias sesses. Cada sesso possui sua prpria programao
de propagandas (e.g. a sesso do Titanic das 14:00 horas na sala 1 pode
ou no ter o mesmo conjunto de propagandas que a sesso do Titanic em
outro horrio e/ou sala).

Modelo Conceitual:
99
www.tiagodemelo.info
Exerccios avanados de MER
1. Academia
Uma academia oferece vrias opes de prtica de esporte a seus
clientes. Para este fim, ela conta com uma equipe de professores, e com
uma infraestrutura de locais adequados para prticas esportivas diversas.
Os clientes so caracterizados pelo RG, nome, endereo, e um ou mais
telefones de contato. Para aqueles clientes que freqentam (j
freqentaram) aulas ou musculao, mantido o histrico dos contratos j
firmados por estes alunos. Para cada contrato (novo ou renovao), so
registrados a data de incio do contrato (dia/ms/ano), data de fim
(dia/ms/ano), valor total do contrato, e forma de pagamento (e.g. pr-
datado, vista, parcelado em 3 vezes, etc). Um mesmo aluno no possui
dois contratos que iniciam na mesma data. As formas de pagamento so
estabelecidas em funo do momento econmico e do aluno, no sendo
possvel pr-defini-las. O sistema no responsvel pela manuteno do
controle do pagamento das mensalidades do contrato.
Cada professor possui um RG e um nmero de carteira de trabalho
(ambos so nicos), e caracterizado por um nome, endereo, um ou
mais telefones de contato, e salrio. Cada professor est apto a orientar
pelo menos uma modalidade esportiva (e.g. vlei, basquete, aerbica,
musculao, etc).

Modelo Conceitual:
100
www.tiagodemelo.info
Exerccios avanados de MER
1. Academia (cont.)
Eventualmente o professor tem uma qualificao especfica para a
orientao de uma dada modalidade (e.g. mestrado em voleibol pela
ESEF, especializao em capoeira com Mestre Dad, etc), podendo
possuir mais de uma (e.g. mestrado em voleibol pela ESEF e
especializao em voleibol para terceira idade). Ao ser contratado, o
professor informa todas as modalidades que pode orientar, e sua
qualificao (ou qualificaes) para cada uma delas, caso exista(m). Uma
mesma modalidade pode ser orientada por um ou mais vrios
professores, ou mesmo por nenhum (por exemplo, as aulas de aerbica
so orientadas por um professor, mas paddle pode ser praticado por
clientes da academia que simplesmente alugam as canchas).
A academia oferece um elenco de modalidades esportivas, de acordo
com a infraestrutura existente. A qualquer momento, a academia quer
poder saber quais modalidades esportivas oferece, quais professores
podem atuar em quais modalidade esportivas, e quais aulas esto
previstas para uma mesma modalidade (eventualmente, com seus
respectivos professores).

Modelo Conceitual:
101
www.tiagodemelo.info
Exerccios avanados de MER
1. Academia (cont.)
Para a prtica de cada modalidade, a academia oferece espaos
adequados, na forma de salas ou canchas. Cada espao identificado
por cdigo, e caracterizado pelo andar no qual se encontra (e.g. trreo,
primeiro, subsolo) e eventualmente um nmero de sala. As canchas
podem ser locadas pelos clientes ou pelos professores, numa data data e
horrio. O sistema responsvel apenas por manter as reservas j feitas
(e no as disponibilidades futuras). Cada aula realizada em uma dada
sala, referente a uma modalidade, e orientada por um professor
habilitado para aquela modalidade. A freqncia dos alunos nas aulas
livre (i.e. no necessita de inscrio em determinada aula). Cada aula tem
um horrio de incio e durao.
As canchas podem ser locadas pelos clientes ou pelos professores, numa
dada data e horrio. As aulas so realizadas em uma dada sala, e
orientadas por um professor em uma modalidade na qual ele atua. Cada
aula tem um horrio de incio, durao, e eventualmente limite de alunos

Modelo Conceitual:
102
www.tiagodemelo.info
Modelo Conceitual:
O objetivo projetar um sistema de reservas para uma companhia de aviao. O sistema contar
com um banco de dados central, que ser acessado por aplicaes clientes, rodando tanto dentro
da prpria companhia, quanto fora dela. A transao central do sistema a reserva. Uma reserva
identificada por um cdigo gerado pelo sistema em computador. A reserva feita para um nico
passageiro, do qual se conhece apenas o nome. A reserva compreende um conjunto de trechos de
vos, que acontecero em determinada data e hora. Para cada trecho, a reserva feita em uma
classe (econmica, executiva, etc.). Um vo identificado por um cdigo e possui uma origem e
um destino. Por exemplo, o vo 595 sai de Porto Alegre, com destino a So Paulo. Um vo
composto de vrios trechos, correspondendo s escalas intermedirias do vo. Por exemplo, o vo
595 composto de dois trechos, um de Porto Alegre a Londrina, o outro de Londrina a So Paulo.
Cabe salientar que h cidades que so servidas por vrios aeroportos. Por isso, importante
informar ao passageiro que faz a reserva, qual o aeroporto no qual o vo passa. s vezes os
clientes, ao fazer a reserva, desejam saber qual o tipo de aeronave que ser utilizada em
determinado trecho do vo. Alguns poucos vos, principalmente internacionais, tm troca de
aeronave em determinadas escalas. Nem todos os vos operam em todos os dias da semana.
Inclusive, certos vos tm pequenas mudanas de horrio em certos dias da semana. Cada
reserva possui um prazo de validade. Caso os bilhetes no tenham sido emitidos, at esgotarse o
prazo da reserva, a mesma cancelada. Reservas podem ser prorrogadas. Como o "check-in" de
todos os vos est informatizado, a companhia possibilita a reserva de assento para o passageiro.
Reservas de assento podem ser feitas com at 6 meses de antecedncia. Alm de efetivar
reservas, o sistema deve servir para vrios tipos de consultas que os clientes podem querer fazer:
a) possibilidades de viagem de uma cidade ou de um aeroporto para o outro; b) o mesmo, mas
restrito a determinados dias da semana; c) horrios de chegada ou de sada em determinados
vos; d) disponibilidade de vagas em um trecho de vo; e) disponibilidade de determinados
assentos em um trecho de vo.
Reserva de passagens areas
103
www.tiagodemelo.info
Modelo Conceitual:
Uma pequena locadora de vdeo possui ao redor de 2.000 fitas de vdeo, cujo emprstimo deve ser
controlado. Cada fita possui um nmero de identificao. Para cada filme, necessrio saber seu
ttulo e sua categoria (comdia, drama, aventura, ...). Cada filme recebe um identificador prprio.
Para cada fita controlado que filme ela contm. Para cada filme h pelo menos uma fita, e cada
fita contm somente um filme. Alguns poucos filmes necessitam duas fitas. Os clientes podem
desejar encontrar os filmes estrelados por seu ator predileto. Por isso, necessrio manter a
informao dos atores que estrelam em cada filme. Nem todo filme possui estrelas. Para cada ator
os clientes s vezes desejam saber o seu nome real, bem como a data de nascimento. A locadora
possui muitos clientes cadastrados. Somente clientes cadastrados podem alugar fitas. Para cada
cliente necessrio saber o seu prenome e o seu sobrenome, o seu telefone e o seu endereo.
Alm disso, cada cliente recebe um nmero de associado. Finalmente, desejamos saber que fitas
cada cliente retm num dado instante.
Vdeo Locadora
104
www.tiagodemelo.info
Modelo RELACIONAL
Banco de Dados
105
www.tiagodemelo.info
representa e por um
o modelo relacional utiliza o conceito de no lugar
de arquivos.
As colunas de uma tabela so chamadas de e suas linhas de
. A importncia do modelo relacional em nosso curso deve-se ao
fato de ser o modelo sobre o qual baseada a maioria dos SGBDs
comerciais disponveis hoje em dia (MySQL, FireBird e PostgreSQL, por
exemplo)
Modelo Relacional
106
www.tiagodemelo.info
Projeto de Banco de Dados

O objetivo bsico de um projeto de banco de


dados possibilitar ao usurio obter a informao
exata em um limite aceitvel de tempo, de
maneira a executar sua tarefa dentro da
organizao. (Teorey e Fry)

O objetivo de um projeto de banco de dados


relacional gerar um conjunto de esquemas
relacionais, que nos permita guardar informaes
sem redundncia desnecessria, apesar de nos
permitir recuperar a informao
facilmente. (Korth e Silberschatz)
107
www.tiagodemelo.info
Perigos potenciais de projetos

Repetio de informao

Informaes repetidas consomem espao de


armazenamento e dificultam a atualizao.

Incapacidade de representar parte da


informao. Por vezes tem-se que incluir valores
nulos.

Perda de informao.

Projetos mal elaborados sugerem a


decomposio de esquemas relacionais com
muitos atributos.
108
www.tiagodemelo.info
Modelo Relacional

O Modelo Relacional e sua estrutura baseada em


conceitos da Teoria dos Conjuntos.

A do modelo relacional faz com que a representao do


mundo real atravs de seus conceitos seja de certa forma ineficiente o que
ocasiona perdas semnticas considerveis

O , ao contrrio, utiliza conceitos que permitem a representao mais


fiel dos objetos do mundo real e dos relacionamentos entre eles

O Modelo Relacional tem sido implementado nos vrios SGBDs tendo


como a linguagem .

O MER hoje a ferramenta mais usada em projetos de banco de dados.


Dizemos que o um , pois possui um
forte , capaz de capturar conceitos do mundo real com
um mnimo de perdas semnticas, facilitando o seu entendimento.

O , por outro lado, um modelo do porque


utilizado para representao em computador de conceitos do mundo real.
109
www.tiagodemelo.info
Modelo Relacional

Codd, E. F.

O Dr. Codd props o modelo relacional de sistemas de bancos


de dados em 1970.

Ele a base para o RDBMS (relational database management


system).

O modelo relacional consiste nos seguintes itens:

Conjunto de objetos ou relaes

Conjunto de operadores para agir sobre as relaes

Integridade de dados para preciso e consistncia

A relational model of data for large shared data banks.


Communications of the ACM, 13(6):377-87, June 1970
110
www.tiagodemelo.info
Modelo Relacional

Objetivos

Independncia de dados

ordem

indexao

caminhos de acesso

reduzir inconsistncias

regras de projetos (normalizao)


111
www.tiagodemelo.info
um banco de dados relacional um conjunto de relaes ou tabelas bidimensionais,
gerenciados por operaes relacionais e regidos por restries de integridade de
dados

EMPNO ENAME JOB
DEPTNO
7839 KING PRESIDENT
10
7698 BLAKE MANAGER
30
7782 CLARK MANAGER
10
7566 JONES MANAGER
20
Nome da Tabela: Nome da Tabela:
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
Nome da Tabela: Nome da Tabela:
Pode ser acessado e
modificado executando
instrues SQL (Structured
Query Language)
Usa um conjunto de
operadores
Modelo Relacional
112
www.tiagodemelo.info
Propriedades:
cada linha representa uma tupla
no existe ordenamento entre as tuplas
no existem linhas duplicadas
o relacionamento das colunas com os domnios estabelece-se a
princpio dando os nomes dos domnios s colunas. Caso um mesmo
domnio seja usado mais de uma vez, o nome do domnio
adicionalmente qualificado pelo desempenhado
PEA-COMPOSTA = PEA x PEA x QTD
composto.PEA | componente.PEA | QTD
no existe ordem entre as colunas, respeitada a propriedade acima

113
www.tiagodemelo.info
Esquema

definio das tabelas


Instncias

conjunto de tuplas que compes as relaes


Para cada relao define-se, usando a DDL (linguagem de definio de
dados)

nome nico

atributos

restries de integridade (chave primria, chave estrangeira,


valores nulos, etc)

114
www.tiagodemelo.info
Restries de Integridade (RI) que se aplicam a todo modelo que se diz
conforme ao modelo relacional:

integridade de identidade

integridade referencial

115
www.tiagodemelo.info
chave candidata

grupo mnimo de atributos tal que a combinao de valores


assumida por este grupo corresponde a no mximo uma tupla da
relao

propriedade mnima

propriedade de imparidade

uma relao possui no uma chave candidata


chave primria

uma entre as chaves candidatas, selecionada pelo projetista como


a principal identificao das tuplas de uma relao

uma relao possui uma chave primria



116
www.tiagodemelo.info
chave alternativa

toda chave candidata que no for chave primria


valor nulo

a insero de tuplas incompletas pode introduzir valores nulos na


base de dados

evitar, sempre que possvel


integridade de identidade

nenhum atributo que participe de uma chave candidata de uma


relao pode assumir valor nulo
A DDL utilizada deve prover algum tipo de mecanismo para definir chaves
primrias e candidatas (valores nicos), e para especificar quando um
atributo pode ou no aceitar valores nulos

117
www.tiagodemelo.info
<table_name>
(<atr_name> <domain> [NOT NULL]
[, <atr_name> <domain> [NOT NULL]] *
[, PRIMARY KEY (atr_name(s))]
[, UNIQUE (atr_name(s))] * ;
CREATE [UNIQUE] INDEX <index_name>
ON <table_name>(atr_name(s));
118
www.tiagodemelo.info
chave estrangeira (externa)

um ou mais atributos de uma relao R2 cujos valores so


necessrios para equivaler chave primria de uma relao R1 (R1 e
R2 no necessariamente distintos)

no necessariamente a chave estrangeira participa da chave


primria da relao que a contm (R2)
integridade referencial

se uma relao R2 inclui uma chave estrangeira FK equivalendo


chave primria PK de uma relao R1, ento todo valor FK em R2
deve ser:

igual ao valor de PK em alguma tupla de R1 ou

totalmente nulo
119
www.tiagodemelo.info
Definio de Chave Estrangeira

poltica de rejeio (DEFAULT)

a operao s no rejeitada se no houver tuplas


(chave estrangeira) fazendo referncia a uma dada chave
primria

polticas compensatrias (EXPLICITAMENTE


DECLARADAS)

CASCADE: propaga a alterao/remoo de tuplas

SET NULL: o valor da chave estrangeira ajustada


para valor NULO
120
www.tiagodemelo.info
CREATE TABLE departamento
(cod INT NOT NULL,
nome char(15) NOT NULL,
ramal CHAR(4),
PRIMARY KEY (cod));
CREATE TABLE empregado
(cpf CHAR(8) NOT NULL,
nome CHAR(60) NOT NULL,
salario MONEY,
dep INT,
gerente CHAR(8),
PRIMARY KEY (cpf),
FOREIGN KEY dep REFERENCES departamento(cod),
FOREIGN KEY gerente REFERENCES empregado(cpf));
121
www.tiagodemelo.info
CREATE TABLE empregado
(cpf CHAR(8) NOT NULL,
nome CHAR(60) NOT NULL,
salario MONEY,
dep INT,
gerente CHAR(8),
PRIMARY KEY (cpf),
FOREIGN KEY dep REFERENCES departamento(cod)
ON DELETE SET NULL
ON UPDATE CASCADE
FOREIGN KEY gerente REFERENCES empregado(cpf)
ON DELETE SET NULL);
122
www.tiagodemelo.info
123
www.tiagodemelo.info
Mapear todos os conjuntos de entidades regulares (que no so fracas)
Para cada conjunto de entidade E no esquema ER cria-se uma relao R que
inclui todos os atributos de E
Caso exista atributo composto, inclua todos os atributos elementares que
compem o atributo composto
Escolha um dos atributos chave de E como chave primria para a relao R
124
www.tiagodemelo.info

Funcionrio = {FNmero, FNome, Endereo, Salrio}
Departamento = {DNmero,DNome}
Projeto = {PNmero, PNome}
O atributo "Localizao" no foi representado na relao
"Departamento" pois um atributo multi-valorado e ser tratado no
passo 7.
O conjunto de entidade "Dependente", um conjunto de entidade
fraco e ser tratado no seguinte, o passo 2
125
www.tiagodemelo.info
Para cada entidade fraca F no esquema ER
cria-se uma relao R formada por todos os
atributos de F mais os atributos que so
chave das entidades envolvidas nos
relacionamentos com F
A chave de R a chave de F concatenada
com as chaves das entidades envolvidas com
F
126
www.tiagodemelo.info

Dependente = {DNome, FNmero, DataNiver, Parentesco}


127
www.tiagodemelo.info
O mapeamento de conjuntos de relacionamentos (CR) nem
sempre resultam em uma nova relao, como o caso dos
conjuntos de relacionamento binrio 1:1. Deve-se identificar os
conjuntos de entidades S e T que participam do
relacionamento.
Uma das entidades poder ser escolhida. Se uma entidade
participar de forma total no relacionamento, esta dever ser
escolhida
Acrescenta-se a entidade escolhida os atributos do
relacionamento e ainda os atributos chaves da outra entidade
Deve-se ressaltar que os atributos chave que foram
acrescentados entidade escolhida, so includos como
atributos no chave nesta relao
128
www.tiagodemelo.info

Departamento = {DNmero,Dnome, DataIni,FNmero}


Os atributos e so adicionados relao "Departamento",
definida no primeiro passo. Note que o atributo adicionado como
um atributo no chave na relao "Departamento"
129
www.tiagodemelo.info

Os conjuntos de relacionamento binrio regular (no fraco) 1:N


tambm so representados como novas relaes.
Primeiro identifica-se o conjunto de entidade que participa da
relao com cardinalidade N que ser chamada de S e o outro
conjunto de entidade chamada de T.
Os atributos do conjunto de relacionamento so acrescentados no
conjunto de entidade S, ou seja, o conjunto de entidade com
cardinalidade N.
Os atributos chave da relao que mapeia o conjunto de entidade
que participa com cardinalidade 1, representado por T, so tambm
acrescentados no conjunto de entidade S como atributos no chave.
130
www.tiagodemelo.info
Neste passo so mapeados os relacionamentos: supervisionar, trabalhar e controlar.
131
www.tiagodemelo.info

Funcionrio = {FNmero, FNome, Endereo, Salrio, SuperNmero,


DNmero}
Projeto = {PNmero, Pnome,DNmero}
Avaliando o relacionamento supervisionar, nota-se que este
relacionamento no possui atributos, logo, apenas o atributo
foi adicionado a relao "Funcionrio", definida no
primeiro passo.
O mesmo acontece com o relacionamento trabalhar; apenas o
atributo foi adicionado a relao "Funcionrio".
No relacionamento controlar, que tambm no possui atributos, foi
adicionado o atributo na relao Projeto que j havia sido
definida no primeiro passo.
132
www.tiagodemelo.info
Para cada relacionamento binrio N:N cria-se uma nova
relao.
Os atributos da relao so os atributos do conjunto de
relacionamento juntamente com os atributos chave das
relaes que mapeiam os conjuntos de entidades envolvidas.
A chave da relao a concatenao dos atributos chave
das relaes que mapeiam os conjuntos de entidades
envolvidos.
133
www.tiagodemelo.info

O relacionamento que envolve os conjuntos de entidades


"Funcionrio" e "Projeto", avaliado neste passo.
Cria-se uma nova relao: Participar = {FNmero, PNmero, horas}
134
www.tiagodemelo.info
Para conjuntos de relacionamentos n-rio, n>2 sempre considera-se
que possuam cardinalidade vrios:vrios:vrios. Para cada conjunto
de relacionamento (CR) ser criada uma nova relao cujos atributos
prprios so os do CR (se existirem) e cuja chave formada pelos
atributos chave das relaes que mapeiam os conjuntos de entidades
(CE's) envolvidos.
Os CR's de ordem maior que trs so tratados da mesma maneira
que os ternrios. Seu mapeamento cria uma relao para cada CR e
esta relao possui: os atributos do CR como atributos prprios e,
como chave, os atributos concatenados de cada relao que mapeia
os CE's envolvidos.
Como a modelagem utilizada para ilustrar os passos anteriores no
tem relacionamento n-rio, com n>2, escolheu-se um exemplo
particular que ser apresentado a seguir:
135
www.tiagodemelo.info

Oferecer = {OCod, CCod, FNum, Horrio}


136
www.tiagodemelo.info
Existem duas maneiras de mapear atributos multi-valorados.
A primeira maneira no leva-se em conta conhecimento adicional
sobre o atributo que est sendo mapeado. Para cada atributo multi-
valorado cria-se uma nova relao que tem como chave os atributos
chave da relao a qual pertencia juntamente com o atributo multi-
valorado tomado como um atributo mono-valorado.
A segunda forma de mapear atributos multi-valorados leva-se em
conta o conhecimento adicional sobre o atributo que est sendo
mapeado. Em alguns casos possvel determinar a quantidade de
ocorrncias de valores nos atributos.
Quando isso acontece e essa quantidade pequena, pode-se
instanciar essa quantidade de atributos como mono-valorados na
mesma relao que mapeia o conjunto de entidade ou conjunto de
relacionamento ao qual o atributo multi-valorado est associado.
137
www.tiagodemelo.info

LocalDep = {DNmero, Localizao}


138
www.tiagodemelo.info
Existem duas maneiras de transformar uma generalizao em
tabelas:
1. Criar a tabela para o conjunto de entidades de nvel superior.
Para cada conjunto de entidades de nvel inferior, criar uma
tabela que inclua uma coluna para cada um dos atributos daquele
conjunto de entidades mais uma coluna para cada atributo da
chave primria do conjunto de entidades de nvel superior
conta
num
saldo
Poupana movimento
tx juros
Lim ch esp
conta = {num, saldo}
poupana = {num, tx juros}
movimento = {num, lim ch esp}
139
www.tiagodemelo.info
2. Se a generalizao mutuamente exclusiva e total, isto , se nenhuma
entidade membro de mais de um conjunto de entidades de nvel
imediatamente inferior ao conjunto de entidades de nvel superior e se
todas as entidades do conjunto de entidades de nvel superior so
membros tambm de um dos conjuntos de entidades de nvel inferior,
ento, uma outra representao alternativa possvel.
Para cada conjunto de entidades de nvel inferior, cria-se uma tabela que
inclua uma coluna para cada um dos atributos do conjunto de entidades
mais uma coluna para cada atributo de conjunto de entidades de nvel
superior
poupana = {num, saldo, tx juros}
movimento = {num, saldo, lim ch esp}
conta
num
saldo
Poupana movimento
tx juros
Lim ch esp
d
140
www.tiagodemelo.info
A transformao de agregao em tabela bastante direta. Considere o
exemplo abaixo. A tabela para o relacionamento inclui uma
coluna para cada atributo do relacionamento, uma para a chave primria
de e uma para .
entrevista = {cod_candidato, CGC, entrevistador, data}
empresa candidato entrevista
N N
entrevistador data
cargo
encaminha
N
N
Cod_candidato
CGC
encamiha = {cod_candidato, CGC, cod_cargo}
Cod_cargo
141
www.tiagodemelo.info
Exerccios

Faa o mapeamento para o modelo relacional


142
www.tiagodemelo.info
Exerccios

Faa o mapeamento para o modelo relacional


143
www.tiagodemelo.info
Exerccios

Faa o mapeamento para o modelo relacional


144
www.tiagodemelo.info
Exerccios

Faa o mapeamento para o modelo relacional


145
www.tiagodemelo.info
Exerccios

Faa o mapeamento para o modelo relacional


146
www.tiagodemelo.info

Uma dependncia funcional um


relacionamento muitos para um entre dois
conjuntos de atributos de uma determinada
relao R.

Ela uma espcie particularmente comum e


importante de restrio de integridade.
147
www.tiagodemelo.info

Sejam os seguintes subconjuntos de atributos


de um esquema T:
A = (A
1
, A
2
, ..., A
n
) e B = (B
1
, B
2
, ..., B
n
)

Dizemos que B dependente funcionalmente de


um outro atributo A contido em T se a cada valor
de A existir nas linhas da relao T, em que
aparece, um nico valor de B.

Notao: A B
148
www.tiagodemelo.info

Dependncias triviais e no triviais

A reduo do conjunto de dependncias funcionais


feito atravs da eliminao das dependncias triviais.

Uma dependncia trivial se no puder deixar de ser


satisfeita.

Dependncias no triviais so as mais interessantes


para o projeto de banco de dados, pois elas so as
nicas que correspondem a restries de integridade
genunas.
149
www.tiagodemelo.info
F# CIDADE P# QDE
F1 Londres P1 100
F1 Londres P2 100
F2 Paris P1 200
F2 Paris P2 200
F3 Paris P2 300
F4 Londres P2 400
F4 Londres P4 400
F4 Londres P5 400

Exemplo de tabela de vendas

F# : chave primria do fornecedor

Cidade : cidade do fornecedor

P# : chave primria do produto

QDE : quantidade
150
www.tiagodemelo.info

Exemplos de dependncias funcionais vlidas:

{ F# } { CIDADE }

{ F#, P#} { QDE }

{ F#, P#} { CIDADE }

{ F#, P#} { CIDADE, QDE }

{ F#, P#} { F# }

{ F#, P#} { F#, P#, CIDADE, QDE }

{ F# } { QDE }

{ QDE } { F# }
151
www.tiagodemelo.info

Propriedades funcionais

Sejam A, B e C subconjuntos arbitrrios do


conjunto de atributos de uma relao R, e
considerando que AB usada para indicar a
unio de A e B, teremos as seguintes
propriedades:

: se B um subconjunto de A, ento A
B

Aumento! se A B, en"#o AC BC

Transitividade! se A B e B C, en"#o A C
152
www.tiagodemelo.info

: A A

Decomposio! se A BC, en"#o A B e A


C

Unio! se A B e A C, en"#o A BC

Composio! se A B e C D, en"#o AC BD

Teorema Geral da Unificao! se A B e C


D, en"#o A $ %C & D' BD
153
www.tiagodemelo.info

Exemplo de uso das propriedades

Considere a relao R com os atributos A, B, C, D, E,


F e as DFs:

A BC

B E

CD EF

Mostre que a DF AD F vlida para R e, portanto,


um membro do fecho do conjunto dado.
154
www.tiagodemelo.info

Soluo:
1. A BC (dada)
2. A C (1, decomposio)
3. AD CD (2, aumento)
4. CD EF (dada)
5. AD EF (3 e 4, transitividade)
6. AD F (5, decomposio)
155
www.tiagodemelo.info

O processo de Normalizao, proposto primeiramente


por Codd, faz uma srie de testes para certificar se um
Esquema Relacional satisfaz a uma Forma Normal.

Cada Relao avaliada e decomposta em novas


Relaes, se necessrio. Projeto Relacional por
Anlise.

Inicialmente, Codd props trs formas normais.


156
www.tiagodemelo.info

Conseqncias:

Problemas de anomalias e inconsistncias diminuem.

Relaes simplificadas e estrutura regular.

Aumento da integridade dos dados.

Necessidade de realizao de junes.

Eventual queda na performance.


157
www.tiagodemelo.info

Uma relao R est na 1FN se e somente se, em todo


valor vlido dessa relao, cada tupla contm
exatamente um valor para cada atributo.

Todo e qualquer atributo deve ter valor ATMICO e


INDIVISVEL, ou seja, no modelo relacional no pode
haver atributos multivalorados ou conjuntos de atributos.

Esta FN considerada parte da definio do Modelo


Relacional.
158
www.tiagodemelo.info
1 FN

as linhas da tabela so unvocas

as linhas no contm itens repetitivos

os atributos so atmicos
159
www.tiagodemelo.info
Tabela: PEDIDO (no normalizada)
3 Jan 20 Casa Software 1111111-11 Lapa Rua A 111 Prod 1 10 R$100.00
222 Prod 2 44 R$150.00
333 Prod 3 50 R$120.00
4 Feb 10 Computer 2222222-22 Itu 49 222 Prod 4 73 R$150.00
333 Prod 5 80 R$120.00
Tabela: PEDIDO sem itens repetidos
3 Jan 20 Casa Software 1111111-11 Lapa Rua A 111 Prod 1 10 R$100.00
3 Jan 20 Casa Software 1111111-11 Lapa Rua A 222 Prod 2 44 R$150.00
3 Jan 20 Casa Software 1111111-11 Lapa Rua A 333 Prod 3 50 R$120.00
4 Feb 10 Computer 2222222-22 Itu 49 222 Prod 4 73 R$150.00
4 Feb 10 Computer 2222222-22 Itu 49 333 Prod 5 80 R$120.00
160
www.tiagodemelo.info
em cada tabela eliminar grupos repetitivos
gerando novas linhas, uma para cada ocorrncia
de item repetitivo, mantendo os valores dos
demais itens
transformar os atributos compostos em atmicos
161
www.tiagodemelo.info
Tabela: PEDIDO com Atributos Atmicos
3 Jan 20 Casa Software 1111111-11 Lapa Rua A 111 Prod 1 10
3 Jan 20 Casa Software 1111111-11 Lapa Rua A 222 Prod 2 44
3 Jan 20 Casa Software 1111111-11 Lapa Rua A 333 Prod 3 50
4 Feb 10 Computer 2222222-22 Itu Rua 49 222 Prod 2 73
4 Feb 10 Computer 2222222-22 Itu Rua 49 333 Prod 3 80
Tabela: PEDIDO sem itens repetidos
3 Jan 20 Casa Software 1111111-11 Lapa Rua A 111 Prod 1 10 R$100.00
3 Jan 20 Casa Software 1111111-11 Lapa Rua A 222 Prod 2 44 R$150.00
3 Jan 20 Casa Software 1111111-11 Lapa Rua A 333 Prod 3 50 R$120.00
4 Feb 10 Computer 2222222-22 Itu Rua 49 222 Prod 2 73 R$150.00
4 Feb 10 Computer 2222222-22 Itu Rua 49 333 Prod 3 80 R$120.00
162
www.tiagodemelo.info
em cada tabela eliminar grupos repetitivos
gerando novas linhas, uma para cada ocorrncia
de item repetitivo, mantendo os valores dos
demais itens
transformar os atributos compostos em atmicos
definir as chaves candidatas e escolher a chave
primria da tabela (unicidade nas linhas)
163
www.tiagodemelo.info
3 111 Jan 20 Casa Software 1111111-11 Lapa Rua A Prod 1 10
3 222 Jan 20 Casa Software 1111111-11 Lapa Rua A Prod 2 44
3 333 Jan 20 Casa Software 1111111-11 Lapa Rua A Prod 3 50
4 222 Feb 10 Computer 2222222-22 Itu Rua 49 Prod 2 73
4 333 Feb 10 Computer 2222222-22 Itu Rua 49 Prod 3 80
164
www.tiagodemelo.info

Deve-se observar que se uma relao R estiver


apenas na 1FN (ou seja, no esteja na 2FN, e
portanto tambm no est na 3FN) tem uma
estrutura indesejvel por uma srie de razes.
165
www.tiagodemelo.info

Uma relao R est na 2FN se e somente se ela


est em 1FN e todo atributo no chave
irredutivelmente dependente da chave primria.
166
www.tiagodemelo.info
est na 1FN
cada uma das colunas no pertencentes chave
primria no dependente parcial dessa chave
cada atributo no-chave dependente de toda a
chave primria.
a dependncia parcial de uma chave s ser
possvel se esta chave for definida com mais de
uma coluna
dizemos que uma coluna parcialmente
dependente da chave se, para que seu valor seja
determinado no necessitamos conhecer a chave
como um todo
167
www.tiagodemelo.info
CHAVE
C depende de A e B
D depende s de A
E depende s de B
168
www.tiagodemelo.info
169
www.tiagodemelo.info
identificar as colunas que no participam da
chave primria da tabela
para cada uma das colunas identificadas,
analisar se seu valor determinado por parte, ou
pela totalidade da chave
para as colunas dependentes parcialmente:
criar novas tabelas onde a chave primria
ser(o) a(s) coluna(s) da chave primria
original que determinou o valor da coluna
analisada
excluir da tabela original as colunas
dependentes parcialmente da chave
170
www.tiagodemelo.info
3 111 Jan 20 Casa Software 1111111-11 Lapa Rua A Prod 1 10 R$100.00
3 222 Jan 20 Casa Software 1111111-11 Lapa Rua A Prod 2 44 R$150.00
3 333 Jan 20 Casa Software 1111111-11 Lapa Rua A Prod 3 50 R$120.00
4 222 Feb 10 Computer 2222222-22 Itu Rua 49 Prod 2 73 R$150.00
4 333 Feb 10 Computer 2222222-22 Itu Rua 49 Prod 3 80 R$120.00
Cod Prod NomeProd PreoProd
111 Prod 1 R$100.00
222 Prod 2 R$150.00
333 Prod 3 R$120.00
Tabela na 1FN: Pedido
Tabela na 2FN: Pedido
Tabela na 2FN: Produto
3 111 Jan 20 Casa Software 1111111-11 Lapa Rua A 10
3 222 Jan 20 Casa Software 1111111-11 Lapa Rua A 44
3 333 Jan 20 Casa Software 1111111-11 Lapa Rua A 50
4 222 Feb 10 Computer 2222222-22 Itu Rua 49 73
4 333 Feb 10 Computer 2222222-22 Itu Rua 49 80
171
www.tiagodemelo.info

Uma relao R est na 3FN se e somente se ela


est na 2FN e todo atributo chave dependente
de forma no transitiva da chave primria.
172
www.tiagodemelo.info
est na 2FN
nenhuma coluna no pertencente chave fica
determinada transitivamente por esta.
cada atributo no chave dependente no
transitivo da chave primria.
a dependncia transitiva de uma chave s ser
possvel se a tabela tiver pelo menos duas
colunas no pertencentes chave
uma coluna depende transitivamente da chave
se seu valor determinado pelo contedo de uma
coluna no chave

173
www.tiagodemelo.info
A determina B
A determina C
A determina E
C determina D
174
www.tiagodemelo.info
175
www.tiagodemelo.info
111 Prod 1 R$100,00
222 Prod 2 R$150,00
333 Prod 3 R$120,00
Tabela na 2FN: Pedido
1111111-11 Casa Soft ware Lapa Rua A
2222222-22 Comput er It u Rua 49
Tabela na 3FN: Pedido
Tabela na 3FN: Produto Tabela na 3FN: Fornecedor
3 111 20/Jan Casa Soft ware 1111111-11 Lapa Rua A 10
3 222 20/Jan Casa Soft ware 1111111-11 Lapa Rua A 44
3 333 20/Jan Casa Soft ware 1111111-11 Lapa Rua A 50
4 222 10/Fev Comput er 2222222-22 It u Rua 49 73
4 333 10/Fev Comput er 2222222-22 It u Rua 49 80
3 111 20/Jan 1111111-11 10
3 222 20/Jan 1111111-11 44
3 333 20/Jan 1111111-11 50
4 222 10/Fev 2222222-22 73
4 333 10/Fev 2222222-22 80
176
www.tiagodemelo.info
Matrcula Nome CodCargo NomeCargo CodProj DataFim Horas
120 Joo 1 Programador 01 17/07/95 37
120 Joo 1 Programador 08 12/01/96 12
121 Hlio 1 Programador 01 17/07/95 45
121 Hlio 1 Programador 12 21/03/96 107
270 Gabriel 2 Analista 08 12/01/96 10
270 Gabriel 2 Analista 12 21/03/96 38
273 Silva 3 Projetista 01 17/07/95 22
274 Abrao 2 Analista 12 21/03/96 31

Considere a tabela Empregados, sendo chave primria os campos


Matrcula e CodProj.
177
www.tiagodemelo.info

Anomalias:

Inserir: no possvel inserir um empregado sem que


este esteja alocado num projeto, nem inserir um
projeto sem que haja um empregado trabalhando nele.

Remover: se for necessrio remover um projeto, as


informaes de empregado que estiverem alocados
naquele projeto sero perdidas.

Atualizar: se um empregado for promovido de cargo,


teremos que atualizar os atributos CodCargo e
NomeCargo em todas as tuplas nas quais aquele
empregado est presente.
178
www.tiagodemelo.info
Matrcula CodProj Horas
120 01 37
120 08 12
121 01 45
121 08 21
121 12 107
270 08 10
270 12 78
273 01 22
274 12 31
Matrcula Nome CodCargo NomeCargo
120 Joo 1 Programador
121 Hlio 1 Programador
270 Gabriel 2 Analista
273 Silva 3 Projetista
274 Abrao 2 Analista
CodProj DataFim
01 17/07/95
08 12/01/96
12 21/03/96
EMPREGADO
PROJETO
ALOCAO
179
www.tiagodemelo.info

Anomalias:

Inserir: s possvel criar cargos se houver


empregados designados para eles.

Remover: se apagarmos um empregado que ocupa


unicamente um cargo na empresa, perderemos a
informao do cargo.

Atualizar: se um cargo mudar de nome, ser


necessrio mudar todas as tabelas em que este cargo
aparece.
180
www.tiagodemelo.info
Matrcula Nome CodCargo
120 Joo 1
121 Hlio 1
270 Gabriel 2
273 Silva 3
274 Abrao 2
CodCargo Nome
1 Programador
2 Analista
3 Projetista
CARGO
EMPREGADO
181
www.tiagodemelo.info

Guiado pelo bom-senso, construa um diagrama


ER, agrupando os atributos nas tabelas que vo
representar as entidades e os relacionamentos
do seu banco de dados.

Construa o diagrama de dependncias funcionais


para as tabelas propostas no MER (ou um nico
diagrama de dependncias funcionais
considerando todos os atributos do seu banco de
dados).

Elimine os atributos repetitivos (se houver), de


modo a obter um modelo de dados na 1FN.
1. http://www.inf.ufsc.br/~fileto/
182
www.tiagodemelo.info

Elimine as dependncias parciais da chave


primria em suas tabelas (se houver), obtendo
um projeto na 2FN.

Elimine as dependncias transitivas nas tabelas


(se houver), obtendo um esquema na 3FN.
183
www.tiagodemelo.info
Apresentar ferramenta livre de banco
de dados
184
www.tiagodemelo.info
Caractersticas gerais:
Ferramenta visual para projetar, modelar,
criar e manter um banco de dados.
Ferramenta da mesma categoria de
softwares proprietrios como Oracle's
Designer, Rational Rose e ERWin.
Roda em Linux e Windows.
Licena GPL.
Boa documentao on-line.
http://www.fabforce.net/dbdesigner4
185
www.tiagodemelo.info
186
www.tiagodemelo.info
187
www.tiagodemelo.info
188
www.tiagodemelo.info
189
www.tiagodemelo.info
190
www.tiagodemelo.info
191
www.tiagodemelo.info
192
www.tiagodemelo.info
Listar os recursos das instrues SELECT SQL
Executar uma instruo SELECT bsica
193
www.tiagodemelo.info
Seleo Seleo Projeo Projeo
Tabela 1 Tabela 1 Tabela 2 Tabela 2
Tabela 1 Tabela 1 Tabela 1 Tabela 1
194
www.tiagodemelo.info
SELECT [DISTINCT] {*, coluna [apelido],...}
FROM tabela;
SELECT identifica que colunas.
FROM identifica qual tabela.
195
www.tiagodemelo.info
Instrues SQL no fazem distino entre maisculas e minsculas.
Instrues SQL podem estar em uma ou mais linhas.
Palavras-chave no podem ser abreviadas ou divididas entre as
linhas.
Normalmente, as clusulas so colocadas em linhas separadas.
Guias e endentaes so usadas para aperfeioar a legibilidade.
196
www.tiagodemelo.info

DEPTNO DNAME LOC
--------- -------------- -------------
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
SQL> SELECT *
2 FROM dept;
197
www.tiagodemelo.info

DEPTNO LOC
--------- -------------
10 NEW YORK
20 DALLAS
30 CHICAGO
40 BOSTON
SQL> SELECT deptno, loc
2 FROM dept;
198
www.tiagodemelo.info
Justificada default
Esquerda: Dados de caractere e data
Direita: Dados numricos
Exibio default: Letra maiscula
199
www.tiagodemelo.info
Criar expresses com dados NUMBER e DATE usando operadores
aritmticos
200
www.tiagodemelo.info


SQL> SELECT ename, sal, sal+300
2 FROM emp;
ENAME SAL SAL+300
---------- --------- ---------
KING 5000 5300
BLAKE 2850 3150
CLARK 2450 2750
JONES 2975 3275
MARTIN 1250 1550
ALLEN 1600 1900
...
14 rows selected.
201
www.tiagodemelo.info
A multiplicao e a diviso tm prioridade sobre a adio e a subtrao.
Os operadores com a mesma prioridade so avaliados da esquerda para a
direita.
Os parnteses so usados para forar a avaliao e para esclarecer as
instrues.
202
www.tiagodemelo.info


SQL> SELECT ename, sal, 12*sal+100
2 FROM emp;
ENAME SAL 12*SAL+100
---------- --------- ----------
KING 5000 60100
BLAKE 2850 34300
CLARK 2450 29500
JONES 2975 35800
MARTIN 1250 15100
ALLEN 1600 19300
...
14 rows selected.
203
www.tiagodemelo.info


SQL> SELECT ename, sal, 12*(sal+100)
2 FROM emp;
ENAME SAL 12*(SAL+100)
---------- --------- -----------
KING 5000 61200
BLAKE 2850 35400
CLARK 2450 30600
JONES 2975 36900
MARTIN 1250 16200
...
14 rows selected.
204
www.tiagodemelo.info

ENAME JOB SAL COMM
---------- --------- --------- ---------
KING PRESIDENT 5000
BLAKE MANAGER 2850
...
TURNER SALESMAN 1500 0
...
14 rows selected.
SQL> SELECT ename, job, sal, comm
2 FROM emp;
Um valor nulo no est disponvel, no atribudo, desconhecido
ou no aplicvel.
Um valor nulo no o mesmo que um zero ou um espao em
branco.
205
www.tiagodemelo.info


SQL> select ename, 12*sal+comm
2 from emp
3 WHERE ename='KING';
ENAME 12*SAL+COMM
---------- -----------
KING
Expresses aritmticas contendo um valor nulo so avaliadas como nulo.
206
www.tiagodemelo.info
Renomeia um cabealho de coluna
til para clculos
Segue imediatamente o nome da coluna
Palavra-chave opcional entre o nome da coluna e o apelido
Necessita de aspas duplas caso contenha espaos ou caracteres especiais ou
faa distino entre maisculas e minsculas
207
www.tiagodemelo.info





SQL> SELECT ename AS name, sal salary
2 FROM emp;
NAME SALARY
------------- ---------
...
SQL> SELECT ename "Name",
2 sal*12 "Annual Salary"
3 FROM emp;

Name Annual Salary
------------- -------------
...
208
www.tiagodemelo.info
Concatena colunas ou strings de caractere a outras
colunas
representado por duas barras Verticais -
Cria uma coluna resultante que uma expresso de
caracteres
209
www.tiagodemelo.info
SQL> SELECT ename||job AS "Employees"
2 FROM emp;
Employees
-------------------
KINGPRESIDENT
BLAKEMANAGER
CLARKMANAGER
JONESMANAGER
MARTINSALESMAN
ALLENSALESMAN
...
14 rows selected.
210
www.tiagodemelo.info
Uma literal um caractere, um nmero ou uma data
includa na lista SELECT.
Os valores literais de caractere e data devem estar
entre aspas simples.
Cada string de caractere gerada uma vez para cada
linha retornada.
211
www.tiagodemelo.info
Employee Details
-------------------------
KING is a PRESIDENT
BLAKE is a MANAGER
CLARK is a MANAGER
JONES is a MANAGER
MARTIN is a SALESMAN
...
14 rows selected.
SQL> SELECT ename ||' is a '||job
2 AS "Employee Details"
3 FROM emp;
212
www.tiagodemelo.info


SQL> SELECT deptno
2 FROM emp;
DEPTNO
---------
10
30
10
20
...
14 rows selected.
A exibio default das consultas de todas as linhas, incluindo
linhas duplicadas.
213
www.tiagodemelo.info

SQL> SELECT DISTINCT deptno
2 FROM emp;
DEPTNO
---------
10
20
30

Elimine linhas duplicadas usando a palavra-chave DISTINCT na clusula Elimine linhas duplicadas usando a palavra-chave DISTINCT na clusula
SELECT. SELECT.
214
www.tiagodemelo.info
DESC[RIBE] nome da tabela
Use o comando DESCRIBE do SQL*Plus para exibir a estrutura de uma tabela.
SQL> DESCRIBE dept
Name Null? Type
----------------- -------- ------------
DEPTNO NOT NULL NUMBER(2)
DNAME VARCHAR2(14)
LOC VARCHAR2(13)
215
www.tiagodemelo.info

Limitar linhas recuperadas por uma consulta
Classificar linhas recuperadas por uma consulta
216
www.tiagodemelo.info
"recuperar
todos os
funcionrios do
departamento 10"

EMP EMP
EMPNO ENAME JOB ...
DEPTNO
7839 KING PRESIDENT
10
7698 BLAKE MANAGER 30
7782 CLARK MANAGER 10
7566 JONES MANAGER 20
...

EMP EMP
EMPNO ENAME JOB
... DEPTNO
7839 KING PRESIDENT
10
7782 CLARK MANAGER 10
7934 MILLER CLERK
10
217
www.tiagodemelo.info
SELECT [DISTINCT] {*| coluna [apelido], ...}
FROM tabela
[WHERE condio(es)];
Restringe as linhas retornadas usando a clusula WHERE.
A clusula WHERE segue a clusula FROM.
218
www.tiagodemelo.info
SQL> SELECT ename, job, deptno
2 FROM emp
3 WHERE job='CLERK';
ENAME JOB DEPTNO
---------- --------- ---------
JAMES CLERK 30
SMITH CLERK 20
ADAMS CLERK 20
MILLER CLERK 10
219
www.tiagodemelo.info
SQL> SELECT ename, job, deptno
2 FROM emp
3 WHERE ename = ;
'JAMES'
As strings de caractere e valores de data aparecem entre aspas simples.
Os valores de caractere fazem distino entre maisculas e minsculas e os
valores de data diferenciam formatos.
O formato de data default DD-MON-YY.
220
www.tiagodemelo.info

221
www.tiagodemelo.info
SQL> SELECT ename, sal, comm
2 FROM emp
3 WHERE sal<=comm;
ENAME SAL COMM
---------- --------- ---------
MARTIN 1250 1400
222
www.tiagodemelo.info
223
www.tiagodemelo.info
ENAME SAL
---------- ---------
MARTIN 1250
TURNER 1500
WARD 1250
ADAMS 1100
MILLER 1300
SQL> SELECT ename, sal
2 FROM emp
3 WHERE sal BETWEEN 1000 AND 1500;
Use o operador BETWEEN para exibir linhas baseadas em uma faixa
de valores.
224
www.tiagodemelo.info
SQL> SELECT empno, ename, sal, mgr
2 FROM emp
3 WHERE mgr IN (7902, 7566, 7788);
EMPNO ENAME SAL MGR
--------- ---------- --------- ---------
7902 FORD 3000 7566
7369 SMITH 800 7902
7788 SCOTT 3000 7566
7876 ADAMS 1100 7788
Use o operador IN para testar os valores de uma lista.
225
www.tiagodemelo.info
SQL> SELECT ename
2 FROM emp
3 WHERE ename LIKE 'S%';
Use o operador LIKE para executar pesquisas curinga de valores de string de
pesquisa vlidos.
As condies de pesquisa podem conter caracteres literais ou nmeros.
% denota zero ou muitos caracteres.
_ denota um caractere.
226
www.tiagodemelo.info
SQL> SELECT ename
2 FROM emp
3 WHERE ename LIKE '_A
%';
ENAME
----------
MARTIN
JAMES
WARD
Voc pode combinar caracteres de vinculao de padro.
possvel usar o identificador ESCAPE para procurar por "%" ou "_".
227
www.tiagodemelo.info
SQL> SELECT ename, mgr
2 FROM emp
3 WHERE mgr IS NULL;
ENAME MGR
---------- ---------
KING
Teste para valores nulos com o operador IS NULL.
228
www.tiagodemelo.info

229
www.tiagodemelo.info
AND exige que ambas as condies sejam TRUE.
AND exige que ambas as condies sejam TRUE.
SQL> SELECT empno, ename, job, sal
2 FROM emp
3 WHERE sal>=1100
4 AND job='CLERK';
EMPNO ENAME JOB SAL
--------- ---------- --------- ---------
7876 ADAMS CLERK 1100
7934 MILLER CLERK 1300
230
www.tiagodemelo.info
SQL> SELECT empno, ename, job, sal
2 FROM emp
3 WHERE sal>=1100
4 OR job='CLERK';
EMPNO ENAME JOB SAL
--------- ---------- --------- ---------
7839 KING PRESIDENT 5000
7698 BLAKE MANAGER 2850
7782 CLARK MANAGER 2450
7566 JONES MANAGER 2975
7654 MARTIN SALESMAN 1250
...
7900 JAMES CLERK 950
...
14 rows selected.
OR exige que uma condio seja TRUE.
OR exige que uma condio seja TRUE.
231
www.tiagodemelo.info
SQL> SELECT ename, job
2 FROM emp
3 WHERE job NOT IN ('CLERK','MANAGER','ANALYST');
ENAME JOB
---------- ---------
KING PRESIDENT
MARTIN SALESMAN
ALLEN SALESMAN
TURNER SALESMAN
WARD SALESMAN
232
www.tiagodemelo.info

Sobreponha regras de precedncia usando parnteses.
233
www.tiagodemelo.info
ENAME JOB SAL
---------- --------- ---------
KING PRESIDENT 5000
MARTIN SALESMAN 1250
ALLEN SALESMAN 1600
TURNER SALESMAN 1500
WARD SALESMAN 1250
SQL> SELECT ename, job, sal
2 FROM emp
3 WHERE job='SALESMAN'
4 OR job='PRESIDENT'
5 AND sal>1500;
234
www.tiagodemelo.info
ENAME JOB SAL
---------- --------- ---------
KING PRESIDENT 5000
ALLEN SALESMAN 1600
SQL> SELECT ename, job, sal
2 FROM emp
3 WHERE (job='SALESMAN'
4 OR job='PRESIDENT')
5 AND sal>1500;
Use parnteses para forar a prioridade.
Use parnteses para forar a prioridade.
235
www.tiagodemelo.info
SQL> SELECT ename, job, deptno, hiredate
2 FROM emp
3 ORDER BY hiredate;
ENAME JOB DEPTNO HIREDATE
---------- --------- --------- ---------
SMITH CLERK 20 17-DEC-80
ALLEN SALESMAN 30 20-FEB-81
...
14 rows selected.
Classificar as linhas com a clusula ORDER BY
ASC: ordem crescente, default
DESC: ordem decrescente
A clusula ORDER BY vem depois na instruo SELECT.
236
www.tiagodemelo.info
SQL> SELECT ename, job, deptno, hiredate
2 FROM emp
3 ORDER BY hiredate DESC;
ENAME JOB DEPTNO HIREDATE
---------- --------- --------- ---------
ADAMS CLERK 20 12-JAN-83
SCOTT ANALYST 20 09-DEC-82
MILLER CLERK 10 23-JAN-82
JAMES CLERK 30 03-DEC-81
FORD ANALYST 20 03-DEC-81
KING PRESIDENT 10 17-NOV-81
MARTIN SALESMAN 30 28-SEP-81
...
14 rows selected.
237
www.tiagodemelo.info
SQL> SELECT empno, ename, sal*12 annsal
2 FROM emp
3 ORDER BY annsal;
EMPNO ENAME ANNSAL
--------- ---------- ---------
7369 SMITH 9600
7900 JAMES 11400
7876 ADAMS 13200
7654 MARTIN 15000
7521 WARD 15000
7934 MILLER 15600
7844 TURNER 18000
...
14 rows selected.
238
www.tiagodemelo.info
SQL> SELECT ename, deptno, sal
2 FROM emp
3 ORDER BY deptno, sal DESC;
ENAME DEPTNO SAL
---------- --------- ---------
KING 10 5000
CLARK 10 2450
MILLER 10 1300
FORD 20 3000
...
14 rows selected.
Voc pode classificar por uma coluna que no esteja na
lista SELECT.
A ordem da lista ORDER BY a ordem de classificao.
239
www.tiagodemelo.info
SELECT [DISTINCT] {*| coluna [apelido], ...}
FROM tabela
[WHERE condio(es)]
[ORDER BY {coluna, expr, apelido} [ASC|DESC]];
240
www.tiagodemelo.info
Descrever vrios tipos de funes disponveis
no SQL
Usar funes de data, nmero e caractere
nas instrues SELECT
Descrever o uso das funes de converso
241
www.tiagodemelo.info
n
n
242
www.tiagodemelo.info
243
www.tiagodemelo.info
function_name (coluna|expresso, [arg1, arg2,...])
Manipulam itens de dados
Aceitam argumentos e retornam um valor
Agem em cada linha retornada
Retornam um resultado por linha
Podem modificar o tipo de dados
Podem ser aninhadas
244
www.tiagodemelo.info
245
www.tiagodemelo.info
LOWER LOWER
UPPER UPPER
INITCAP INITCAP
CONCAT CONCAT
SUBSTR SUBSTR
LENGTH LENGTH
INSTR INSTR
LPAD LPAD
TRIM TRIM
246
www.tiagodemelo.info
Criar instrues SELECT para obter acesso aos dados a partir de
mais de uma tabela usando as junes idnticas e no-idnticas
Visualizar dados que, em geral, no correspondem a uma
condio de juno usando junes externas
Unindo uma tabela a ela mesma
247
www.tiagodemelo.info

EMPNO DEPTNO LOC
----- ------- --------
7839 10 NEW YORK
7698 30
CHICAGO
7782 10 NEW YORK
7566 20 DALLAS
7654 30
CHICAGO
7499 30 CHICAGO
...
14 rows selected.
EMP EMP
DEPT DEPT

EMPNO ENAME ...
DEPTNO
------ ----- ...
------
7839 KING ...
10
7698 BLAKE ...
30
...
7934 MILLER
... 10
DEPTNO DNAME LOC

------ ----------
--------
10 ACCOUNTING NEW
YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS
BOSTON
248
www.tiagodemelo.info
SELECT tabela1.coluna, tabela2.coluna
FROM tabela1, tabela2
WHERE tabela1.coluna1 = tabela2.coluna2;
Use uma juno para consultar dados a partir de uma ou mais tabelas.
Criar uma condio de juno na clusula WHERE.
Prefixar o nome da coluna com o nome da tabela quando o mesmo
nome da coluna aparecer em mais de uma tabela.
249
www.tiagodemelo.info
Um produto cartesiano formado quando:
Uma condio de juno estiver omitida
Uma condio de juno estiver invlida
Todas as linhas na primeira tabela esto unidas a todas as linhas
da segunda tabela
Para evitar um produto Cartesiano, sempre inclua uma condio de
juno vlida em uma clusula WHERE.
250
www.tiagodemelo.info
ENAME
DNAME
------
----------
KING
ACCOUNTING
BLAKE
ACCOUNTING
...
KING RESEARCH
BLAKE RESEARCH
...
56 rows
selected.
EMP (14 linhas) EMP (14 linhas) DEPT (4 linhas) DEPT (4 linhas)
EMPNO ENAME ...
DEPTNO
------ ----- ...
------
7839 KING ...
10
7698 BLAKE ...
30
...
7934 MILLER
... 10
DEPTNO DNAME LOC

------ ----------
--------
10 ACCOUNTING NEW
YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS
BOSTON
"Produto "Produto
Cartesiano: Cartesiano:
14*4=56 linhas" 14*4=56 linhas"
251
www.tiagodemelo.info
Juno
idntica
Juno
no-idntica
Juno
externa
Autojuno
252
www.tiagodemelo.info

EMP EMP

DEPT DEPT

EMPNO ENAME
DEPTNO
------ -------
-------
7839 KING
10
7698 BLAKE
30
7782 CLARK
10
7566 JONES
20
7654 MARTIN
30
7499 ALLEN
30
7844 TURNER
30
7900 JAMES
30
7521 WARD
30
7902 FORD
20
7369 SMITH
20
...
14 rows selected.
DEPTNO DNAME LOC

------- ----------
--------
10 ACCOUNTING NEW
YORK
30 SALES
CHICAGO
10 ACCOUNTING
NEW YORK
20 RESEARCH DALLAS
30 SALES
CHICAGO
30 SALES
CHICAGO
30 SALES
CHICAGO
30 SALES
CHICAGO
30 SALES
CHICAGO
20 RESEARCH DALLAS
20 RESEARCH DALLAS
...
14 rows selected.
Chave estrangeira Chave estrangeira Chave primria Chave primria
253
www.tiagodemelo.info

SQL> SELECT emp.empno, emp.ename, emp.deptno,
2 dept.deptno, dept.loc
3 FROM emp, dept
4 WHERE emp.deptno=dept.deptno;
EMPNO ENAME DEPTNO DEPTNO LOC
----- ------ ------ ------ ---------
7839 KING 10 10 NEW YORK
7698 BLAKE 30 30 CHICAGO
7782 CLARK 10 10 NEW YORK
7566 JONES 20 20 DALLAS
...
14 rows selected.
254
www.tiagodemelo.info
Use os prefixos de tabela para qualificar nomes de coluna que esto
em vrias tabelas.
Melhore o desempenho usando os prefixos de tabela.
Diferencie colunas que possuem nomes idnticos, mas que residam
em tabelas diferentes usando apelidos de coluna.
255
www.tiagodemelo.info
EMP
DEPT
EMPNO ENAME
DEPTNO
------ -------
-------
7839 KING
10
7698 BLAKE
30
7782 CLARK
10
7566 JONES
20
7654 MARTIN
30
7499 ALLEN
30
7844 TURNER
30
7900 JAMES
30
7521 WARD
30
7902 FORD
20
7369 SMITH
20
...
14 rows selected.
DEPTNO DNAME LOC

------ ---------
--------
10 ACCOUNTING NEW
YORK
30 SALES
CHICAGO
10 ACCOUNTING NEW
YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
30 SALES CHICAGO
30 SALES CHICAGO
30 SALES CHICAGO
30 SALES CHICAGO
20 RESEARCH DALLAS
20 RESEARCH DALLAS
...
14 rows selected.
256
www.tiagodemelo.info
SQL> SELECT emp.empno, emp.ename, emp.deptno,
2 dept.deptno, dept.loc
3 FROM emp, dept
4 WHERE emp.deptno=dept.deptno;
SQL> SELECT e.empno, e.ename, e.deptno,
2 d.deptno, d.loc
3 FROM emp e, dept d
4 WHERE e.deptno= d.deptno;
Simplifique consultas usando apelidos de tabela.
257
www.tiagodemelo.info
NAME
CUSTID
-----------
------
JOCKSPORTS
100
TKB SPORT SHOP
101
VOLLYRITE
102
JUST TENNIS
103
K+T SPORTS
105
SHAPE UP
106
WOMENS SPORTS
107
... ...
9 rows selected.
CUSTOMER CUSTOMER
CUSTID ORDID
------- -------
101 610
102 611
104 612
106 601
102 602
106 604
106 605
...
21 rows selected.
ORD ORD
ORDID ITEMID
------ -------
610 3
611 1
612 1
601 1
602 1
...
64 rows
selected.
ITEM ITEM
258
www.tiagodemelo.info
EMP SALGRADE
"o salrio na tabela EMP
est entre salrio inferior
e salrio superior na
tabela SALGRADE"
EMPNO ENAME
SAL
------ -------
------
7839 KING
5000
7698 BLAKE
2850
7782 CLARK
2450
7566 JONES
2975
7654 MARTIN
1250
7499 ALLEN
1600
7844 TURNER
1500
7900 JAMES
950
...
14 rows selected.
GRADE LOSAL
HISAL
----- -----
------
1 700 1200
2 1201 1400
3 1401 2000
4 2001 3000
5 3001 9999
259
www.tiagodemelo.info
ENAME SAL GRADE
---------- --------- ---------
JAMES 950 1
SMITH 800 1
ADAMS 1100 1
...
14 rows selected.
SQL> SELECT e.ename, e.sal, s.grade
2 FROM emp e, salgrade s
3 WHERE e.sal
4 BETWEEN s.losal AND s.hisal;
260
www.tiagodemelo.info
EMP EMP
DEPT DEPT

Nenhum funcionrio do
Nenhum funcionrio do
departamento OPERATIONS
departamento OPERATIONS
ENAME
DEPTNO
-----
------
KING 10
BLAKE 30
CLARK 10
JONES 20
...
DEPTNO DNAME
------
----------
10
ACCOUNTING
30 SALES
10
ACCOUNTING
20 RESEARCH
...
40
OPERATIONS
261
www.tiagodemelo.info
SELECT tabela1.coluna, tabela2.coluna
FROM tabela1, tabela2
WHERE tabela1.coluna(+) = tabela2.coluna;
SELECT tabela1.coluna , tabela2.coluna
FROM tabela1, tabela2
WHERE tabela1.coluna = tabela2.coluna(+);

Use uma juno externa para consultar tambm todas as linhas


que em geral no atendem condio de juno.

O operador de juno externo um sinal de adio (+).


262
www.tiagodemelo.info
SQL> SELECT e.ename, d.deptno, d.dname
2 FROM emp e, dept d
3 WHERE e.deptno(+) = d.deptno
4 ORDER BY e.deptno;
ENAME DEPTNO DNAME
---------- --------- -------------
KING 10 ACCOUNTING
CLARK 10 ACCOUNTING
...
40 OPERATIONS
15 rows selected.
263
www.tiagodemelo.info
EMP (WORKER) EMP (MANAGER)
"MGR na tabela WORKER igual a EMPNO
na tabela MANAGER"
EMPNO ENAME
MGR
----- ------
----
7839 KING
7698 BLAKE
7839
7782 CLARK
7839
7566 JONES
7839
7654 MARTIN
7698
7499 ALLEN
7698
EMPNO ENAME
-----
--------
7839 KING
7839 KING
7839 KING
7698 BLAKE
7698 BLAKE
264
www.tiagodemelo.info
WORKER.ENAME||'WORKSFOR'||MANAG
-------------------------------
BLAKE works for KING
CLARK works for KING
JONES works for KING
MARTIN works for BLAKE
...
13 rows selected.
SQL> SELECT worker.ename||' works for '||manager.ename
2 FROM emp worker, emp manager
3 WHERE worker.mgr = manager.empno;
265
www.tiagodemelo.info
SELECT tabela1.coluna, tabela2.coluna
FROM tabela1, tabela2
WHERE tabela1.coluna1 = tabela2.coluna2;
Juno
idntica
Juno
no-idntica
Juno
externa
Autojuno
266
www.tiagodemelo.info
1. Escreva uma query para mostrar o nome do empregado, nmero e nome do
departamento para todos os empregados
2. Crie uma nica lista de todos os cargos que esto no departamento 30.
3. Escreva uma query para mostrar o nome do empregado, nome e localizao do
departamento de todos os empregados que ganham comisso
4. Mostre o nome do empregado e nome do departamento para todo os
empregado que tenha um A em seu nome. Salve em p4q4.sql.
5. Escreva uma query para mostrar o nome, cargo, nmero e nome do
departamento de todos os empregados que trabalham em DALLAS
6. Mostre o nome e nmero do empregado com o seu respectivo gerente, nome e
nmero. Nomeie as colunas como Employee, emp#, Manager, and Mgr#,
respectivamente. Salve em p4q6.sql
7. Modifique p4q6.sql para mostrar todos os empregados, incluindo King, que no
tem gerente. Salve em p4q7.sql. Execute.
267
www.tiagodemelo.info
8. Crie uma query que mostre o nome do empregado, nmero do departamento e
todos os empregados que trabalham no mesmo departamento. Nomeie cada
coluna apropriadamente.
9. Mostre a estrutura da tabela SALGRADE. Crie uma query que mostre o nome,
cargo, nome do departamento, salrio e a faixa salarial de todos os empregados.
10. Crie uma query para mostrar o nome e data de contratao de todos
empregados contratado aps o Blake.
11. Mostre todos os nomes dos empregados com suas datas de contrataes,
nome dos gerentes e datas de contrataes dos empregados que foram
contratados antes dos seus gerentes. Nomeie as colunas como Employee, Emp
Hiredate, Manager, and Mgr Hiredate, respectivamente.
12. Crie uma query que mostre o nome do empregado e salrio como um
montante de asteriscos. Cada asterisco significa centenas de dlares. Ordene os
dados em ordem descendente de salrio. Nomeie a coluna como
EMPLOYEE_AND_THEIR_SALARIES.
268
www.tiagodemelo.info

Identificar as funes de grupo disponveis
Descrever o uso de funes de grupo
Agrupar dados usando a clusula
GROUP BY
Incluir ou excluir linhas agrupadas usando a clusula HAVING
269
www.tiagodemelo.info
EMP EMP
"salrio "salrio
mximo na mximo na
tabela EMP" tabela EMP"
DEPTNO SAL
--------- ---------
10 2450
10 5000
10 1300
20 800
20 1100
20 3000
20 3000
20 2975
30 1600
30 2850
30 1250
30 950
30 1500
30 1250
MAX(SAL)
---------
5000
As funes de grupo operam em conjuntos de linhas para fornecer um resultado por grupo.
270
www.tiagodemelo.info
AVG
COUNT
MAX
MIN
STDDEV
SUM
VARIANCE
271
www.tiagodemelo.info
SELECT [coluna,] group_function(coluna)
FROM tabela
[WHERE condio]
[GROUP BY coluna]
[ORDER BY coluna];
272
www.tiagodemelo.info
AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL)
-------- --------- --------- ---------
1400 1600 1250 5600
SQL> SELECT AVG(sal), MAX(sal),
2 MIN(sal), SUM(sal)
3 FROM emp
4 WHERE job LIKE 'SALES%';
Voc pode usar AVG e SUM para dados numricos.
273
www.tiagodemelo.info

SQL> SELECT MIN(hiredate), MAX(hiredate)
2 FROM emp;
MIN(HIRED MAX(HIRED
--------- ---------
17-DEC-80 12-JAN-83
Voc pode usar MIN e MAX para qualquer tipo de dados.
274
www.tiagodemelo.info
COUNT(*)
---------
6
SQL> SELECT COUNT(*)
2 FROM emp
3 WHERE deptno = 30;
COUNT(*) retorna o nmero de linhas em uma tabela.
275
www.tiagodemelo.info
SQL> SELECT COUNT(comm)
2 FROM emp
3 WHERE deptno = 30;
COUNT(COMM)
-----------
4
COUNT(expr) retorna o nmero de linhas no nulas.
276
www.tiagodemelo.info
SQL> SELECT AVG(comm)
2 FROM emp;
AVG(COMM)
---------
550
As funes de grupo ignoram valores nulos na coluna.
277
www.tiagodemelo.info
SQL> SELECT AVG(NVL(comm,0))
2 FROM emp;
AVG(NVL(COMM,0))
----------------
157.14286
A funo NVL fora as funes de grupo a inclurem
valores nulos.
278
www.tiagodemelo.info
EMP EMP
"salrio "salrio
mdio mdio
na tabela na tabela
EMP EMP
para cada para cada
departamento" departamento"
DEPTNO
SAL
---------
---------
10
2450
10
5000
10
1300
20
800
20
1100
20
3000
20
3000
20
2975
30
1600
30
2850
30
1250
30
950
30
1500
30
1250
DEPTNO AVG(SAL)
------- ---------
10 2916.6667
20 2175
30 1566.6667
279
www.tiagodemelo.info
SELECT coluna, group_function(coluna)
FROM tabela
[WHERE condio]
[GROUP BY group_by_expression]
[ORDER BY coluna];
Divida linhas de uma tabela em grupos menores usando a
clusula GROUP BY.
280
www.tiagodemelo.info
SQL> SELECT deptno, AVG(sal)
2 FROM emp
3 GROUP BY deptno;
DEPTNO AVG(SAL)
--------- ---------
10 2916.6667
20 2175
30 1566.6667

Todas as colunas na lista SELECT que no estejam em funes de


grupo devem estar na clusula GROUP BY
281
www.tiagodemelo.info
SQL> SELECT AVG(sal)
2 FROM emp
3 GROUP BY deptno;
AVG(SAL)
---------
2916.6667
2175
1566.6667

A coluna GROUP BY no precisa estar na lista SELECT


282
www.tiagodemelo.info
EMP EMP
"soma de "soma de
salrios na salrios na
tabela EMP tabela EMP
para cada para cada
cargo, cargo,
agrupados por agrupados por
departamento" departamento"
DEPTNO JOB SAL
--------- --------- ---------
10 MANAGER 2450
10 PRESIDENT 5000
10 CLERK 1300
20 CLERK 800
20 CLERK 1100
20 ANALYST 3000
20 ANALYST 3000
20 MANAGER 2975
30 SALESMAN 1600
30 MANAGER 2850
30 SALESMAN 1250
30 CLERK 950
30 SALESMAN 1500
30 SALESMAN 1250
JOB SUM(SAL)
--------- ---------
CLERK 1300
MANAGER 2450
PRESIDENT 5000
ANALYST 6000
CLERK 1900
MANAGER 2975
CLERK 950
MANAGER 2850
SALESMAN 5600
DEPTNO
--------
10
10
10
20
20
20
30
30
30
283
www.tiagodemelo.info
SQL> SELECT deptno, job, sum(sal)
2 FROM emp
3 GROUP BY deptno, job;
DEPTNO JOB SUM(SAL)
--------- --------- ---------
10 CLERK 1300
10 MANAGER 2450
10 PRESIDENT 5000
20 ANALYST 6000
20 CLERK 1900
...
9 rows selected.
284
www.tiagodemelo.info
SQL> SELECT deptno, COUNT(ename)
2 FROM emp;
SELECT deptno, COUNT(ename)
*
ERROR at line 1:
ORA-00937: Nenhuma funo de grupo de grupo nico
(Not a single-group group function)




Qualquer coluna ou expresso na lista SELECT que no seja
uma funo agregada deve estar na clusula GROUP BY.
285
www.tiagodemelo.info
SQL> SELECT deptno, AVG(sal)
2 FROM emp
3 WHERE AVG(sal) > 2000
4 GROUP BY deptno;
WHERE AVG(sal) > 2000
*
ERROR at line 3:
ORA-00934: A funo de grupo no permitida aqui
(Group function is not allowed here)

No possvel usar a clusula WHERE para restringir grupos.
Use a clusula HAVING para restringir grupos.
286
www.tiagodemelo.info
"salrio "salrio
mximo por mximo por
departamento departamento
maior do que maior do que
US$ 2.900" US$ 2.900"
EMP EMP
DEPTNO SAL
--------- ---------
10 2450
10 5000
10 1300
20 800
20 1100
20 3000
20 3000
20 2975
30 1600
30 2850
30 1250
30 950
30 1500
30 1250
5000 5000
3000 3000
2850 2850
DEPTNO MAX(SAL)
--------- ---------
10 5000
20 3000
287
www.tiagodemelo.info
SELECT coluna, group_function
FROM tabela
[WHERE condio]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY coluna];
Use a clusula HAVING para restringir grupos
As linhas so agrupadas.
A funo de grupo aplicada.
Os grupos que correspondem clusula HAVING so exibidos.
288
www.tiagodemelo.info
SQL> SELECT deptno, max(sal)
2 FROM emp
3 GROUP BY deptno
4 HAVING max(sal)>2900;
DEPTNO MAX(SAL)
--------- ---------
10 5000
20 3000
289
www.tiagodemelo.info
SQL> SELECT job, SUM(sal) PAYROLL
2 FROM emp
3 WHERE job NOT LIKE 'SALES%'
4 GROUP BY job

6 ORDER BY SUM(sal);
JOB PAYROLL
--------- ---------
ANALYST 6000
MANAGER 8275
5 HAVING
SUM(sal)>5000
290
www.tiagodemelo.info
SQL> SELECT max(avg(sal))
2 FROM emp
3 GROUP BY deptno;
MAX(AVG(SAL))
-------------
2916.6667
Exiba o salrio mdio mximo
291
www.tiagodemelo.info
SELECT coluna, group_function(coluna)
FROM tabela
[WHERE condio]
[GROUP BY group_by_expression]
[HAVING group_condition]
[ORDER BY coluna];
Ordem de avaliao das clusulas:
clusula WHERE
clusula GROUP BY
clusula HAVING
292
www.tiagodemelo.info
Determine se verdadeiro(V) ou falso(F) as seguintes declaraes:
1. Funes de grupo trabalham em muitas linhas para produzir um resultado.
2. Funes de grupo usam nulls nos seus clculos.
3. A clusula WHERE restringe linhas antes de inclu-las em clculos de funes de
grupos.
4. Mostre o maior, o menor, a soma e a mdia dos salrios de todos os empregados.
Nomeie as colunas como Maximum, Minimum, Sum, and Average, respectivamente.
Arredonde os resultados para inteiro. Salve em p5q4.sql.
5. Modifique p5q4.sql para mostrar o menor, o maior, a soma e a mdia dos salrios
para cada tipo de cargo. Salve em p5q5.sql.
6. Escreva uma query para mostrar o nmero de empregados com o mesmo cargo.
7. Determine o nmero de gerentes sem list-los. Nomeie a coluna como Number of
Managers.
293
www.tiagodemelo.info
Determine se verdadeiro(V) ou falso(F) as seguintes declaraes:
8. Escreva uma query que mostre a diferena entre o maior e menor salrio. Nomeie a
coluna como DIFFERENCE.
9. Mostre o nmero do gerente e o salrio mais baixo pago aos funcionrios daquele
gerente. Exclua o empregado que no possua gerente. Exclua qualquer grupo where o
menor salrio seja menor que $1000. Ordene por salrio (descendente).
10. Escreva uma query para mostrar o nome do departamento, nome da localizao,
nmero de empregados, e mdia de salrio para todos os empregados daquele
departamento. Nomeie as colunas como dname, loc, Number of People, and Salary,
respectivamente.
11. Crie uma query que mostre o nmero total de empregados e daquele total, o nmero
que foram contratados em 1980, 1981, 1982, e 1983. Nomeie as colunas de forma
apropriada.