Buscar

Modelo Relacional

Prévia do material em texto

1
4
Projeto de
Banco de Dados
Carlos Alberto Heuser
2
Transformações entre modelosTransformações entre modelos
Capítulo 5
©Carlos A. Heuser
3
Relacionamento grau > dois
©Carlos A. Heuser 3
nomenome
DISTRIBUIDORDISTRIBUIDORCIDADECIDADE
PRODUTOPRODUTO
DISTRIBUIÇÃODISTRIBUIÇÃO
(0,1)
(0,n)
(0,n)código código
código
nome
data de
início
4
Relacionamento grau>2
• Não são definidas regras específicas.
• O relacionamento é transformado em uma entidade.
• São aplicadas as regras de implementação de relacionamentos
binários.
©Carlos A. Heuser 4
5
Relacionamento transformado em entidade
©Carlos A. Heuser 5
nomenome
DISTRIBUIDORDISTRIBUIDORCIDADECIDADE
PRODUTOPRODUTO
código código
código
nome
(0,n)
DISTRIBUIÇÃO
(1,1)
(1,1)
(1,1)
(0,n)
(0,n)
data de
início
nomenome
DISTRIBUIDORDISTRIBUIDORCIDADECIDADE
DISTRIBUIÇÃODISTRIBUIÇÃO
(0,1)
(0,n)
(0,n)código código
código
nome
data de
início
PRODUTOPRODUTO
observar os 
identificadores da 
entidade criada
-
vêm da cardinalidade 
máxima do 
relacionamento
6
Modelo lógico correspondente
©Carlos A. Heuser 6
nomenome
DISTRIBUIDORDISTRIBUIDORCIDADECIDADE
PRODUTOPRODUTO
código código
código
nome
(0,n)
DISTRIBUIÇÃO
(1,1)
(1,1)
(1,1)
(0,n)
(0,n)
data de
início
Produto (CodProd,Nome)
Cidade (CodCid,Nome)
Distribuidor (CodDistr,Nome)
Distribuição (CodProd,CodDistr,CodCid,
DataInicio)
CodProd referencia Produto
CodDistr referencia Distribuidor
CodCid referencia Cidade
Produto (CodProd,Nome)
Cidade (CodCid,Nome)
Distribuidor (CodDistr,Nome)
Distribuição (CodProd,CodDistr,CodCid,
DataInicio)
CodProd referencia Produto
CodDistr referencia Distribuidor
CodCid referencia Cidade
7
Implementação de generalização/especialização
1. Duas alternativas básicas:
a) uso de uma tabela para cada entidade
b) uso de uma única tabela para toda hierarquia
2. Outra alternativa (exótica):
a) Subdivisão de entidade genérica
©Carlos A. Heuser 7
8
Generalização/especialização
exemplo
8
código nome código nome
CREA
EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
©Carlos A. Heuser
9
Uma tabela por hierarquia
1. Todas tabelas referentes às especializações são fundidas em uma única 
tabela.
2. Tabela contém:
a) Chave primária correspondente ao identificador da entidade mais 
genérica
b) Caso não exista, uma coluna Tipo
c) Uma coluna para cada atributo da entidade genérica
d) Colunas referentes aos relacionamentos dos quais participa a 
entidade genérica e que sejam implementados através da alternativa 
de adicionar colunas à tabela da entidade genérica
e) Uma coluna para cada atributo de cada entidade especializada 
(opcional)
f) Colunas referentes aos relacionamentos dos quais participa cada 
entidade especializada e que sejam implementados através da 
alternativa de adicionar colunas à tabela da entidade (campo opcional)
©Carlos A. Heuser 9
10
Implementação das entidades relacionadas
10
código nome código nome
CREA
EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
©Carlos A. Heuser
11
Implementação de relacionamentos n:n
11
código nome código nome
CREA
EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação 
(CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação 
(CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
©Carlos A. Heuser
12
Tabela para a hierarquia
12
DEPARTAMENTODEPARTAMENTO
código nome código nome
CREA
EMPREGADOEMPREGADO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
Emp 
(CodigoEmp,Tipo,Nome,CIC,CodigoD
ept, CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
Emp 
(CodigoEmp,Tipo,Nome,CIC,CodigoD
ept, CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
©Carlos A. Heuser
13
Identificador da entidade raiz
13
código nome código nome
CREA
EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)ProcessTexto (CodigoProc,Nome)
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
chave
 primária
 vem
 
do
 identificador
 da
 
entidade
 raiz
©Carlos A. Heuser
14
Inclusão de coluna de tipo
14
DEPARTAMENTODEPARTAMENTO
código nome código nome
CREA
EMPREGADOEMPREGADO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
tabela
 dever
 ter
 
uma
 coluna
 de
 
tipo
 de
 entidade
©Carlos A. Heuser
15
Atributos da entidade genérica
15
DEPARTAMENTODEPARTAMENTO
código nome código nome
CREA
EMPREGADOEMPREGADO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
colunas
 para
 atributos
 
da
 entidade
 genérica
©Carlos A. Heuser
16
Relacionamentos 1:n da entidade genérica
16
código nome código nome
CREA
EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
implementação
 da
 
relacionamentos
 1:n
 
da
 entidade
 genérica
©Carlos A. Heuser
17
Atributos das especializações
17
código nome código nome
CREA
EMPREGADOEMPREGADO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
DEPARTAMENTODEPARTAMENTO
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
colunas
 para
 
atributos
 das
 
entidades
 
especializadas
©Carlos A. Heuser
18
Atributos das especializações
18
código nome código nome
CREA
EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referenciaEmp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
colunas
 para
 
atributos
 das
 
entidade
 
especializadas
©Carlos A. Heuser
19
Relacionamentos 1:n das especializações
19
código nome código nome
CREA
EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
Emp (CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
implementação
 de
 
relacionamentos
 
1:n
 das
 
especializações
©Carlos A. Heuser
20
Uma tabela por hierarquia - resultado
20
código nome código nome
CREA
EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
Emp 
(CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
Emp 
(CodigoEmp,Tipo,Nome,CIC,CodigoDept,
CartHabil,CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Emp
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
©Carlos A. Heuser
21
Uma tabela por entidade especializada
1. Criar uma tabela para cada entidade que compõe a hierarquia. 
2. Incluir a chave primária da tabela correspondente à entidade genérica, 
em cada tabela correspondente a uma entidade especializada.
©Carlos A. Heuser 21
22
Entidade especializada
22
código nome código nome
CREA
EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
SECRETÁRIA não tem atributos, 
nem relacionamentos a 
implementar por adição de 
chaves
não há tabela para esta entidade
©Carlos A. Heuser
23
Uma tabela por entidade especializada 
resultado
23
código nome código nome
CREA
EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
Emp (CodigoEmp,Tipo,Nome,CIC,CódigoDept)
CodigoDept referencia Depto
Motorista(CodigoEmp,CartHabil)
CodigoEmp referencia Emp
Engenheiro(CodigoEmp,CREA,CodigoRamo)
CódigoEmp referencia Emp
CódigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Engenheiro
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
Emp (CodigoEmp,Tipo,Nome,CIC,CódigoDept)
CodigoDept referencia Depto
Motorista(CodigoEmp,CartHabil)
CodigoEmp referencia Emp
Engenheiro(CodigoEmp,CREA,CodigoRamo)
CódigoEmp referencia Emp
CódigoRamo referencia Ramo 
Domínio (CodigoEmp,CodigoProc)
CódigoEmp referencia Emp
CódigoProc 
referencia ProcessTexto
Participação (CodigoEmp,CodigoProj)
CodigoEmp referencia Engenheiro
CodigoProj referencia Projeto
Depto (CodigoDept, Nome)
Projeto (CodigoProj,Nome)
Ramo (CodigoRamo,Nome)
ProcessTexto (CodigoProc,Nome)
©Carlos A. Heuser
24
Vantagens da implementação
com tabela única
• Dados referentes à entidade genérica + dados referentes às 
especializações:
– em uma única linha.
• Minimiza junções.
• Menor número de chaves.
©Carlos A. Heuser 24
25
Vantagens da implementação com uma tabela por 
entidade especializada
• Colunas opcionais:
– apenas aquelas referentes a atributos opcionais.
©Carlos A. Heuser 25
26
Subdivisão da entidade genérica
• Uma tabela para cada entidade especializada que não possua outra 
especialização (entidade folha da árvore).
• Tabela contém:
– dados da entidade especializada 
+
– dados da entidade genérica.
©Carlos A. Heuser 26
27
Subdivisão da entidade genérica
resultado
27
código nome código nome
CREA
EMPREGADOEMPREGADO DEPARTAMENTODEPARTAMENTO
SECRETÁRIASECRETÁRIA
ENGENHEIROENGENHEIRO
PROCESSADOR 
DE TEXTOS
PROCESSADOR 
DE TEXTOS PROJETOPROJETO
DOMÍNIODOMÍNIO PARTICIPAÇÃOPARTICIPAÇÃO
LOTAÇÃOLOTAÇÃO
tipo de
empregado
nome
carteira de
habilitação
CIC
(1,1)(0,n)
(1,n)
(0,n) (0,n)
(0,n)
px
RAMO DA 
ENGENHARIA
RAMO DA 
ENGENHARIA
(0,n)
(1,1)
MOTORISTAMOTORISTA
código
código nome
código nome
EmpOutros(CodigoEmp,Tipo,Nome,CIC,
CodigoDept)
CodigoDept referencia Depto
Motorista(CodigoEmp,Nome,CIC,CodigoDept,
CartHabil)
CodigoDept referencia Depto
Engenheiro(CodigoEmp,Nome,CIC,CodigoDept,
CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo
Depto(CodigoDept,Nome)
Ramo(CodigoRamo,Nome)
ProcessTexto(CodigoProc,Nome)
Dominio(CodigoEmp,CodigoProc)
CodigoEmp referencia EmpOutros
Codigo Proc referencia ProcessTexto
Projeto(CodigoProj,Nome)
Participação(CodigoEmp,CodigoProj)
CodigoEmp referencia Engenheiro
CodigoProj referencia Projeto
EmpOutros(CodigoEmp,Tipo,Nome,CIC,CodigoDept)
CodigoDept referencia Depto
Motorista(CodigoEmp,Nome,CIC,CodigoDept,
CartHabil)
CodigoDept referencia Depto
Engenheiro(CodigoEmp,Nome,CIC,CodigoDept,
CREA,CodigoRamo)
CodigoDept referencia Depto
CodigoRamo referencia Ramo
Depto(CodigoDept,Nome)
Ramo(CodigoRamo,Nome)
ProcessTexto(CodigoProc,Nome)
Dominio(CodigoEmp,CodigoProc)
CodigoEmp referencia EmpOutros
Codigo Proc referencia ProcessTexto
Projeto(CodigoProj,Nome)
Participação(CodigoEmp,CodigoProj)
CodigoEmp referencia Engenheiro
CodigoProj referencia Projeto©Carlos A. Heuser
28
Subdivisão da entidade genérica
• Desvantagens:
1. Unicidade do identificador de empregado:
• não é garantida pelo SGBD;
• deve ser garantida pela aplicação.
2. Não há como especificar ao SGBD restrições de integridade 
referenciais, que façam referência ao conjunto de empregados 
como um todo.
©Carlos A. Heuser 28
29
Refinamento do modelo relacional
• Projeto (engenharia) em geral é:
– compromisso entre o ideal e o realizável dentro das restrições de 
recursos impostas pelas prática.
• Projeto de banco de dados é:
– compromisso entre o
ideal (regras de implementação)
e o 
alcançável frente a limitações de performance.
©Carlos A. Heuser 29
30
Refinamento do modelo relacional
• Algumas vezes:
– esquema de BD criado através do uso das regras acima não atende
requisitos de desempenho impostos ao sistema.
• Necessário buscar alternativa que resulte em melhor desempenho do 
sistema.
• Alternativas somente devem ser tentadas em último caso:
– Do ponto de vista da programação são normalmente piores.
©Carlos A. Heuser 30
31
Refinamento do modelo relacional
• Exemplos de alternativas de projeto:
1. Relacionamentos mutuamente exclusivos
2. Simulação de atributos multivalorados
3. Informações redundantes
©Carlos A. Heuser 31
32
Relacionamentos
mutuamente exclusivos
©Carlos A. Heuser 32
PESSOA 
FíSICA
PESSOA 
FíSICA VENDAVENDA
PESSOA 
JURíDICA
PESSOA 
JURíDICA
(0,n)
(0,1)
(0,n)(0,1)
CIC nome Nº data
CGC razão
social
33
Relacionamentos
mutuamente exclusivos
• Implementação pelas regras:
• As colunas CIC e CGC em Venda são especificadas como opcionais.
©Carlos A. Heuser 33
PessFis(CIC,Nome)
PessJur(CGC,RazSoc)
Venda(No,data,CIC,CGC)
CIC referencia PessFis
CGC referencia PessJur
PessFis(CIC,Nome)
PessJur(CGC,RazSoc)
Venda(No,data,CIC,CGC)
CIC referencia PessFis
CGC referencia PessJur
34
Relacionamentos
mutuamente exclusivos
• Implementação alternativa:
– Criar uma única coluna na qual aparece o CIC ou o CGC do 
comprador:
– Desvantagem:
• Não é possível especificar ao SGBD que o campo CIC/CGC é
chave estrangeira:
– seria referência a duas tabelas.
©Carlos A. Heuser 34
PessFis(CIC,Nome)
PessJur(CGC,RazSoc)
Venda(No,data,CIC/CGC,TipoCompr)
PessFis(CIC,Nome)
PessJur(CGC,RazSoc)
Venda(No,data,CIC/CGC,TipoCompr)
35
Tratamento de
atributos multivalorados
©Carlos A. Heuser 35
códigonom
e
CLIENTECLIENTE
número de
telefone (0,n)
código
nome
CLIENTECLIENTE
TELEFONETELEFONE
(1,1)
(0,n)
número
36
Atributos multivalorados
implementação padrão
©Carlos A. Heuser 36
Cliente (CodCli,Nome)
Telefone (CodCli,Número)
CodCli referencia Cliente
Cliente (CodCli,Nome)
Telefone (CodCli,Número)
CodCli referencia Cliente
37
Atributos multivalorados
alternativa
• Condições de contorno:
– Raros clientes possuem mais que dois telefones.
– Quando isso ocorrer:
• é suficiente armazena apenas dois números.
– Não há consultas ao banco de dados usando o número de telefone 
como critério de seleção.
– Números de telefone são apenas exibidos ou impressos juntos às 
demais informações de cliente.
©Carlos A. Heuser 37
38
Simulação de atributos multivalorados
• Implementação “desnormalizada”:
• Simular uma coluna multivalorada, através da criação de diversas 
colunas NumTel sufixadas por um número.
©Carlos A. Heuser 38
Cliente (CodCli,Nome,NumTel1,NumTel2)Cliente (CodCli,Nome,NumTel1,NumTel2)
39
Simulação de atributos multivalorados
• Permite que os telefones de um cliente sejam obtidos mais 
rapidamente.
• Implica em menos espaço ocupado:
– não é necessária chave primária da tabela Telefone.
• Inconveniente:
– Consulta usando o número de telefone como critério de busca torna-
se mais complicada.
©Carlos A. Heuser 39
40
Informações redundantes
• Exemplo:
– atributos que resultam de uma operação que envolve diversas 
entidades do banco de dados;
– valor destes atributos:
• deve ser obtido com frequência ou
• serve frequentemente como critério de busca de informações no 
banco de dados.
• Pode ser mais eficiente (desempenho global do sistema)
– armazenar redundantemente o atributo derivado.
©Carlos A. Heuser 40
41
Informações redundantes
Exemplo
©Carlos A. Heuser 41
número
de
reservas
passageiro
códigoroteiro
VOOVOO
RESERVA
(1,1)
(0,n)
número
a t r i b u
t o 
r e d u n
d a n t e
42
Engenharia reversa
de modelos relacionais
• Engenharia reversa:
1. parte de modelo de implementação;
2. obtém modelo de especificação (modelo conceitual).
©Carlos A. Heuser 42
43
Engenharia reversa
©Carlos A. Heuser 43
Modelo ER
(conceitual)
Modelo relacional
(lógico)
c
Projeto lógico
de BD relacional
Engenharia
reversa de 
BD relacional
44
Engenharia reversa de modelo relacional
Passos:
1. Identificação da construção ER correspondente a cada tabela;
2. Definição de relacionamentos 1:n e 1:1;
3. Definição de atributos;
4. Definição de identificadores de entidades e relacionamentos.
©Carlos A. Heuser 44
45
Esquema relacional exemplo
para engenharia reversa 
©Carlos A. Heuser 45
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
46
Identificação da construção ER correspondente a cada 
tabela
• Uma tabela pode corresponder a:
1. uma entidade;
2. um relacionamento n:n;
3. uma entidade especializada.
• Fator determinante:
– composição da chave primária da tabela.
©Carlos A. Heuser 46
47
Tipos de tabelas para
identificação de construção ER
©Carlos A. Heuser 47
Composição da 
chave primária
Construção ER 
correspondente
Múltiplas chaves 
estrangeiras
Relacionamento n:n
Toda chave primária é
uma chave estrangeira
Especialização
Demais casos Entidade
48
Passo #1 – identificação de construções ER
©Carlos A. Heuser 48
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl)referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
chave primária composta por duas 
(múltiplas) chaves estrangeiras
=
tabela representa um relacionamento 
n:n
49
Passo #1 – identificação de construções ER
©Carlos A. Heuser 49
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
toda chave primária é uma chave 
estrangeira
=
tabela representa uma especialização
50
Passo #1 – identificação de construções ER
©Carlos A. Heuser 50
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala demais casos
=
tabela representa uma 
entidade
51
Passo #1 – identificação de construções ER
©Carlos A. Heuser 51
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
chave primária contém uma 
única chave estrangeira, mas 
não é toda ela chave 
estrangeira
=
tabela representa uma 
entidade
52
Construções identificadas
©Carlos A. Heuser 52
PRÉDIOPRÉDIO
TURMATURMA DISCIPLINADISCIPLINA
SALASALA CURSOCURSO
CURRÍCULOCURRÍCULO
n
n
LABORATÓRIOLABORATÓRIO
53
Passo #2 - identificação de
relacionamentos 1:n ou 1:1
• As chaves estrangeiras tratadas no passo anterior correspondem a:
– relacionamentos n:n,
– especializações.
• Chave estrangeira que não foi tratada no passo anterior representa:
relacionamento 1:n
ou
relacionamento 1:1 
• Nem sempre, esquema não informa se é 1:1 ou 1:n
©Carlos A. Heuser 53
54
Passo #2 - identificação de
relacionamentos 1:n ou 1:1
©Carlos A. Heuser 54
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
chave estrangeiras 
ainda não tratadas
55
Passo #2 - exemplo
©Carlos A. Heuser 55
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
campo monovalorado
–
relaciona a turma com no 
máximo uma disciplina
56
Passo #2 - exemplo
©Carlos A. Heuser 56
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
CodDisc é obrigatório
–
cada turma está relacionada 
com ao menos uma 
disciplina
57
Passo #2 - exemplo
©Carlos A. Heuser 57
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
em turma podem aparecer 
várias linhas com um valor 
de CodDisc
–
relaciona a disciplina com 
possivelmente várias turma
58
Passo #2 - exemplo
©Carlos A. Heuser 58
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
TURMATURMA DISCIPLINADISCIPLINA
n (1,1)
59
Passo #2 - exemplo
©Carlos A. Heuser 59
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
PRÉDIOPRÉDIO
SALASALA
n
(1,1)
60
Passo #2 - exemplo
©Carlos A. Heuser 60
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
Disciplina (CodDisc,NomeDisc)
Curso (CodCr,NomeCr)
Curric (CodCr,CodDisc,Obr/Opc)
CodCr referencia Curso
CodDisc referencia Disciplina
Sala (CodPr,CodSl,Capacidade)
CodPr referencia Prédio
Prédio (CodPr,Endereço)
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Laboratório (CodPr,CodSl,Equipam)
(CodPr,CodSl) referencia Sala
TURMATURMA
SALASALA
1
?
61
n (1,1)
Passo #2 - Construções identificadas
©Carlos A. Heuser 61
PRÉDIOPRÉDIO
TURMATURMA DISCIPLINADISCIPLINA
SALASALA CURSOCURSO
CURRÍCULOCURRÍCULO
n
n
LABORATÓRIOLABORATÓRIO
n
1
?
(1,1)
62
Passo #3 - Definição de atributos
• Cada coluna não chave estrangeira é:
– um atributo na entidade/relacionamento correspondente à tabela.
• As colunas chave estrangeira não correspondem a atributos:
– correspondem a relacionamentos;
– já foram tratadas nas etapas anteriores.
©Carlos A. Heuser 62
63
Passo #3 – exemplo
©Carlos A. Heuser 63
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
AnoSem, SiglaTur e 
Capacidade
não são chaves estrangeiras
=
correspondem a atributos
64
Passo #3 – exemplo
©Carlos A. Heuser 64
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Turma (Anosem,CodDisc,SiglaTur,Capacidade,CodPr,CodSl)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
ano/sem
siglacapacidade
TURMATURMA
65©Carlos A. Heuser
capacidade
obrig/opc
nomecódigo
nome código
ano/sem
siglacapacidade
código
endereçocódigo
Passo #3 - Atributos identificados
65
n (1,1)
PRÉDIOPRÉDIO
TURMATURMA DISCIPLINADISCIPLINA
SALASALA CURSOCURSO
CURRÍCULOCURRÍCULO
n
n
LABORATÓRIOLABORATÓRIO
n
1
?
(1,1)
equipamento
66
Passo #4 – Definição de
identificadores de entidades
Chave primária:
1. Coluna da chave primária que não é chave estrangeira:
– corresponde a um atributo identificador da entidade ou 
relacionamento. 
2. Coluna da chave primária que é chave estrangeira:
– corresponde a um relacionamento identificador da entidade
©Carlos A. Heuser 66
67
Passo #3 – exemplo
©Carlos A. Heuser 67
Turma (Anosem,CodDisc,SiglaTur,...)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Turma (Anosem,CodDisc,SiglaTur,...)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
colunas não chave 
estrangeira
=
atributo identificador
68
Passo #3 – exemplo
©Carlos A. Heuser 68
Turma (Anosem,CodDisc,SiglaTur,...)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Turma (Anosem,CodDisc,SiglaTur,...)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
ano/sem
siglacapacidade
TURMATURMA
colunas não chave 
estrangeira
=
atributo identificador
69
Passo #3 – exemplo
©Carlos A. Heuser 69
Turma (Anosem,CodDisc,SiglaTur,...)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Turma (Anosem,CodDisc,SiglaTur,...)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
coluna chave 
estrangeira
=
relacionamento
identificador
70
Passo #3 – exemplo
©Carlos A. Heuser 70
Turma (Anosem,CodDisc,SiglaTur,...)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
Turma (Anosem,CodDisc,SiglaTur,...)
CodDisc referencia Disciplina
(CodPr,CodSl) referencia Sala
coluna chave 
estrangeira
=
relacionamento
identificador
nome código
ano/sem
siglacapacidade
n (1,1) DISCIPLINA
DISCIPLINATURMATURMA
71
Passo #3 –
Definição de identificadores de entidades
©Carlos A. Heuser 71
capacidade
obrig/opc
nomecódigo
nome código
ano/sem
siglacapacidade
código
endereçocódigo
n (1,1)
PRÉDIOPRÉDIO
DISCIPLINADISCIPLINA
CURSOCURSO
CURRÍCULOCURRÍCULO
n
n
LABORATÓRIOLABORATÓRIO
n
1
?
(1,1)
equipamento
TURMATURMA
SALASALA

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes