Вы находитесь на странице: 1из 297

Banco de Dados I

Prof. Tiago Eugenio de Melo


tiago@comunidadesol.org

1
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)

2
www.tiagodemelo.info

Bibliografia

Sistemas de Gerncia de Banco de Dados e Modelagem de Dados

A First Course in Database Systems

Database Systems Concepts

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


McGraw Hill, Inc., 2005, 5th ed.

Fundamentals of Database Systems

Ullman, J & Widom, J


Prentice Hall, 2001, 3th ed.

Elmasri, R; Navathe, S
Benjamin Cummings, 2003, 4th ed.

Database Management Systems

Ramakrishnan, R
McGraw Hill, 2003, 3rd ed.

3
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.

4
www.tiagodemelo.info

Conceitos Bsicos: Banco de Dados

Banco de Dados (BD) se transformou em um componente essencial do diaa-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:

Banco de dados multimdia: armazena figuras, som e vdeo.


SIGS - Sistemas de informaes geogrficas: armazenam e analisam mapas,
tempo e imagem de satlite.
Sistemas em tempo real: controle de cho de fbrica e processos de
manufatura.

5
www.tiagodemelo.info

Sistemas de Informao
AUMENTO DE COMPETITIVIDADE

Sistemas

VANTAGEM ESTRATGICA
Passagem Area
Supermercado

Avano tecnolgico
Processo de
Desenvolvimento

Hardware

falta de mtodos padres


falta de ferramentas produtivas
Software
Tempo
6
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

7
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 (SGBD): uma


coleo de programas que permite aos usurios criar e manter um BD

8
www.tiagodemelo.info

Sistemas de Informao: Arquivos x BD


Aplicao

Aplicao

Aplicao

SO

Aplicao

SGBD

Meta Dados

os aplicativos acessam e
manipulam os arquivos
diretamente nos discos

os aplicativos acessam e
manipulam as informaes
atravs dos SGBDs
9
www.tiagodemelo.info

Sistemas de Informao baseados em Arquivos

tipo de arquivo/formato do registro escolhido de acordo


com as necessidades 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

10
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

Ex: fazer emprstimo de um livro

sem reservas?
sem multas pendentes?
registra emprstimo
abre arquivos (fechando outros...)
carrega registros na memria (abre ndice, usa o ponteiro, estourou
memria?, ...)

11
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?

12
www.tiagodemelo.info

Sistemas de Informao baseados em arquivos

Problemas de integridade
Os

valores dos dados atribudos e armazenados em


um banco de dados devem satisfazer certas restries
para manuteno da consistncia.

Problemas de atomicidade
Em

muitas aplicaes crucial assegurar que, uma


vez detectada uma falha, os dados sejam salvos em
seu ltimo estado consistente.

13
www.tiagodemelo.info

Sistemas de Informao baseados em arquivos

Concorrncia

Tolerncia a falhas

difcil implementao

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

Caractersticas da Abordagem de Banco de Dados

natureza auto-contida

um BD armazena dados + os dados que descrevem esses


dados (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

Caractersticas da Abordagem de Banco de Dados

Acesso aos dados

Os SGBDs so responsveis pelo acesso concorrente a um mesmo


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

Como um BD um repositrio centralizado de dados, os SGBDs


provem mecanismo de controle de acesso aos dados, ou seja, s
permite acesso para os usurios autorizados.

16
www.tiagodemelo.info

Caractersticas da Abordagem de Banco de Dados

Abstrao e Vises de dados

O SGBD prov uma representao conceitual 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 modelo
de dados.

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

Caractersticas da Abordagem de Banco de Dados

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

Definio e implementao de programas


que USAM a base de dados

Programas enviam solicitaes de servios


ao SGBD

Trabalham sobre a definio lgica ou


sobre uma viso externa especfica

Usurio Final

Usam a base de dados para suas funes


do dia-a-dia
Interagem com o sistema a partir de uma
estao de trabalho

aplicao
linguagem de consulta interativa

21
www.tiagodemelo.info

SGBDs - Atores

Administrador do Banco de Dados (DBA)

Pessoa(s) que detm a responsabilidade


(tcnica) central sobre os dados
Definio do esquema

conjunto de descries escritas com a DDL que so


armazenadas no Dicionrio de Dados

Definio da estrutura de armazenamento

Requisitos de espao de armazenamento,


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

Monitorar desempenho

Modificao do esquema e Reorganizao fsica

desempenho e alterao nos requisitos funcionais

Concesso de autorizao de acesso a dados


Especificao de restrio de integridade
Definio de estratgias de recuperao de
dados
22
www.tiagodemelo.info

SGBDs - Atores
Projetista do Banco de Dados

Identificar requisitos informacionais da


corporao
Escolher estruturas apropriadas para
representao da informao
Interagir com o usurio
Pode ser confundido com o papel de DBA

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


sem previso de alterao a mdio prazo.
Aplicaes com requisitos de desempenho (ex: tempo
real).
Aplicaes mono-usurio.

25
www.tiagodemelo.info

Modelos de Dados (Data Models)

Processo de Soluo
Mundo
Real
MundoReal

Soluo

Modelo

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

Modelo de Dados
Modelo do
Sistema
(mente do
Cliente)

Modelo de Dados de
Alto Nvel
(conceitual)

Modelo de Dados de
Nvel Intermedirio
(representao ou
Implementao)

Modelo de Baixo
Nvel (fsico)

Server
Representao
Tabular do Modelo de
Entidade
Modelo de Entidade do
Cliente
27
Tabelas no disco

www.tiagodemelo.info

Categorias de Modelos de dados

Mundo
Real

MundoReal

Modelo Entidade Relacionamento


nvel conceitual
Modelo Relacional / Objeto Relacional
nvel lgico

nvel fsico
28
www.tiagodemelo.info

Categorias de Modelos de dados


nvel conceitual
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. A nfase
est na informao e no como ela ser implementada.

nvel lgico
neste nvel de abstrao so escolhidas as estruturas lgicas que
representaro os objetos do modelo conceitual no computador.
nvel fsico

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.
29
www.tiagodemelo.info

Modelos de dados, Esquemas e Instncias

Modelo de dados

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


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

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


seus objetos, tipos de dados, procedimentos, e as restries que devem
ser obedecidas, geralmente feita segundo um Modelo de Dados

Esquema
A descrio de um BD chamada de Esquema de Banco de Dados
O Projeto do BD denominado de esquema do BD

Instncia (estado de um BD)

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


tempo denominado instncias do BD
30
www.tiagodemelo.info

Arquitetura dos 3 Esquemas


Usurios
Finais
NVEL
EXTERNO

Viso
Externa A

Viso
Externa B

...

Viso
Externa N

Mapeamento
Externo/Conceitual

NVEL
CONCEITUAL

Esquema Conceitual

Mapeamento
Conceitual/Interno

NVEL
INTERNO

Esquema Interno

Banco de Dados
Armazenado
31
www.tiagodemelo.info

Esquemas x Modelos de Dados


Usurios
Finais

NVEL
EXTERNO

Viso
Externa A

Viso
Externa B

...

Viso
Externa N

Mapeamento
Externo/Conceitual

NVEL
CONCEITUAL

O Esquema Conceitual esconde os


detalhes das estruturas fsicas. Um
MODELO DE DADOS DE ALTO
NVEL ou de IMPLEMENTAO
pode ser usado.

Esquema Conceitual

Mapeamento
Conceitual/Interno

NVEL
INTERNO

Este Nvel descreve a parte de um


BD para um grupo de usurio
particular. Um MODELO DE DADOS
DE ALTO NVEL ou de
IMPLEMENTAO pode ser usado.

O Esquema interno usa um


MODELO DE DADOS FSICO e
descreve detalhes sobre o
armazenamento dos dados

Esquema Interno

Banco de Dados
Armazenado

32
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

33
www.tiagodemelo.info

Modelagem da Realidade
Processo
identificao de um conjunto de
procedimentos que nela se realizam,
interao entre eles e identificao
dos dados necessrios para a
execuo desses procedimentos

Enfoques
Dados
identificao dos objetos que
compe a realidade, seguida pela
identificao das operaes que
incidem sobre estes

34
www.tiagodemelo.info

Fases de um Projeto de BD
Simplificado

Mundo
Real

Coleo e Anlise de
Requerimentos

Requerimentos Funcionais

Requerimentos de BD

Anlise FUNCIONAL

Projeto CONCEITUAL

Especificao das
Transaes de Alto-Nvel
Independente de SGBD

Esquema Conceitual
(Modelo de dados de alto nvel)

Projeto LGICO
(MAPEAMENTO)

Especfico do SGBD

Projeto dos Programas


da Aplicao

Esquema Lgico e Conceitual


(em um modelo de dados especfico do SGBD)

Projeto FSICO

PROGRAMAS DA
APLICAO

IMPLEMENTAO

Esquema Interno

35
www.tiagodemelo.info

Modelagem de Dados
Em Resumo: o processo de especificao das
estruturas de dados e regras de negcio para a
definio de um sistema de informao

Programa = estrutura de dados + algoritmos

Sistema de Informao = base de dados + operaes

36
www.tiagodemelo.info

Questes para reviso

Qual a diferena entre banco de dados e sistemas de


gerenciamento de banco de dados?
Explique as vantagens e desvantagens no uso de arquivos
em relao aos sistemas de gerenciamento de bancos de
dados.
Explique duas funes de um DBA.
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?
37
www.tiagodemelo.info

Questes para reviso

Comente dois problemas no uso de arquivos para


armazenamento de dados.
O que inconsistncia? D um exemplo.
O que representa a natureza auto-contida dos bancos de
dados?
O que armazenado no catlogo de um banco de dados?
Comente duas atividades de um administrador de banco de
dados (DBA).
Em que situaes o uso de um sistema gerenciador de banco
de dados no recomendvel?
Explique a diferena entre modelo e esquema de banco de
dados.
D um exemplo de instncia de banco de dados.
38
www.tiagodemelo.info

Modelo de Entidade e
Relacionamento
Banco de Dados

39
www.tiagodemelo.info

Modelo Entidade Relacionamento - MER

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
relacionamento

atributo

entidade

40
www.tiagodemelo.info

Modelo Entidade Relacionamento - Convenes


Entidade
Entidade Fraca
Relacionamento
Relacionamento Identificador
Atributo
Atributo Chave
Atributo Multivalorado

41
www.tiagodemelo.info

Modelo Entidade Relacionamento - Convenes


...

Atributo Composto

Atributo Derivado

E1

E2

Participao total de E2 em R
Ex: Agncia e Conta Corrente

E1

(min,max)

E2

Cardinalidade 1:N para E1:E2 em R

Constraint (min,max) de E em R

42
www.tiagodemelo.info

Diagrama ER do Banco de uma Empresa


ultimo

Primeiro

Nome

CPF

Salario

Sexo

Localizaes

Numero

Nome

TRABALHA

Data_Inicio

FUNCIONRIO
1

DEPARTAMENTO

1
GERENCIA

1
1

Horas

TRABALHA
NO

N
TRABALHA
NO

SUPERVISIONA
SUPERVISOR

SUPERVISIONADO

1
PROJETO
DEPENDENTES
Numero

N
Nome

Localizao
Aniv

DEPENDENTE
Sexo

Nome

Parentesco

43
www.tiagodemelo.info

Modelo Entidade Relacionamento


nome

endereco

codigo
salario

codigo

funcionario
1

genero
1

genero

codigo

nome

codigo

supervisor

ator

codigo

N
N

possui

filme

qtde fitas

preco

Status
cliente

possui

descr

nome

principal

Valor
pago

descr

possui
multa

aluguel
N

cliente

codigo
nome

endereco

Valor
previsto

dt aluguel
dt prev ret

dt retorno

condicao
N
N

fita

codigo
44
www.tiagodemelo.info

Modelo Entidade Relacionamento


nome

endereco

codigo
salario

codigo

funcionario

4,N

genero
1,1

1,N

1,1

genero

codigo
codigo

supervisor

2,N

filme

possui

nome
qtde fitas

1,1

preco

Status
cliente

codigo

possui

0,N
1,N

ator
1,1

descr

nome

principal

Valor
pago

descr

possui
multa

aluguel
0,N

1,N

cliente

codigo
nome

endereco

Valor
previsto

dt aluguel
dt prev ret

dt retorno

1,N
1,N

fita

condicao
codigo
45
www.tiagodemelo.info

Componentes do MER

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

46
www.tiagodemelo.info

Entidades Dependentes e Independentes

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

47
www.tiagodemelo.info

Entidades Dependentes e Independentes


Entidade
independente
Entidade
dependente

nome

codigo
salario

funcionario
1

supervisor

nome

endereco

1
N

codigo
N

tem

dependente

codigo

trabalha

nome

departamento
48
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

49
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

50
www.tiagodemelo.info

Relacionamentos: Identificadores e no Identificadores


Entidade
independente

identificador
nome

nome

endereco

codigo
salario

Entidade
dependente

de
funcionario 1
c
om
N
po
st
N

supervisor

codigo
tem

possui
N

od
e

trabalha

traba
l

codigo

nome

ha no
1

No identificador

dependente

departamento

Papel do
relacionamento
51
www.tiagodemelo.info

Relacionamentos Recursivos

situao em que uma entidade me e filha ao mesmo


tempo
nome

codigo
salario

endereco

funcionario
1

supervisor

52
www.tiagodemelo.info

Relacionamentos: Cardinalidade e Participao

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)

E1

E1

E1

RR

parcial

E2

E1

E2

E1

E2

E1

E2

E2

E2

total
53
www.tiagodemelo.info

Herana: Generalizao e Especializao

a forma de agrupar um conjunto de entidades


que compartilham caractersticas comuns.
Restries:

d: mutuamente exclusivo - quando uma instncia da entidade


generalizao s pode estar em uma entidade de
especializao
o: sobrepostos - quando uma instncia da entidade
generalizao pode estar em duas ou mais entidade de
especializao
total: cada entidade da generalizao deve pertencer a pelo
menos uma entidade de especializao
parcial: cada entidade da generalizao pode ou no pertencer
a uma entidade de especializao

54
www.tiagodemelo.info

Herana: Generalizao e Especializao

nome

codigo
sexo

endereco

tipo

funcionario

total
d
generalizao
consultor

horas

tx hora

terceiro

salario

55
www.tiagodemelo.info

Herana: Generalizao e Especializao

nome

codigo
sexo

endereco

tipo

funcionario

Sobreposta

Parcial
O

consultor

horas

tx hora

terceiro

salario

Especializao

56
www.tiagodemelo.info

Herana: Generalizao e Especializao

nome

codigo
sexo

funcionario

endereco

tipo
mostra a direo do
relacionamento
superclasse/subclasse

consultor

horas

tx hora

especializao

57
www.tiagodemelo.info

Agregao

entrevista

candidato

entrevistador

empresa

data

O modelo mostra um relacionamento binrio

entrevista, onde guarda informaes sobre candidatos a cargos para


empresas. Guarda tambm informaes sobre o entrevistador e a data.

58
www.tiagodemelo.info

Agregao

candidato

entrevista

entrevistador

empresa

data

cargo

Suponha que algumas entrevistas resultem em cargos oferecidos e outras


no.
Este modelo est incorreto, pois exige que cada entrevista tenha um
cargo oferecido

59
www.tiagodemelo.info

Agregao
candidato

entrevista

entrevistador

empresa

data

encaminha

cargo

O MER no permite relacionamento entre relacionamento

60
www.tiagodemelo.info

Agregao
candidato

entrevista

entrevistador

empresa

data
encaminha

cargo

O melhor modo para representar a situao anterior usando a agregao.

No modelo acima no existe obrigatoriedade na entrevista para encaminhar um


candidato a um cargo
61
www.tiagodemelo.info

Outras Notaes
Exemplos de Diagramas
ER e ER Estendidos
Banco de Dados

62
www.tiagodemelo.info

Diagramas EER

Diagrama com Notao de Markowitz / Shoshani (1994)

NOME

CPF

TELEFONES

TITULO

VERSO

M
N

PESSOA

SUBORDINADO

CHEFIA

ALOCADA

PROJETO

CHS

CHEFE

63
www.tiagodemelo.info

Diagramas EER

Vejamos estas notaes para: Generalizao, Especializao e


as Associaes -UM, Identificao ou ID, e TEM
CPF

NOME

TELEFONES

SUBORDINADO

TITULO

CHS

1
N

PESSOA

CHEFIA

ALOCADA

PROJETO

N
CHEFE

ADMINISTRATIVO

Qual a diferena
entre Generalizao
e Especializao ?

-UM

-UM

TCNICO

TEM

ENGENHEIRO

ESPECIALIDADE

ID

VERSO

VERSO
64
www.tiagodemelo.info

Diagramas EER

Especializao
N

EMPREGADO

TRABALHA

PROJETO

MODALIDADE
-UM

ESPORTISTA

-UM

ENGENHEIRO

ESPECIALIDADE
FILIADO

EQUIPE
65
www.tiagodemelo.info

Diagramas EER
Diagrama com a Notao do Navathe

TRABALHA
N

EMPREGADO

DEPARTAMENTO
1

SUBORDINADO

N
CHEFIA

CHEFE

GERENCIA

66
www.tiagodemelo.info

Diagramas EER
ESPECIALIZAO
GENERALIZAO ?????
GENERALIZAO

EMPREGADO

Secretrio

Tcnico

Engenheiro

SuporteRedes

Gerente

Assalariado

Empregado
Honorrio

Gerencia

SuporteBD

Gerente
67
www.tiagodemelo.info

Vamos analisar este diagrama !!

O que este DER descreve ?


Qual o problema deste DER ?
DISCIPLINA

N
PRREQUISITO

CURSO
68
www.tiagodemelo.info

Metodologia para projeto de Banco de Dados

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

69
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

70
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

71
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

72
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

73
www.tiagodemelo.info

Metodologia para projeto de Banco de Dados

Projeto Fsico do Banco de Dados


tempo

resposta
espao de utilizao
transaes

74
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

75
www.tiagodemelo.info

Estudo de Caso: Locadora de Vdeo


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

76
www.tiagodemelo.info

Estudo de Caso: Biblioteca


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

77
www.tiagodemelo.info

Listas de Exerccios
Modelo Conceitual - MER
Banco de Dados

78
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L1


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
79
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L2


Exerccios bsicos de MER
1.

Venda de Produtos
Uma firma vende produtos de limpeza e deseja controlar melhor
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 do pedido. 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 de
papel.

80
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L2


Exerccios bsicos de MER
1.

Venda de Produtos (cont.)

Limpex S.A.

Controle Interno

Comendador Oliveira, 27

Pedido: 98765

CGC: 7654321/09

Data: 27/03/2002

Cdigo: C-1234
Nome: Joo da Silva
End: Anita Garibaldi, 8765, Porto Alegre, RS, 90345-678
Telefone: (051) 234-5678
Cod

Desc

Qtde

Total

123

Limpa Tudo

10,00

345

Detergentex

4,00

678

Escovex

3
TOTAL

17,00

81
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L2


Exerccios bsicos de MER
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 os
que j atuaram em pelo menos um filme.

82
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L2


Exerccios bsicos de MER
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 emprestado no mximo trs
exemplares. Para cada emprstimo, registrada a data em que
este foi realizado. Cada associado possui um cdigo, nome e
endereo.
Variao 1: A biblioteca deseja manter registro somente dos
emprstimos correntes (ou seja, ainda no devolvidos).
Variao 2: A biblioteca deseja manter todo o histrico de
emprstimos.

83
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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 e 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.

84
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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.

85
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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 informla. 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.

86
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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.

87
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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.

88
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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.

89
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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.

90
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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).

91
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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.

92
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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.

93
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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).

94
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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

95
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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.

96
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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).

97
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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.

98
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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

99
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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).

100
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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. prdatado, 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).

101
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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).

102
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L3


Exerccios avanados de MER
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

103
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L4


Reserva de passagens areas
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.
104
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L4


Vdeo Locadora
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.

105
www.tiagodemelo.info

Modelo Conceitual: Lista de Exerccio L4


Clnica

Em uma clnica trabalham mdicos e existem pacientes internados. Cada mdico


identificado pelo seu CRM, possui um nome e recebe um salrio na clnica. Um mdico
tem formao

em

diversas especialidades

(ortopedia,traumatologia, etc), mas

s exerce uma delas na clnica. Para todo paciente internado na clnica so


cadastrados alguns dados pessoais: nome, RG, CPF, endereo, telefone(s) para
contato e data do nascimento. Um paciente tem sempre um determinado mdico como
responsvel (com um horrio de visita dirio predeterminado), porm vrios outros
mdicos podem participar do seu tratamento. Pacientes esto sempre internados em
quartos individuais, que so identificados por um nmero e ficam em um andar da
clnica.

106
www.tiagodemelo.info

Modelo RELACIONAL
Banco de Dados

107
www.tiagodemelo.info

Modelo Relacional
representa DADOS e RELACIONAMENTOS por um conjunto de
Tabelas

o modelo relacional utiliza o conceito de relaes ou tabelas no lugar


de arquivos.

As colunas de uma tabela so chamadas de atributos e suas linhas de


tuplas. 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)

relao

tuplas

atributos

108
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)
109
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.

110
www.tiagodemelo.info

Modelo Relacional

O Modelo Relacional Simples e sua estrutura Uniforme baseada em


conceitos da Teoria dos Conjuntos.

A simplicidade 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 MER, 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 LDD/LMD a linguagem SQL.

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


Dizemos que o MER um modelo do nvel conceitual, pois possui um
forte poder semntico, capaz de capturar conceitos do mundo real com
um mnimo de perdas semnticas, facilitando o seu entendimento.

O modelo relacional , por outro lado, um modelo do nvel lgico porque


utilizado para representao em computador de conceitos do mundo real.
111
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

112
www.tiagodemelo.info

Modelo Relacional

Objetivos

Independncia de dados

ordem
indexao
caminhos de acesso

reduzir inconsistncias

regras de projetos (normalizao)

113
www.tiagodemelo.info

Modelo Relacional
Modelo Relacional: Informal
um banco de dados relacional um conjunto de relaes ou tabelas bidimensionais,
gerenciados por operaes relacionais e regidos por restries de integridade de
dados
Pode ser acessado e
modificado executando
instrues SQL (Structured
Query Language)

Banco
de Dados

Nome da Tabela: EMP


EMPNO

ENAME

JOB

7839

KING

7698

Usa um conjunto de
operadores

Nome da Tabela: DEPT

DEPTNO

DEPTNO

DNAME

LOC

PRESIDENT

10

10

ACCOUNTING

NEW YORK

BLAKE

MANAGER

30

20

RESEARCH

DALLAS

7782

CLARK

MANAGER

10

30

SALES

CHICAGO

7566

JONES

MANAGER

20

40

OPERATIONS

BOSTON

114
www.tiagodemelo.info

Modelo Relacional

Relao: Representao Tabular


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 papel desempenhado
PEA-COMPOSTA = PEA x PEA x QTD
composto.PEA | componente.PEA | QTD
no existe ordem entre as colunas, respeitada a propriedade acima

115
www.tiagodemelo.info

Modelo Relacional

Banco de Dados Relacional


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)

116
www.tiagodemelo.info

Modelo Relacional

Restries de Integridade do Modelo relacional


Restries de Integridade (RI) que se aplicam a todo modelo que se diz
conforme ao modelo relacional:
integridade de identidade
integridade referencial

117
www.tiagodemelo.info

Modelo Relacional

Integridade de Identidade: Conceitos


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 mnimo 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 e somente uma chave primria

118
www.tiagodemelo.info

Modelo Relacional

Integridade de Identidade: Conceitos


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

119
www.tiagodemelo.info

Modelo Relacional

CREATE TABLE <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));

120
www.tiagodemelo.info

Modelo Relacional

Integridade Referencial: Conceitos


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

121
www.tiagodemelo.info

Modelo Relacional

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

122
www.tiagodemelo.info

Modelo Relacional

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));
QUAL A POLTICA?

123
www.tiagodemelo.info

Modelo Relacional

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);
124
www.tiagodemelo.info

Mapeamento do MER para o Relacional

125
www.tiagodemelo.info

Passo 1 - Mapear Conjuntos de Entidades Regulares


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

126
www.tiagodemelo.info

Passo 1 - Mapear Conjuntos de Entidades Regulares

Primeiro Passo:
Funcionrio = {FNmero, FNome, Endereo, Salrio}
Departamento = {DNmero,DNome}
Projeto = {PNmero, PNome}

OBSERVAES:
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

127
www.tiagodemelo.info

Passo 2 - Mapear Conjuntos de Entidades Fracas

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

128
www.tiagodemelo.info

Passo 2 - Mapear Conjuntos de Entidades Fracas

Segundo Passo:
Dependente = {DNome, FNmero, DataNiver, Parentesco}

129
www.tiagodemelo.info

Passo 3 - Mapear Conjuntos de Relacionamentos Binrio 1:1

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

130
www.tiagodemelo.info

Passo 3 - Mapear Conjuntos de Relacionamentos Binrio 1:1

Terceiro Passo:
Departamento = {DNmero,Dnome, DataIni,FNmero}
Os atributos FNmero e DataIni so adicionados relao "Departamento",
definida no primeiro passo. Note que o atributo Fnmero adicionado como
um atributo no chave na relao "Departamento"

131
www.tiagodemelo.info

Passo 4 - Mapear Conjuntos de Relacionamento Binrio Regular 1:N

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


tambm no 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.

132
www.tiagodemelo.info

Passo 4 - Mapear Conjuntos de Relacionamento Binrio Regular 1:N

Neste passo so mapeados os relacionamentos: supervisionar, trabalhar e controlar.


133
www.tiagodemelo.info

Passo 4 - Mapear Conjuntos de Relacionamento Binrio Regular 1:N

Quarto Passo:
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
SuperNmero foi adicionado a relao "Funcionrio", definida no
primeiro passo.
O mesmo acontece com o relacionamento trabalhar; apenas o
atributo DNumero foi adicionado a relao "Funcionrio".
No relacionamento controlar, que tambm no possui atributos, foi
adicionado o atributo DNumero na relao Projeto que j havia sido
definida no primeiro passo.

134
www.tiagodemelo.info

Passo 5 - Mapear Relacionamento Binrio N:N

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.

135
www.tiagodemelo.info

Passo 5 - Mapear Relacionamento Binrio M:N

Quinto Passo:
O relacionamento participar que envolve os conjuntos de entidades
"Funcionrio" e "Projeto", avaliado neste passo.
Cria-se uma nova relao: Participar = {FNmero, PNmero, horas}
136
www.tiagodemelo.info

Passo 6 - Mapear Conjuntos de Relacionamentos n-rio, n>2

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:

137
www.tiagodemelo.info

Passo 6 - Mapear Conjuntos de Relacionamentos n-rio, n>2

Mapeamento do conjunto de relacionamento ternrio:


Oferecer = {OCod, CCod, FNum, Horrio}

138
www.tiagodemelo.info

Passo 7 - Mapear Atributos Multi-valorados

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 multivalorado cria-se uma nova relao que tem como chave os atributos
chave da relao a qual pertencia juntamente com o atributo multivalorado 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.
139
www.tiagodemelo.info

Passo 7 - Mapear Atributos Multi-valorados

Stimo Passo:
LocalDep = {DNmero, Localizao}

140
www.tiagodemelo.info

Passo 8 - Mapear Generalizao/Especializao

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
saldo

num
conta

conta = {num, saldo}


poupana = {num, tx juros}
movimento = {num, lim ch esp}
Poupana

tx juros

movimento

Lim ch esp
141
www.tiagodemelo.info

Passo 8 - Mapear Generalizao/Especializao


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
saldo

num

poupana = {num, saldo, tx juros}

conta

movimento = {num, saldo, lim ch esp}

Poupana

tx juros

movimento

Lim ch esp

142
www.tiagodemelo.info

Passo 9 - Mapear Agregao

A transformao de agregao em tabela bastante direta. Considere o


exemplo abaixo. A tabela para o relacionamento entrevista inclui uma
coluna para cada atributo do relacionamento, uma para a chave primria
de candidato e uma para empresa.

Cod_candidato
candidato

CGC
N

entrevista

entrevistador

empresa

data
entrevista = {cod_candidato, CGC, entrevistador, data}
encamiha = {cod_candidato, CGC, cod_cargo}

encaminha

cargo

Cod_cargo
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

Exerccios

Faa o mapeamento para o modelo relacional

147
www.tiagodemelo.info

Exerccios

Faa o mapeamento para o modelo relacional

148
www.tiagodemelo.info

Dependncia Funcional

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.

149
www.tiagodemelo.info

Dependncia Funcional

Sejam os seguintes subconjuntos de atributos


de um esquema T:
A = (A1, A2, ..., An) e B = (B1, B2, ..., Bn)

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
150
www.tiagodemelo.info

Dependncia Funcional

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.

151
www.tiagodemelo.info

Dependncia Funcional

Exemplo de tabela de vendas

F# : chave primria do fornecedor


Cidade : cidade do fornecedor
P# : chave primria do produto
QDE : quantidade

F#
F1
F1
F2
F2
F3
F4
F4
F4

CIDADE
Londres
Londres
Paris
Paris
Paris
Londres
Londres
Londres

P#
P1
P2
P1
P2
P2
P2
P4
P5

QDE
100
100
200
200
300
400
400
400
152
www.tiagodemelo.info

Dependncia Funcional

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# }

153
www.tiagodemelo.info

Dependncia Funcional

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:
Reflexo:

B.

se B um subconjunto de A, ento

Aumento:

se A B, ento AC BC.

Transitividade:

se A B e B C, ento A C.
154
www.tiagodemelo.info

Dependncia Funcional
Autoderminao:

A A.

Decomposio:

C.

Unio:

se A BC, ento A B e A

se A B e A C, ento A BC.

Composio:

se A B e C D, ento AC BD.

Teorema

Geral da Unificao: se A B e C
D, ento A U (C D) BD.
155
www.tiagodemelo.info

Dependncia Funcional

Exemplo de uso das propriedades


Considere

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


F e as DFs:
A BC
BE
CD EF
Mostre que a DF AD F vlida para R e, portanto,
um membro do fecho do conjunto dado.

156
www.tiagodemelo.info

Dependncia Funcional

Soluo:
1. A

BC

(dada)

2. A

(1, decomposio)

3. AD

CD

(2, aumento)

4. CD

EF

(dada)

5. AD

EF

(3 e 4, transitividade)

6. AD

(5, decomposio)
157
www.tiagodemelo.info

Normalizao

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.

158
www.tiagodemelo.info

Normalizao

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.

159
www.tiagodemelo.info

Normalizao - 1 Forma Normal (1FN)

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.

160
www.tiagodemelo.info

Normalizao - 1 Forma Normal (1FN)

1 FN
as linhas da tabela so unvocas
as linhas no contm itens repetitivos
os atributos so atmicos

161
www.tiagodemelo.info

Normalizao - 1FN
Tabela: PEDIDO (no normalizada)
NumPed

DataEmis

Fornecedor

Jan 20

Casa Software

Feb 10

Computer

CGC

End

CodProd NomeProd

1111111-11 Lapa Rua A

2222222-22

111
222
333
222
333

Itu 49

Qtde

Preo

10
44
50
73
80

R$100.00
R$150.00
R$120.00
R$150.00
R$120.00

Prod 1
Prod 2
Prod 3
Prod 4
Prod 5

Tabela: PEDIDO sem itens repetidos


NumPed
3
3
3
4
4

DataEmis Fornecedor
Jan 20
Jan 20
Jan 20
Feb 10
Feb 10

Casa Software
Casa Software
Casa Software
Computer
Computer

CGC

End

1111111-11 Lapa Rua A


1111111-11 Lapa Rua A
1111111-11 Lapa Rua A
2222222-22
Itu 49
2222222-22
Itu 49

Cod Prod NomeProd QtdeProd PreoProd


111
222
333
222
333

Prod 1
Prod 2
Prod 3
Prod 4
Prod 5

10
44
50
73
80

R$100.00
R$150.00
R$120.00
R$150.00
R$120.00

162
www.tiagodemelo.info

Normalizao 1FN
Processo para obteno da 1FN

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

163
www.tiagodemelo.info

Normalizao 1FN
Tabela: PEDIDO sem itens repetidos
NumPed
3
3
3
4
4

DataEmis Fornecedor
Jan 20
Jan 20
Jan 20
Feb 10
Feb 10

Casa Software
Casa Software
Casa Software
Computer
Computer

CGC
1111111-11
1111111-11
1111111-11
2222222-22
2222222-22

End

Cod Prod NomeProd QtdeProd PreoProd

Lapa Rua A
Lapa Rua A
Lapa Rua A
Itu Rua 49
Itu Rua 49

111
222
333
222
333

Prod 1
Prod 2
Prod 3
Prod 2
Prod 3

10
44
50
73
80

R$100.00
R$150.00
R$120.00
R$150.00
R$120.00

Tabela: PEDIDO com Atributos Atmicos


NumPed

DataEmis

Fornecedor

CGC

Bairro

Rua

Cod Prod

NomeProd

QtdeProd

3
3
3
4
4

Jan 20
Jan 20
Jan 20
Feb 10
Feb 10

Casa Software
Casa Software
Casa Software
Computer
Computer

1111111-11
1111111-11
1111111-11
2222222-22
2222222-22

Lapa
Lapa
Lapa
Itu
Itu

Rua A
Rua A
Rua A
Rua 49
Rua 49

111
222
333
222
333

Prod 1
Prod 2
Prod 3
Prod 2
Prod 3

10
44
50
73
80

164
www.tiagodemelo.info

Normalizao 1FN
Processo para obteno da 1FN

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)

165
www.tiagodemelo.info

Normalizao 1FN
Tabela: PEDIDO com Chave Primria: NumPed+CodProd

NumPed
3
3
3
4
4

Cod Prod
111
222
333
222
333

DataEmis
Jan 20
Jan 20
Jan 20
Feb 10
Feb 10

Fornecedor
Casa Software
Casa Software
Casa Software
Computer
Computer

CGC
1111111-11
1111111-11
1111111-11
2222222-22
2222222-22

Bairro
Lapa
Lapa
Lapa
Itu
Itu

Rua
Rua A
Rua A
Rua A
Rua 49
Rua 49

NomeProd
Prod 1
Prod 2
Prod 3
Prod 2
Prod 3

QtdeProd
10
44
50
73
80

166
www.tiagodemelo.info

Normalizao 1FN

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.

167
www.tiagodemelo.info

Normalizao 2FN

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


est em 1FN e todo atributo no chave
irredutivelmente dependente da chave primria.

168
www.tiagodemelo.info

Normalizao 2FN
Segunda Forma Normal (2FN)

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

169
www.tiagodemelo.info

Normalizao 2FN
Tabela: no normalizada

E depende s de B

Coluna A

Coluna B

Coluna C

Coluna D Coluna E

CHAVE
C depende de A e B

D depende s de A

170
www.tiagodemelo.info

Normalizao 2FN
Tabela: normalizada

Coluna A

Coluna B Coluna C

Coluna A

Coluna D

Coluna B Coluna E

171
www.tiagodemelo.info

Normalizao 2FN
Processo para obteno da 2FN

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

172
www.tiagodemelo.info

Normalizao 2FN
Tabela na 1FN: Pedido
NumPed Cod Prod
3
3
3
4
4

111
222
333
222
333

DataEmis Fornecedor
Jan 20
Jan 20
Jan 20
Feb 10
Feb 10

Casa Software
Casa Software
Casa Software
Computer
Computer

CGC
1111111-11
1111111-11
1111111-11
2222222-22
2222222-22

Bairro
Lapa
Lapa
Lapa
Itu
Itu

Rua NomeProd QtdeProd PreoProd


Rua A
Rua A
Rua A
Rua 49
Rua 49

Prod 1
Prod 2
Prod 3
Prod 2
Prod 3

10
44
50
73
80

R$100.00
R$150.00
R$120.00
R$150.00
R$120.00

Tabela na 2FN: Pedido


NumPed Cod Prod DataEmis Fornecedor
3
3
3
4
4

111
222
333
222
333

Jan 20
Jan 20
Jan 20
Feb 10
Feb 10

Casa Software
Casa Software
Casa Software
Computer
Computer

C GC
1111111-11
1111111-11
1111111-11
2222222-22
2222222-22

Bairro
Lapa
Lapa
Lapa
Itu
Itu

Rua QtdeProd
Rua A
Rua A
Rua A
Rua 49
Rua 49

10
44
50
73
80

Tabela na 2FN: Produto


C od Prod
111
222
333

N om eProd
Prod 1
Prod 2
Prod 3

PreoProd
R $1 00.00
R $1 50.00
R $1 20.00
173
www.tiagodemelo.info

Normalizao 3FN

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.

174
www.tiagodemelo.info

Normalizao 3FN
Terceira Forma Normal (3FN)

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

175
www.tiagodemelo.info

Normalizao 3FN
Tabela: no normalizada
C determina D

Coluna A

Coluna B

Coluna C

Coluna D Coluna E

A determina B
A determina C

A determina E

176
www.tiagodemelo.info

Normalizao 3FN
Tabela: normalizada

Coluna A

Coluna B Coluna C

Coluna E

C o lu n a CC o lu n a D

177
www.tiagodemelo.info

Normalizao 3FN
Tabela na 2FN: Pedido

N u m P e dC o d P r o dD a t a E m is
F o r n e ce d o r C G C
3
3
3
4
4

111
222
333
222
333

2 0 /Ja n
2 0 /Ja n
2 0 /Ja n
1 0 /Fe v
1 0 /Fe v

Ca sa So ft w a re 1 1 1 1 1 1 1 -1 1
Ca sa So ft w a re 1 1 1 1 1 1 1 -1 1
Ca sa So ft w a re 1 1 1 1 1 1 1 -1 1
Co m p u t e r 2 2 2 2 2 2 2 -2 2
Co m p u t e r 2 2 2 2 2 2 2 -2 2

B a ir r o
La p a
La p a
La p a
It u
It u

Ru a Q t de P r o d
Ru a A
Ru a A
Ru a A
Ru a 4 9
Ru a 4 9

10
44
50
73
80

Ba ir r o
Lap a
It u

Ru a
Ru a A
Ru a 4 9

Tabela na 3FN: Pedido

N u m P e dC o d P r o dD a t a E m is C G C
3
3
3
4
4

111
222
333
222
333

2 0 /Ja n
2 0 /Ja n
2 0 /Ja n
1 0 /Fe v
1 0 /Fe v

Q t de Prod

1 1 1 1 1 1 1 -1 1
1 1 1 1 1 1 1 -1 1
1 1 1 1 1 1 1 -1 1
2 2 2 2 2 2 2 -2 2
2 2 2 2 2 2 2 -2 2

10
44
50
73
80

Tabela na 3FN: Fornecedor


Tabela na 3FN: Produto
C o d P r o dN o m e P r o dP r e o P r o d
CG C
Fo r n e ce d or
111
222
333

Pro d 1
Pro d 2
Pro d 3

R$ 1 0 0 ,0 0
R$ 1 5 0 ,0 0
R$ 1 2 0 ,0 0

1 1 1 1 1 1 1 -1 1
2 2 2 2 2 2 2 -2 2

Casa Soft w ar e
Com p u t er

178
www.tiagodemelo.info

Normalizao 1FN (anomalias)

Considere a tabela Empregados, sendo chave primria os campos


Matrcula e CodProj.

Matrcula

Nome

CodCargo

NomeCargo

CodProj

DataFim

Horas

Programador

01

17/07/95

37

120

Joo

120

Joo

Programador

08

12/01/96

12

121

Hlio

Programador

01

17/07/95

45

121

Hlio

Programador

12

21/03/96

107

270

Gabriel

Analista

08

12/01/96

10

270

Gabriel

Analista

12

21/03/96

38

273

Silva

Projetista

01

17/07/95

22

274

Abrao

Analista

12

21/03/96

31
179
www.tiagodemelo.info

Normalizao 1FN (anomalias)

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.

180
www.tiagodemelo.info

Normalizao 2FN (anomalias)


EMPREGADO
Matrcula
120
121
270
273
274

Nome

CodCargo
1
1
2
3
2

Joo
Hlio
Gabriel
Silva
Abrao

ALOCAO
Matrcula
120
120
121
121
121
270
270
273
274

CodProj
01
08
01
08
12
08
12
01
12

NomeCargo
Programador
Programador
Analista
Projetista
Analista

PROJETO
Horas
37
12
45
21
107
10
78
22
31

CodProj
01
08
12

DataFim
17/07/95
12/01/96
21/03/96

181
www.tiagodemelo.info

Normalizao 2FN (anomalias)

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.

182
www.tiagodemelo.info

Normalizao 3FN (anomalias)


EMPREGADO
Matrcula
120
121
270
273
274

Nome
Joo
Hlio
Gabriel
Silva
Abrao

CodCargo
1
1
2
3
2

CARGO
CodCargo
1
2
3

Nome
Programador
Analista
Projetista

183
www.tiagodemelo.info

Passos para o projeto de banco de dados


relacionais1
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/

184
www.tiagodemelo.info

Passos para o projeto de banco de dados


relacionais

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.

185
www.tiagodemelo.info

Ferramenta de Modelagem

Objetivo:
Apresentar ferramenta livre de banco
de dados

186
www.tiagodemelo.info

DBDesigner 4

187
www.tiagodemelo.info

188
www.tiagodemelo.info

DBDesigner 4 - Principal

189
www.tiagodemelo.info

DBDesigner 4 Edio de Tabelas

190
www.tiagodemelo.info

DBDesigner 4 Edio de Relacionamentos

191
www.tiagodemelo.info

DBDesigner 4 Edio de Tipos de Dados

192
www.tiagodemelo.info

DBDesigner 4 Conexo com Banco de Dados

193
www.tiagodemelo.info

DBDesigner 4 Mdulo de Consultas

194
www.tiagodemelo.info

DBDesigner 4 Mdulo de Impresso

195
www.tiagodemelo.info

Criando Instrues SQL Bsicas

Objetivos:
Listar os recursos das instrues SELECT SQL
Executar uma instruo SELECT bsica

196
www.tiagodemelo.info

Recursos das Instrues SELECT SQL

Seleo

Projeo

Tabela 1

Tabela 1

Tabela 1

Juno

Tabela 2
197
www.tiagodemelo.info

Instruo SELECT Bsica

SELECT
FROM

[DISTINCT] {*, coluna [apelido],...}


tabela;

SELECT identifica que colunas.


FROM identifica qual tabela.

198
www.tiagodemelo.info

Criando Instrues SQL

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.

199
www.tiagodemelo.info

Selecionando Todas as Colunas

SQL> SELECT *
2 FROM
dept;
DEPTNO
--------10
20
30
40

DNAME
-------------ACCOUNTING
RESEARCH
SALES
OPERATIONS

LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON

200
www.tiagodemelo.info

Selecionando Colunas Especficas

SQL> SELECT deptno, loc


2 FROM
dept;
DEPTNO
--------10
20
30
40

LOC
------------NEW YORK
DALLAS
CHICAGO
BOSTON

201
www.tiagodemelo.info

Defaults de Cabealho de Coluna

Justificada default
Esquerda: Dados de caractere e data
Direita: Dados numricos
Exibio default: Letra maiscula

202
www.tiagodemelo.info

Expresses Aritmticas

Criar expresses com dados NUMBER e DATE usando operadores


aritmticos

Operador

Descrio

Adicionar

Subtrair

Multiplicar
Dividir

203
www.tiagodemelo.info

Usando Operadores Aritmticos

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.

204
www.tiagodemelo.info

Precedncia do Operador

/ +

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.

205
www.tiagodemelo.info

Precedncia do Operador

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.

206
www.tiagodemelo.info

Usando Parnteses

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.

207
www.tiagodemelo.info

Definindo um Valor Nulo

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.
SQL> SELECT ename, job, sal, comm
2 FROM
emp;
ENAME
JOB
SAL
COMM
---------- --------- --------- --------KING
PRESIDENT
5000
BLAKE
MANAGER
2850
...
TURNER
SALESMAN
1500
0
...
14 rows selected.
208
www.tiagodemelo.info

Valores Nulos nas Expresses Aritmticas

Expresses aritmticas contendo um valor nulo so avaliadas como nulo.

SQL> select ename, 12*sal+comm


2 from
emp
3 WHERE ename='KING';
ENAME
12*SAL+COMM
---------- ----------KING

209
www.tiagodemelo.info

Definindo um Apelido de Coluna

Renomeia um cabealho de coluna


til para clculos
Segue imediatamente o nome da coluna
Palavra-chave AS 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

210
www.tiagodemelo.info

Usando Apelidos de Coluna

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

------------- ------------...
211
www.tiagodemelo.info

Operador de Concatenao

Concatena colunas ou strings de caractere a outras


colunas
representado por duas barras Verticais - ||
Cria uma coluna resultante que uma expresso de
caracteres

212
www.tiagodemelo.info

Usando um Operador de Concatenao

SQL> SELECT
2 FROM

ename||job AS "Employees"
emp;

Employees
------------------KINGPRESIDENT
BLAKEMANAGER
CLARKMANAGER
JONESMANAGER
MARTINSALESMAN
ALLENSALESMAN
...
14 rows selected.

213
www.tiagodemelo.info

Strings Literais de Caracteres

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.

214
www.tiagodemelo.info

Usando Strings Literais de Caracteres

SQL> SELECT ename ||' is a '||job


2
AS "Employee Details"
3 FROM
emp;
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.

215
www.tiagodemelo.info

Linhas Duplicadas

A exibio default das consultas de todas as linhas, incluindo


linhas duplicadas.

SQL> SELECT deptno


2 FROM
emp;
DEPTNO
--------10
30
10
20
...
14 rows selected.
216
www.tiagodemelo.info

Eliminando Linhas Duplicadas

Elimine linhas duplicadas usando a palavra-chave DISTINCT na clusula


SELECT.

SQL> SELECT DISTINCT deptno


2 FROM
emp;
DEPTNO
--------10
20
30

217
www.tiagodemelo.info

Exibindo a Estrutura de Tabela

Use o comando DESCRIBE do SQL*Plus para exibir a estrutura de uma tabela.

DESC[RIBE] nome da tabela

SQL> DESCRIBE dept


Name
Null?
----------------- -------DEPTNO
NOT NULL
DNAME
LOC

Type
-----------NUMBER(2)
VARCHAR2(14)
VARCHAR2(13)

218
www.tiagodemelo.info

Restringindo e Classificando Dados

Objetivos:
Limitar linhas recuperadas por uma consulta
Classificar linhas recuperadas por uma consulta

219
www.tiagodemelo.info

Limitando Linhas Usando uma Seleo

EMP
EMPNO ENAME
7839
7698
7782
7566
...

KING
BLAKE
CLARK
JONES

JOB

...

DEPTNO

PRESIDENT
MANAGER
MANAGER
MANAGER

10
30
10
20

"recuperar
todos os
funcionrios do
departamento 10"

EMP
EMPNO ENAME

JOB

7839 KING
PRESIDENT
7782 CLARK MANAGER
7934 MILLER CLERK

...

DEPTNO
10
10
10

220
www.tiagodemelo.info

Limitando Linhas Selecionadas

Restringe as linhas retornadas usando a clusula WHERE.


SELECT
FROM
[WHERE

[DISTINCT] {*| coluna [apelido], ...}


tabela
condio(es)];

A clusula WHERE segue a clusula FROM.

221
www.tiagodemelo.info

Usando a Clusula WHERE

SQL> SELECT ename, job, deptno


2 FROM
emp
3 WHERE job='CLERK';
ENAME
---------JAMES
SMITH
ADAMS
MILLER

JOB
DEPTNO
--------- --------CLERK
30
CLERK
20
CLERK
20
CLERK
10

222
www.tiagodemelo.info

Strings de Caractere e Datas

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.

SQL> SELECT
2 FROM
3 WHERE

ename, job, deptno


emp
ename = 'JAMES' ;

223
www.tiagodemelo.info

Operadores de Comparao

Operador

Significado

Igual a

>

Maior do que

>=

Maior do que ou igual a

<

Menor do que

<=

Menor ou igual a

<>

Diferente de

224
www.tiagodemelo.info

Usando Operadores de Comparao

SQL> SELECT ename, sal, comm


2 FROM
emp
3 WHERE sal<=comm;
ENAME
SAL
COMM
---------- --------- --------MARTIN
1250
1400

225
www.tiagodemelo.info

Outros Operadores de Comparao

Operador

Significado

BETWEEN
...AND...

Entre dois valores (inclusive)

IN(list)

Vincula qualquer um de uma


lista de valores

LIKE

Vincula um padro de caractere

IS NULL

um valor nulo

IS NOT NULL

No um valor nulo

226
www.tiagodemelo.info

Usando o Operador BETWEEN

Use o operador BETWEEN para exibir linhas baseadas em uma faixa


de valores.

SQL> SELECT
2 FROM
3 WHERE

ename, sal
emp
sal BETWEEN 1000 AND 1500;

ENAME
SAL
---------- --------MARTIN
1250
TURNER
1500
WARD
1250
ADAMS
1100
MILLER
1300

Limite
inferior

Limite
superior

227
www.tiagodemelo.info

Usando o Operador IN

Use o operador IN para testar os valores de uma lista.

SQL> SELECT
2 FROM
3 WHERE
EMPNO
--------7902
7369
7788
7876

empno, ename, sal, mgr


emp
mgr IN (7902, 7566, 7788);

ENAME
SAL
MGR
---------- --------- --------FORD
3000
7566
SMITH
800
7902
SCOTT
3000
7566
ADAMS
1100
7788

228
www.tiagodemelo.info

Usando o Operador LIKE

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.

SQL> SELECT
2 FROM
3 WHERE

ename
emp
ename LIKE 'S%';

229
www.tiagodemelo.info

Usando o Operador LIKE

Voc pode combinar caracteres de vinculao de padro.

SQL> SELECT
2 FROM
3 WHERE

ename
emp
ename LIKE '_A%';

ENAME
---------MARTIN
JAMES
WARD
possvel usar o identificador ESCAPE para procurar por "%" ou "_".

230
www.tiagodemelo.info

Usando o Operador IS NULL

Teste para valores nulos com o operador IS NULL.

SQL> SELECT
2 FROM
3 WHERE

ename, mgr
emp
mgr IS NULL;

ENAME
MGR
---------- --------KING

231
www.tiagodemelo.info

Operadores Lgicos

Operador

Significado

AND

Retorna TRUE se as condies de


componentes forem TRUE

OR

Retorna TRUE se uma condio de


componente for TRUE

NOT

Retorna TRUE se a condio seguinte for


FALSE

232
www.tiagodemelo.info

Usando o Operador AND

AND exige que ambas as condies sejam TRUE.

SQL>
2
3
4

SELECT
FROM
WHERE
AND

EMPNO
--------7876
7934

empno, ename, job, sal


emp
sal>=1100
job='CLERK';

ENAME
---------ADAMS
MILLER

JOB
SAL
--------- --------CLERK
1100
CLERK
1300

233
www.tiagodemelo.info

Usando o Operador OR

OR exige que uma condio seja TRUE.


SQL>
2
3
4

SELECT
FROM
WHERE
OR

empno, ename, job, sal


emp
sal>=1100
job='CLERK';

EMPNO ENAME
--------- ---------7839 KING
7698 BLAKE
7782 CLARK
7566 JONES
7654 MARTIN
...
7900 JAMES
...
14 rows selected.

JOB
SAL
--------- --------PRESIDENT
5000
MANAGER
2850
MANAGER
2450
MANAGER
2975
SALESMAN
1250
CLERK

950
234
www.tiagodemelo.info

Usando o Operador NOT

SQL> SELECT ename, job


2 FROM
emp
3 WHERE job NOT IN ('CLERK','MANAGER','ANALYST');
ENAME
---------KING
MARTIN
ALLEN
TURNER
WARD

JOB
--------PRESIDENT
SALESMAN
SALESMAN
SALESMAN
SALESMAN

235
www.tiagodemelo.info

Regras de Precedncia

Ordem de Avaliao
1

Operador

Todos os operadores
de comparao
NOT

3
4

AND
OR

Sobreponha regras de precedncia usando parnteses.

236
www.tiagodemelo.info

Regras de Precedncia

SQL>
2
3
4
5

SELECT
FROM
WHERE
OR
AND

ENAME
---------KING
MARTIN
ALLEN
TURNER
WARD

ename, job, sal


emp
job='SALESMAN'
job='PRESIDENT'
sal>1500;
JOB
SAL
--------- --------PRESIDENT
5000
SALESMAN
1250
SALESMAN
1600
SALESMAN
1500
SALESMAN
1250

237
www.tiagodemelo.info

Regras de Precedncia

Use parnteses para forar a prioridade.


SQL>
2
3
4
5

SELECT
FROM
WHERE
OR
AND

ENAME
---------KING
ALLEN

ename, job, sal


emp
(job='SALESMAN'
job='PRESIDENT')
sal>1500;
JOB
SAL
--------- --------PRESIDENT
5000
SALESMAN
1600

238
www.tiagodemelo.info

Clusula ORDER BY

Classificar as linhas com a clusula ORDER BY


ASC: ordem crescente, default
DESC: ordem decrescente
A clusula ORDER BY vem depois na instruo SELECT.
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.

239
www.tiagodemelo.info

Classificando em Ordem Decrescente

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.
240
www.tiagodemelo.info

Classificando por Apelido de Coluna

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.
241
www.tiagodemelo.info

Classificando por Vrias Colunas

A ordem da lista ORDER BY a ordem de classificao.

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.

242
www.tiagodemelo.info

Sumrio

SELECT
FROM
[WHERE
[ORDER BY

[DISTINCT] {*| coluna [apelido], ...}


tabela
condio(es)]
{coluna, expr, apelido} [ASC|DESC]];

243
www.tiagodemelo.info

Funes de Uma nica Linha

Objetivos:
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

244
www.tiagodemelo.info

Funes SQL

Entrada

Funo

arg 1

Sada

A funo executa
a ao

arg 2

Resultado
valor

arg n

245
www.tiagodemelo.info

Dois Tipos de Funes SQL

Funes

Funes de
Uma nica Linha

Funes de
Vrias Linhas

246
www.tiagodemelo.info

Funes de Uma nica Linha

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

function_name (coluna|expresso, [arg1, arg2,...])

247
www.tiagodemelo.info

Funes de Uma nica Linha

Caractere

Geral

Nmero
Funes de
Uma nica Linha

Converso

Data

248
www.tiagodemelo.info

Funes de Caractere

Funes de
caractere

Funes de Converso de
Maisculas e Minsculas
LOWER
UPPER
INITCAP

Funes de manipulao
de caractere
CONCAT
SUBSTR
LENGTH
INSTR
LPAD
TRIM
249
www.tiagodemelo.info

Exibindo Dados de Vrias Tabelas

Objetivos:
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

250
www.tiagodemelo.info

Obtendo Dados de Vrias Tabelas

EMP
EMPNO
-----7839
7698
...
7934

DEPT
ENAME
----KING
BLAKE

... DEPTNO
... -----...
10
...
30

MILLER ...

10

DEPTNO
-----10
20
30
40

DNAME
---------ACCOUNTING
RESEARCH
SALES
OPERATIONS

LOC
-------NEW YORK
DALLAS
CHICAGO
BOSTON

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.
251
www.tiagodemelo.info

O Que uma Juno?

Use uma juno para consultar dados a partir de uma ou mais tabelas.

SELECT
FROM
WHERE

tabela1.coluna, tabela2.coluna
tabela1, tabela2
tabela1.coluna1 = tabela2.coluna2;

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.

252
www.tiagodemelo.info

Produto Cartesiano

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.

253
www.tiagodemelo.info

Gerando Produto Cartesiano

EMP (14 linhas)


EMPNO
-----7839
7698
...
7934

ENAME
----KING
BLAKE

DEPT (4 linhas)
... DEPTNO
... -----...
10
...
30

MILLER ...

"Produto
Cartesiano:
14*4=56 linhas"

10

DEPTNO
-----10
20
30
40

DNAME
---------ACCOUNTING
RESEARCH
SALES
OPERATIONS

ENAME
DNAME
--------------KING
ACCOUNTING
BLAKE
ACCOUNTING
...
KING
RESEARCH
BLAKE
RESEARCH
...
56 rows selected.

LOC
-------NEW YORK
DALLAS
CHICAGO
BOSTON

254
www.tiagodemelo.info

Tipos de Junes

Juno
idntica

Juno
no-idntica

Juno
externa

Autojuno

255
www.tiagodemelo.info

O Que uma Juno Idntica?

EMP
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.
Chave estrangeira

DEPT
DEPTNO
------10
30
10
20
30
30
30
30
30
20
20
...
14 rows

DNAME
---------ACCOUNTING
SALES
ACCOUNTING
RESEARCH
SALES
SALES
SALES
SALES
SALES
RESEARCH
RESEARCH

LOC
-------NEW YORK
CHICAGO
NEW YORK
DALLAS
CHICAGO
CHICAGO
CHICAGO
CHICAGO
CHICAGO
DALLAS
DALLAS

selected.

Chave primria
256
www.tiagodemelo.info

Recuperando Registros com Junes Idnticas

SQL> SELECT
2
3 FROM
4 WHERE

emp.empno,
emp.ename, emp.deptno,
dept.deptno, dept.loc
emp, dept
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.

257
www.tiagodemelo.info

Qualificando Nomes de Coluna Ambguos

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.

258
www.tiagodemelo.info

Condies de Pesquisa Adicional Usando o Operador AND

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
------ --------10 ACCOUNTING
30 SALES
10 ACCOUNTING
20 RESEARCH
30 SALES
30 SALES
30 SALES
30 SALES
30 SALES
20 RESEARCH
20 RESEARCH
...
14 rows selected.

LOC
-------NEW YORK
CHICAGO
NEW YORK
DALLAS
CHICAGO
CHICAGO
CHICAGO
CHICAGO
CHICAGO
DALLAS
DALLAS

259
www.tiagodemelo.info

Usando Apelidos de Tabela

Simplifique consultas usando apelidos de tabela.


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;

260
www.tiagodemelo.info

Unindo Mais de Duas Tabelas

CUSTOMER
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.

ORD
CUSTID
ORDID
------- ------101
610
102
611
104
612
106
601
ITEM
102
602
106
604 ITEMID
ORDID
106 -----605 ------...
610
3
21 rows selected.
611
1
612
1
601
1
602
1
...
64 rows selected.
261
www.tiagodemelo.info

Junes No-idnticas

EMP
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.

SALGRADE
GRADE LOSAL HISAL
----- ----- -----1
700
1200
2
1201
1400
3
1401
2000
4
2001
3000
5
3001
9999

"o salrio na tabela EMP


est entre salrio inferior
e salrio superior na
tabela SALGRADE"

262
www.tiagodemelo.info

Recuperando Registros com Junes No-idnticas

SQL>
2
3
4

SELECT
FROM
WHERE
BETWEEN

e.ename, e.sal, s.grade


emp e,
salgrade s
e.sal
s.losal AND s.hisal;

ENAME
SAL
GRADE
---------- --------- --------JAMES
950
1
SMITH
800
1
ADAMS
1100
1
...
14 rows selected.

263
www.tiagodemelo.info

Junes Externas

EMP
ENAME
----KING
BLAKE
CLARK
JONES
...

DEPTNO
-----10
30
10
20

DEPT
DEPTNO
-----10
30
10
20
...
40

DNAME
---------ACCOUNTING
SALES
ACCOUNTING
RESEARCH
OPERATIONS

Nenhum funcionrio do
departamento OPERATIONS

264
www.tiagodemelo.info

Junes Externas

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 (+).

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(+);

265
www.tiagodemelo.info

Usando Junes Externas

SQL>
2
3
4

SELECT
FROM
WHERE
ORDER BY

e.ename, d.deptno, d.dname


emp e,
dept d
e.deptno(+) = d.deptno
e.deptno;

ENAME
DEPTNO DNAME
---------- --------- ------------KING
10 ACCOUNTING
CLARK
10 ACCOUNTING
...
40 OPERATIONS
15 rows selected.

266
www.tiagodemelo.info

Autojunes

EMP (WORKER)
EMPNO
----7839
7698
7782
7566
7654
7499

ENAME
-----KING
BLAKE
CLARK
JONES
MARTIN
ALLEN

EMP (MANAGER)
MGR
---7839
7839
7839
7698
7698

EMPNO ENAME
----- -------7839
7839
7839
7698
7698

KING
KING
KING
BLAKE
BLAKE

"MGR na tabela WORKER igual a EMPNO


na tabela MANAGER"

267
www.tiagodemelo.info

Unindo uma Tabela a Ela Mesma

SQL> SELECT worker.ename||' works for '||manager.ename


2 FROM
emp worker, emp manager
3 WHERE worker.mgr = manager.empno;
WORKER.ENAME||'WORKSFOR'||MANAG
------------------------------BLAKE works for KING
CLARK works for KING
JONES works for KING
MARTIN works for BLAKE
...
13 rows selected.

268
www.tiagodemelo.info

Sumrio

SELECT
FROM
WHERE

Juno
idntica

tabela1.coluna, tabela2.coluna
tabela1, tabela2
tabela1.coluna1 = tabela2.coluna2;

Juno
no-idntica

Juno
externa

Autojuno

269
www.tiagodemelo.info

SQL: Lista de Exerccio


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.

270
www.tiagodemelo.info

SQL: Lista de Exerccio

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.

271
www.tiagodemelo.info

Agregando Dados Usando Funes de Grupo

Objetivos:
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

272
www.tiagodemelo.info

O Que So Funes de Grupo?


As funes de grupo operam em conjuntos de linhas para fornecer um resultado por grupo.

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

"salrio
mximo na
tabela EMP"

MAX(SAL)
--------5000

273
www.tiagodemelo.info

Tipos de Funes de Grupo

AVG
COUNT
MAX
MIN
STDDEV
SUM
VARIANCE

274
www.tiagodemelo.info

Usando Funes de Grupo

SELECT
FROM
[WHERE
[GROUP BY
[ORDER BY

[coluna,] group_function(coluna)
tabela
condio]
coluna]
coluna];

275
www.tiagodemelo.info

Usando Funes AVG e SUM

Voc pode usar AVG e SUM para dados numricos.


SQL> SELECT
2
3 FROM
4 WHERE

AVG(sal), MAX(sal),
MIN(sal), SUM(sal)
emp
job LIKE 'SALES%';

AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL)


-------- --------- --------- --------1400
1600
1250
5600

276
www.tiagodemelo.info

Usando Funes MIN e MAX

Voc pode usar MIN e MAX para qualquer tipo de dados.

SQL> SELECT
2 FROM

MIN(hiredate), MAX(hiredate)
emp;

MIN(HIRED MAX(HIRED
--------- --------17-DEC-80 12-JAN-83

277
www.tiagodemelo.info

Usando a Funo COUNT

COUNT(*) retorna o nmero de linhas em uma tabela.


SQL> SELECT
2 FROM
3 WHERE

COUNT(*)
emp
deptno = 30;

COUNT(*)
--------6

278
www.tiagodemelo.info

Usando a Funo COUNT

COUNT(expr) retorna o nmero de linhas no nulas.

SQL> SELECT
2 FROM
3 WHERE

COUNT(comm)
emp
deptno = 30;

COUNT(COMM)
----------4

279
www.tiagodemelo.info

Funes de Grupo e Valores Nulos

As funes de grupo ignoram valores nulos na coluna.

SQL> SELECT AVG(comm)


2 FROM
emp;
AVG(COMM)
--------550

280
www.tiagodemelo.info

Usando a Funo NVL com Funes de Grupo

A funo NVL fora as funes de grupo a inclurem


valores nulos.
SQL> SELECT AVG(NVL(comm,0))
2 FROM
emp;
AVG(NVL(COMM,0))
---------------157.14286

281
www.tiagodemelo.info

Criando Grupos de Dados

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

2916.6667

DEPTNO AVG(SAL)
"salrio
mdio
------- --------na
tabela
2175
10 2916.6667
EMP
para cada
20
2175
departamento"
30 1566.6667
1566.6667

282
www.tiagodemelo.info

Criando Grupos de Dados: Clusula GROUP BY

SELECT
FROM
[WHERE
[GROUP BY
[ORDER BY

coluna, group_function(coluna)
tabela
condio]
group_by_expression]
coluna];

Divida linhas de uma tabela em grupos menores usando a


clusula GROUP BY.

283
www.tiagodemelo.info

Usando a Clusula GROUP BY

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


grupo devem estar na clusula GROUP BY

SQL> SELECT
deptno, AVG(sal)
2 FROM
emp
3 GROUP BY deptno;
DEPTNO AVG(SAL)
--------- --------10 2916.6667
20
2175
30 1566.6667

284
www.tiagodemelo.info

Usando a Clusula GROUP BY

A coluna GROUP BY no precisa estar na lista SELECT


SQL> SELECT
AVG(sal)
2 FROM
emp
3 GROUP BY deptno;
AVG(SAL)
--------2916.6667
2175
1566.6667

285
www.tiagodemelo.info

Agrupando por Mais de Uma Coluna

EMP
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

DEPTNO
--------

"soma de
salrios na
tabela EMP
para cada
cargo,
agrupados por
departamento"

JOB

SUM(SAL)

--------- ---------

10

CLERK

1300

10

MANAGER

2450

10

PRESIDENT

5000

20

ANALYST

6000

20

CLERK

1900

20

MANAGER

2975

30

CLERK

30

MANAGER

2850

30

SALESMAN

5600

950

286
www.tiagodemelo.info

Usando a Clusula GROUP BY em Vrias Colunas

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.

287
www.tiagodemelo.info

Consultas Ilegais Usando Funes de Grupo

Qualquer coluna ou expresso na lista SELECT que no seja


uma funo agregada deve estar na clusula GROUP BY.

SQL> SELECT
2 FROM

deptno, COUNT(ename)
emp;

Y
B
Y
P
B
U
P
O
U
R
O
G
R
a
G
ssuulla
u

l
u
c

l
a
c
n
a
eennttee n
s
u
s
a
u
a
a
n
a
u
n
C
Coolludeptno,
SELECT
COUNT(ename)
*
ERROR at line 1:
ORA-00937: Nenhuma funo de grupo de grupo nico
(Not a single-group group function)

288
www.tiagodemelo.info

Consultas Ilegais Usando Funes de Grupo

No possvel usar a clusula WHERE para restringir grupos.


Use a clusula HAVING para restringir grupos.
SQL>
2
3
4

SELECT
FROM
WHERE
GROUP BY

deptno, AVG(sal)
emp
AVG(sal) > 2000
deptno;

llaa
u
u
ss ss
u
u

ll ppoo
c
c
aa ggrruu
r
r
aa giirr
s
s
u
u riinng
l
l
e
vve essttr

WHERE AVG(sal) > 2000

s
sss aa rre
o
o
*
pp aarr

pp
o
ERROR at line 3:
o
E

E
R
N
R
Nde
E
E
ORA-00934: A funo
grupo
no permitida aqui
H
H
W allowed here)
(Group function is W
not

289
www.tiagodemelo.info

Excluindo Resultados do Grupo

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

3000

"salrio
mximo por
departamento
maior do que
US$ 2.900"

DEPTNO

MAX(SAL)

--------- --------10

5000

20

3000

2850

290
www.tiagodemelo.info

Excluindo Resultados do Grupo: Clusula HAVING

Use a clusula HAVING para restringir grupos


As linhas so agrupadas.
A funo de grupo aplicada.
Os grupos que correspondem clusula HAVING so exibidos.
SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY

coluna, group_function
tabela
condio]
group_by_expression]
group_condition]
coluna];

291
www.tiagodemelo.info

Usando a Clusula HAVING

SQL>
2
3
4

SELECT
FROM
GROUP BY
HAVING

deptno, max(sal)
emp
deptno
max(sal)>2900;

DEPTNO MAX(SAL)
--------- --------10
5000
20
3000

292
www.tiagodemelo.info

Usando a Clusula HAVING

SQL>
2
3
4
5
6

SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER BY

job, SUM(sal) PAYROLL


emp
job NOT LIKE 'SALES%'
job
SUM(sal)>5000
SUM(sal);

JOB
PAYROLL
--------- --------ANALYST
6000
MANAGER
8275

293
www.tiagodemelo.info

Aninhando Funes de Grupo

Exiba o salrio mdio mximo

SQL> SELECT
max(avg(sal))
2 FROM
emp
3 GROUP BY deptno;
MAX(AVG(SAL))
------------2916.6667

294
www.tiagodemelo.info

Sumrio

SELECT
FROM
[WHERE
[GROUP BY
[HAVING
[ORDER BY

coluna, group_function(coluna)
tabela
condio]
group_by_expression]
group_condition]
coluna];

Ordem de avaliao das clusulas:


clusula WHERE
clusula GROUP BY
clusula HAVING

295
www.tiagodemelo.info

SQL: Lista de Exerccio


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.

296
www.tiagodemelo.info

SQL: Lista de Exerccio


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.

297
www.tiagodemelo.info