Transformações entre modelosanderson/FTP/dca0120/Aula5.pdf · 2011-04-12 · Transformações...
Transcript of Transformações entre modelosanderson/FTP/dca0120/Aula5.pdf · 2011-04-12 · Transformações...
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $
Transformações entre modelos
Capítulo 5
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # �
Transformações entre modelos
Modelo ER(conceitual)
Modelo relacional(lógico)
cCiclo de
re-engenhariade BD
Projeto lógicode BD relacional
Engenhariareversa de
BD relacional
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # �
Projeto lógico
� � � � � � � �
� � � � � � � � � � � � �
� � � � � � � � � � � � � �
� � � � � � � � � �
� � � � � � � � �
� � � � � � � � � � � � � �
� � � � ! " � # � $ % "
& ' ( � � �
� ) * � + , " � � *
' ) ! , � � # ) � - "
. " # " . ) * "
� ) * � + , " � � *
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # �
Transformação ER para relacional
• Regras gerais
�
� � � � � � � � � � � � � � � � � �
�
� � � � � � �
� � � � � � � � � � � ! " # ! ! � $ � ! % & � ' � ( ) � � " * ! � � ! * � � ) � "
" & � ( " ! # � "
+, - . / 0 - 0 1 2 3 4 3 5 0 - 6 0 7 7 3 - 0 1 2 3 5 8 9 : ;
• Objetivos básicos:
+
< = 3 . 0 7 6 = 7 - 3 1 > 0
+
: ? - . / ? 6 ? > 3 7 = 4 0 5 0 1 @ = / @ ? - 0 1 2 =
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $
Regras gerais de tradução
• Evitar junções• Diminuir o número de chaves• Evitar campos opcionais
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # �
Junção
• Operação para buscar dados de diversas linhas associadas pela igualdade de campos
• Exemplo:
+
� � 5 > 3 7 = 5 4 3 4 = 5 4 0 � - 0 - . 7 0 � 3 4 = 0 = 5 4 3 4 = 5 4 0
5 0 � 4 0 . 3 7 2 3 - 0 1 2 = � 4 � 3 5 2 3 � 0 / 3 5 4 ? 6 0 7 0 1 2 0 5 �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # �
Evitar junções
• SGBD relacional normalmente armazena os dados de uma linha contiguamente em disco
• Junção envolve diversos acessos a disco• Preferível
+ 2 0 7 = 5 4 3 4 = 5 1 0 > 0 5 5 � 7 ? = 5 3 � - 3 > = 1 5 � / 2 3 0 - � - 3
� 1 ? > 3 / ? 1 � 3
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # �
Chave e índice
• Implementação eficiente do controle de chaves: SGBD usa um índice
+�1 4 ? > 0 5 2 0 1 4 0 - 3 = > � . 3 7 0 5 . 3 � = > = 1 5 ? 4 0 7 � @ 0 / 0 -
4 ? 5 > =
• Inserção e remoção de entradas em um índice
+
� = 4 0 - 0 � ? � ? 7 4 ? @ 0 7 5 = 5 3 > 0 5 5 = 3 4 ? 5 > =
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # �
Diminuir o número de chaves
• Usar implementações com menos chaves • Exemplo
� � � � � � � � � � � � � � � � �
� � � �
� � � � � � � � � �
� � � � � � �
� � � � � � � � �
� �� � � � � � � � � � � � � � � � �
� � � �
� � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � �
� � � � � � �
� � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # � �
Campos opcionais
• Campo opcional = campo que podem assumir o valor VAZIO (NULL em SQL).
• SGBD relacional não desperdiça espaço pelo fato de campos de uma linha estarem vazios
• Campo opcional não tem influência na performance
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # � �
Evitar campos opcionais
• Controle de campo opcional pode complicar programação
+
� 0 7 ? 6 ? > 3 7 � � 3 ? 5 > 3 - . = 5 . = 4 0 - 0 5 2 3 7 @ 3 � ? = 5�
� � 3 1 4 = ? 5 2 = 4 0 . 0 1 4 0 4 = 2 ? . = 4 0 / ? 1 � 3
• Regra mais "fraca" que as precedentes
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # � �
Exercício 5.1
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � �
� � � � � � � � �
� � � � � � � � � �
� � � �
� � � � � � �
� � � � � � � �
� � � � � � � �
� � � � � � � � � �
� � � �
� � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � � �
� � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � �� � � �� � � � � � � � � � �
� � � � � � � � � � �
� � � � � � � � � ��
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � �
� � � � � � � � � � � � � � � � � � ��
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # � �
Passos da transformaçãoER para relacional
• Tradução inicial de entidades e respectivos atributos
• Tradução de relacionamentos e respectivos atributos
• Tradução de generalizações/especializações
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # � �
Implementação inicial de entidades
• Cada entidade é traduzida para uma tabela• Cada atributo da entidade define uma colunadesta tabela
• Atributos identificadores da entidade correspondem a chave primária da tabela.
• Tradução inicial:
+
� 0 � 7 3 5 � � 0 5 0 � � 0 - . = 4 0 - 6 � 1 4 ? 7 2 3 � 0 / 3 5
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # � $
Implementação de entidadeexemplo
� � � � � �
� � � � � � �
� � � � �
� � � �
� �
� � � � � � � � �
� �
� � � � � �
� � � � � � � � � � � � � � �
� � � �
� � � � � � � �
� � � � � � � �
� � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ %
Tradução de entidaderelacionamento identificador
& ' ( ) & * + , - , & ( & . , & . / &
0 12
1 3 0 42
5 3
5 6 7 89 8 : ; < 5 = > ?
= @ A > B 6
5 C 7 8 D 6
5 6 7 8
Dependente (CodigoEmp,NoSeq,Nome)
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Relacionamento identificadorrecursão
� ��� �
* ) � ( -
� � � � �
� �
�
� �
�
� ��� �
� � � � � �
� � � � � � � �
� � � � � � �
� � � � � � � �
� � � � � � � � �
� � � � � � � � � � � � � � � �
� �
� � ��� �
� � � �
� � ! " � � � �
� � � � � � � �
� � � �
� � � �
� � � � * D # $ 6 0 % 6 A * D # $2
. 6 7 8 3
& 7 $ D 8 9 ? 0 % 6 A * D # $2
. 6 & 7 $ D 8 9 ?2
. 6 7 8 3
& 7 $ D 8 B ? A 6
0 % 6 A * D # $2
. 6 & 7 $ D 8 9 ?2
. 6 & 7 $ D 8 B2
. 6 7 8 3
, 8 $ 8 5 A 8 5 & 8
0 % 6 A * D # $2
. 6 & 7 $ D 8 9 ?2
. 6 & 7 $ D 8 B2
. 6 ' 8 :2
. 6 7 8 3
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Nomes de colunas
• Referenciados freqüentemente em programas e outras formas de texto em computador
• Para diminuir o trabalho de programadores
� � � � � � � � � � � � � � � � � � � � � � �
• SGBD relacional
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Nomes de atributose nomes de colunas
• Não transcrever os nomes de atributos para nomes de colunas.
• Nomes de atributos compostos de diversas palavras devem ser abreviados
• Nomes de colunas não necessitam conter o nome da tabela
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � � � � �
� � � � � � ��
� � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
Nome da coluna chave primária
• Chave primária
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � �
• Recomendável
� � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � �
�
� � � � ! "
# $ � � � � � % � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ %
Implementação de relacionamento alternativas
• Tabela própria• Adição de colunas a uma das tabelas• Fusão de tabelas
• Alternativa depende da cardinalidade (máxima e mínima do relacionamento)
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ $
Tabela própria
� � � � � � � � � � � � � � � � � � � � �
� ��
� � � ��
� �
� � � � � � � � � � � � � � �! � " # $ � � � � � � �
Engenheiro (CodEng,Nome)Projeto (CodProj,Título)Atuação (CodEng,CodProj,Função)
CodEng referencia EngenheiroCodProj referencia Projeto
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
Adição de colunas
� � � � � � � � � � � �
� � � � � � � � � � � � � � �
� ��� � � �
�� �
� � � � � � � � � � � � � �� � � � � � � # $ � � � � � � �
Departamento (CodDept,Nome)Empregado (CodEmp,Nome,CodDept,DataLota)
CodDept referencia Departamento
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
Fusão de tabelas
� � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� ��� � � ��� �
� � � � � � � � � �
� " � � �� � � � � " � � � # $ �
� � � � � � � � � � � � � � �
� � � ��
� � � � � � � � � � � � ��
� � � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
Implementação de relacionamentos 1:1
� � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � �
� � �� � �
� �! " �
#! $ � �
% � � � � � $
& '(
) * & '(
) * + , -
& '(
) * & )(
) * - + ,
& )(
) * & )(
) * - - ,
, . / 0 1 2 3 4 0 5 6 4 7 2 1 8 1 2 5 9 4 +
: ; 9 1 < 1 2 = < 4 9 4
- > ? ; = < 4 2
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ %
1:1 - ambas entidades opcionais exemplo
& ' ( ) ( * + , + ( ) - . ' ( / 0 & ) 1
2 34
5 6 2 34
5 6
7 8 9 : ; < 8 = 8 9 - > ? 9 7 8 9 : ; < 8 = 8 9@ = ; = 1 9 A < ? 9 - > ? 9
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ �
1:1 - ambas opcionaisadição de colunas
Mulher (IdentM,Nome,IdentH,Data,Regime)IdentH referencia Homem
Homem (IdentH,Nome)
� � � � � � � � � � � � � � � � � �
��
� � ��
� �
� � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ %
1:1 - ambas opcionaistabela própria
� � � � � � � � � � � � � � � � � �
��
� � ��
� �
� � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � �
& ' ( ) * + , - . * / 0 &1
2 3 4 * 5
6 3 4 * 4 , - . * / 0 61
2 3 4 * 5
7 8 9 8 : ; < = > ? @ A ; < = BC
@ A ; < = DC
E 8 = 8C
F ; G H : ; I
@ A ; < = B J ; K ; J ; < L H 8 B M N O ; J
@ A ; < = D J ; K ; J ; < L H 8 D > : ; :
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
1:1 - ambas opcionaisfusão de tabelas
� � � � � � � � � � � � � � � � � �
��
� � ��
� �
� � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � �
Casamento (IdentH, NomeH, Data,Regime, IdentM,NomeM)
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
1:1 - ambas opcionaisdiscussão
• Solução por fusão de tabelas é inviável
�
� � � � � � � � � � � � � �
• Solução por adição de colunas melhor
�
� � � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � �• Solução por tabela própria aceitável
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
1:1 - Uma entidade opcionaloutra obrigatória
� � � � � � � � �
� � � � �
� � � � � � � �
��
� � ��
� �
� � . � � 3 2 3 4 * � � . � � 3 � 0 � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � $
1:1 - opcional/obrigatóriafusão de tabelas
� � � � � � � � �
� � � � �
� � � � � � � �
��
� � ��
� �
� � . � � 3 2 3 4 * � � . � � 3 � 0 � �
Correntista (CodCorrent,Nome,CodCartão,DataExp)
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
1:1 - opcional/obrigatóriaadição de colunas
� � � � � � � � �
� � � � �
� � � � � � � �
��
� � ��
� �
� � � � � � � � � � � � � � � � � � � � � � ��
Correntista (CodCorrent,Nome)Cartão(CodCartão,DataExp,CodCorrent)
CodCorrent referencia Correntista
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
1:1 - opcional/obrigatóriatabela própria
� � � � � � � � �
� � � � �
� � � � � � � �
��
� � ��
� �
� � � � � � � � � � � � � � � � � � � � � � ��
Correntista (CodCorrent,Nome)Cartão(CodCartão,DataExp)CartãoCorrentista(CodCartão,CodCorrent)
CodCorrent referencia CorrentistaCodCartão referencia Cartão
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
1:1 - opcional/obrigatóriadiscussão
• Solução por tabela própria é pior que a solução por adição de colunas
�
� � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
1:1 - opcional/obrigatóriadiscussão
• Adição de colunas versus fusão de tabelas
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
1:1 - Ambas entidades tem participação obrigatória
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
��
� � ��
� �
� � � � � � � � � �
� � � � �
� � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � %
1:1 - ambas obrigatóriasfusão de tabelas
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
��
� � ��
� �
� � � � � � � � � �
� � � � �
� � � � � � � � � � � � �
� 3 / � * + � / � � , � 3 . � 3 / �1
2 3 4 *1
� 0 - / � 0 � 3 4 � + �1
/ . * + � 3 4 � + � 5
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
1:1 - Ambas obrigatórias
• Nenhuma das demais alternativas atende plenamente
• Em ambas
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � �
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
Relacionamentos 1:n
� � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � �
� � � � � � �
� � �� � �
� � � ! �
" # � �
$ � � � � � #
% &'
( ) % &' *
) + , -
. /0
1 2 . 10 3
2 + , -
4 56
5 7 4 86 9
7 - , -
. 10
1 2 . 10 3
2 - , -
, : ; < = > ? @ < A B @ C > = D = > A E @ +
F G E = H = > I H @ E @
- J K G I H @ >
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ %
1:n - caso 1
• A entidade que tem cardinalidade máxima 1 é obrigatória
& ' ( ) * + ) , ' - + . / . + ) 0 1 . ' , ( * ' 2 ) & .
3 45
4 6 3 75
8 6
9 : ; < = > - > ? @ - > ? @& A B A C > B A D E > 9 : ; < = >
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ %
1:n - caso 1adição de colunas
& ' ( ) * + ) , ' - + . / . + ) 0 1 . ' , ( * ' 2 ) & .
3 45
4 6 3 &5
8 6
9 : ; < = > - > ? @ - > ? @& A B A C > B A D E > 9 : ; < = >
Departamento (CodDept,Nome)Empregado (CodEmp,Nome,CodDept,DataLota)
CodDept referencia Departamento
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
1:n - caso 1tabela própria
& ' ( ) * + ) , ' - + . / . + ) 0 1 . ' , ( * ' 2 ) & .
3 45
4 6 3 &5
8 6
9 : ; < = > - > ? @ - > ? @& A B A C > B A D E > 9 : ; < = >
Departamento (CodDept,Nome)Empregado (CodEmp,Nome,Lotacao(CodEmp,CodDept,DataLota)
CodDept referencia DepartamentoCodEmp referencia Empregado
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ $
1:n - caso 1discussão
• Fusão de tabelas
�
� � � � � � � � �
�� � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � �
• Adição de colunas é melhor que tabela própria
�
! � " � " # � � � $ � % � & � �
�
! � " � " # � � � $ � ' ( " ) * � �
�
� � � % + � � � , � � � � $ � � � � � � � � � " � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
1:n - caso 2
• A entidade que tem cardinalidade máxima 1 é opcional
� � � � � � � � � � � � � � � � � � � � �
� �
� �
� � � � � � � � � � �� � � �
� � � � � � � � � � � �
� � ! " � � � # � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
1:n - caso 2adição de colunas
� � � � � � � � � � � � � � � � � � � � �
� �
� �
� � � � � � � � � � �� � � �
� � � � � � � � � � � �
� � ! " � � � # � � � � � �
Financeira (CodFin,Nome)Venda (IdVend,Data,CodFin,NoParc,TxJuros)
CodFin referencia Financeira
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
1:n - caso 2tabela própria
� � � � � � � � � � � � � � � � � � � � �
� �
� �
� � � � � � � � � � �� � � �
� � � � � � � � � � � �
� � ! " � � � # � � � � � �
Financeira (CodFin,Nome)Venda (IdVend,Data)Fianciam (IdVend,CodFin,NoParc,TxJuros)
IdVend referencia VendaCodFin referencia Financeira
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
1:n - caso 2discussão
• Implementação por tabela própria também é aceitável
�
�
� � � % � � � � � � ) � � � � � � � � � � � " � �
�
� � $ � � � � � � ) � � � ' ( " ) * � � � " # � � � $ � % � & � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
Relacionamentos n:n
� � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � �
� � �� � �
� �! " �
#! $ � �
% � � � � � $
& '( ) * & '( ) * + , ,
& '( ) * & -( ) * + , ,
& -( ) * & -( ) * + , ,
+ . / 0 1 2 3 4 0 5 6 4 7 2 1 8 1 2 5 9 4 , : ; < = > 4 2
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ %
Relacionamentos n:n
& ' ( & ' ) & * + , - . / - 0 1 , 2 + , 3 & . ,
4 56
7 8 4 56
7 8
9 : ; < = > ' > ? @ . A B C D >E C 7 F G > 9 : ; < = >
Engenheiro (CodEng,Nome)Projeto (CodProj,Título)Atuação (CodEng,CodProj,Função)
CodEng referencia EngenheiroCodProj referencia Projeto
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Relacionamento grau > dois
7 > ? @7 > ? @
� � � � � � � � � � � � � � � �
� � � � � � �
� � � � � � � � � � �� ��
� �
� ��� �
� ��� �
� : ; < = > � : ; < = >
� : ; < = >
7 > ? @
; � B � ; @
< 7 A � < >
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Relacionamento grau>2
• Não são definidas regras específicas
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ %
Relacionamento grau>2
& ' ( ) * ' + , ' & - *. ' & / & 0
1 * - & , ) -
2 34
5 6
& ' ( ) * ' + , ' 7 8 -2 9
49 6
2 94
9 6
2 94
9 6
2 34
5 6
2 34
5 6
5 : ; <5 : ; <
= > ? @ A : = > ? @ A :
= > ? @ A :
5 : ; <
? B C B ? <
@ 5 D = @ :
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ �
Relacionamento grau>2
Produto (CodProd,Nome)Cidade (CodCid,Nome)Distribuidor (CodDistr,Nome)Distribuição (CodProd,CodDistr,CodCid,DataInicio)CodProd referencia ProdutoCodDistr referencia DistribuidorCodCid referencia Cidade
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ $
Implementação de generalização/especialização
• Duas alternativas básicas
� � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
• Outra alternativa (exótica)
�
� � � � � � � � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ �
Generalização/especializaçãoexemplo
� � � � � � � � � � � � � � � � � �
� �
� � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � �
� � � � � � � � � �
� � � � � � � � � � �
� � � � � � � � � � � � � � �
� ! " # $
� � � � � � � � � % & �
' ( ) *
+ � , � �
� , - � . � �
� � �
� . - + � - . �
/ . 0 � 1 � + . 2 3 �
$
4 565 74 86
� 7
4 56
� 7
4 86
� 7
4 86
� 7
4 86
� 7
, 9
� � � � � �
� � � � � � � � � �
4 86
� 7
4 565 7
� � � � � � � � �
� � � � � �
� � � � � � � � �
� � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ �
Uma tabela por hierarquia
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � �
� � � � � � � � � � �
� � � � ! " # $ % & # $ � ' ( # # ! ) " ( * + ! * , ! � ( $ + ! * , $ - $ ' � + ( # + � ! * , $ + � + !
% � $ ) . ! * / # $ ' �
� � � ) ( * 0 ( ! 1 $ ) , � 2 � + $ ' $ ( * � # 3 % � ' ( 4 3 * � 5 $ " (
� 6 % � ' ( 4 3 * � " � # � ' � + � � , # $ 7 3 , ( + � ! * , $ + � + ! . ! * / # $ ' �
� � ( 4 3 * � ) # ! - ! # ! * , ! ) � ( ) # ! 4 � ' $ ( * � % ! * , ( ) + ( ) 8 3 � $ ) " � # , $ ' $ " � �
! * , $ + � + ! . ! * / # $ ' � ! 8 3 ! ) ! 9 � % $ % " 4 ! % ! * , � + ( ) � , # � / ) + �
� 4 , ! # * � , $ � + ! � + $ ' $ ( * � # ' ( 4 3 * � ) : , � 7 ! 4 � + � ! * , $ + � + ! . ! * / # $ ' �
; < = > <
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ %
Uma tabela por hierarquia
� � � � � � � � � � & � � � � � � � � � ' �
� 6 % � ' ( 4 3 * � " � # � ' � + � � , # $ 7 3 , ( + ! ' � + � ! * , $ + � + ! ! ) " ! ' $ � 4 $ ( � + �
) ( " ' $ ( * � 4 *
�
� ( 4 3 * � ) # ! - ! # ! * , ! ) � ( ) # ! 4 � ' $ ( * � % ! * , ( ) + ( ) 8 3 � $ ) " � # , $ ' $ " �
' � + � ! * , $ + � + ! ! ) " ! ' $ � 4 $ ( � + � ! 8 3 ! ) ! 9 � % $ % " 4 ! % ! * , � + ( )
� , # � / ) + � � 4 , ! # * � , $ � + ! � + $ ' $ ( * � # ' ( 4 3 * � ) : , � 7 ! 4 � + �
! * , $ + � + ! ) ' � % " ( ( " ' $ ( * � 4 *
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ �
Uma tabela por hierarquia
� � � � � � � � � � ��
� � � �
� ��
� � ��
� � � � � � ��
� � � � � � � � ��
� � � ��
� � � � � � � �
� � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � ��
� � �
� � � � � � � � � � � �
� � �
� � � � � � � � � � � � � � � � � ��
� � �
� � � � � � � � � � � ��
� � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � �
� � ! � � � � � � � � � !�
� � �
� � � � � � � � � " # � � � � � � � ��
� � � � � ! �
� � � � � � � � � � � � � � � � � � � �
� � � � � � ! � � � � � � � � � � � � ! � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # � �
Uma tabela por entidade especializada
• Criar uma tabela para cada entidade que compõe a hierarquia
• Incluir a chave primária da tabela correspondente à entidade genérica, em cada tabela correspondente a uma entidade especializada
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # � �
Uma tabelapor entidadeespecializada
� � � � � � � � � � ��
� � � �
� ��
� � ��
� � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � ��
� � � � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � ��
� � � ��
� � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � ��
� � �
� � � � � � � � � � � �
� � �
� � � � � � � � � � � � � � � � � ��
� � �
� � � � � � � � � � � ��
� � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � �
� � ! � � � � � � � � � !�
� � �
� � � � � � � � � " # � � � � � � � ��
� � � � � � ! �
� � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � ! � � � � � � � � � � � � ! � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # � �
Vantagens da implementaçãocom tabela única
• Dados referentes à entidade genérica + dados referentes às especializações
� � � � � � � � � � � � � �
• Minimiza junções• Menor número de chaves
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ %
Vantagens da implementação com uma tabela por entidade especializada
• Colunas opcionais
& � ' � � � ( � ) � � � ( * � + � * � � , � ( � � , * � - � , . ( ) � � ' . / � �
( � * 0 � 1 � . ( / . ' . � , . / � 0 � ( , � / � � ' � � 2 3 .4
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
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
&
/ � / . ( / � � � , � / � / � � ( ' � � � � 1 � / � �
&
/ � / . ( / � � � , � / � / � � � � � * � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Subdivisão da entidade genérica
� � � � � � � � � � � � � � � ��� � � ��� � � ��� � ��� � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � ��
� � � ��� � ��� � � � � � � � ��� � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � ��
� � � ��� � ��� � � � � � � � ��
� � !�� � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � ��
� � � � �
� � � � � � � � � � ��� � � � �
" � � � � � � # � � � � � � � " � � ��� � � � �
� � � $ � � � � � � � � � � ��� � � � � " � � � �
� � � � � " � � � � � � � � � � � � � " � � � � � � # � �
" � � % � � � � � � � � " � � %�� � � � �
" � � � � � � � � & ' � � � � � � � � ��� � � � � " � � % �
� � � � � " � � % � � � � � � � � � � " � � % � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ $
Subdivisão da entidade genérica
• Desvantagem:
&
� � � � / � / � / � � � 0 � ' * � � � * � �
� � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � �
&
� 3 . � � . � . � ( ' � � + � � * � . � � � � * � ( , * � 2 � � ( / �
� � , � � * � / � / � * � + � * � � � � � (�
) � � + � 2 � � * � + � * � � � � � .
. � � � , . / � � � ' * � � � / . ( . � . � � , . / .
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Refinamento do modelo relacional
• Projeto (engenharia) em geral
& . � ' * . � � ( ( . � � , * � . � / � � � . * � � � 1 � 0 � / � � , * .
/ � ( * � ( , * � 2 � � ( / � * � � * ( . ( � � ' . ( , � ( ' � � ( ' * � , � �
• Projeto de banco de dados
& . � ' * . � � ( ( . � � , * � .
� � � � � � � � � � � � � � � � � � � � � � � �
� �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Refinamento do modelo relacional
• Algumas vezes
& � ( ) � � � � / � � � * � � / . � , * � 0 � ( / . � ( . / � ( * � � * � (
� � � � � 3 . � , � � / � * � ) � � ( � , . ( / � ' � * + . * � � � �
� � ' . ( , . ( � . ( � ( , � � �
• Necessário buscar alternativa que resulte em melhor performance do sistema
• Alternativas somente devem ser tentadas em último caso
&
� . ' . � , . / � 0 � ( , � / � ' * . � * � � � 2 3 . ( 3 . ( � � ' * �
' � . * � (
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Refinamento do modelo relacional
• Relacionamentos mutuamente exclusivos• Simulação de atributos multivalorados• Informações redundantes
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
Relacionamentosmutuamente exclusivos
� � � � � �
� � � � �
� � � �
� � � � � �
� � � � � �
� ��� �
� ��
� �
� ��� �� ��
� �
� � � � � � � � � � �
� � � � �
! � " # � $
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
Relacionamentosmutuamente exclusivos
• Implementação pelas regras
• colunas CIC e CGC em Venda são especificadas como opcionais
" � � � � � ��� � � � �
" � � � � � � �� � � � � � �
� � � � � �� � � ��� � ��� � � �
� � � � � � � � � � � � � " � � �
� � � � � � � � � � � � � " � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � �
Relacionamentosmutuamente exclusivos
• Implementação alternativa
& * � � * � � � � � � � . � � � � � ) � � � ' � * � � . � � � . � .
� � � / . . � ' * � / . *
&
� � ( 0 � � , � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � �
" � � � � � ��� � � � �
" � � � � � � �� � � � � � �
� � � � � �� � � ��� � � � � ��� � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � %
Tratamento deatributos multivalorados
� � � � � �� � � �
� � � �
� � � � � � � �
� � � � � � � � � ��� �
� � � � � �� � � �
� � � �
� � � � � �
� ��
� �� ��� �
� � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ %
Atributos multivaloradosimplementação padrão
Cliente (CodCli,Nome)Telefone (CodCli,Número)
CodCli referencia Cliente
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
Atributos multivaloradosalternativa
• Condições de contorno:
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � ��
�
� � � � � � � � � � � � � � �
� � � � � � � � � � � � � ! � " � � � ! # � � $ � � � � % # � � � & ! � # � '
�
( ) � * + � � � � � � � � � � � , � � � � � � � � � � � � � � � � �
� - � � � � � � � � � � � � � � � � . � � � � � / ) �
�
( - � � � � � � � � � � � ) � � � � � 0 , � � � � �
� � � � � � 1 � � � � � 2 � � � � � � � � � � � / 3 � �
� � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
Simulação de atributos multivalorados
• Implementação “desnormalizada”
� � � � � � � � � � �
( � � �
( � � � � ��
( � � � � � �
• Simular uma coluna multi-valorada através da criação de diversas colunas NumTel sufixadas por um número
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ $
Simulação de atributos multivalorados
• Permite que os telefones de um cliente sejam obtidos mais rapidamente
• Implica em menos espaço ocupado
� � ) � . � � � � + � � � * � � � � + � � � � � � , � � � � � � �
• Inconveniente
�
� � � � � � � � � � � � � � � � - � � � � � � � � � � � � �
� � � . � � � , � � � � � � � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � � * � � � � 2 � � � � � � � 0 �
� � � � � � � � � 0 �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
Informações redundantes
• Exemplo:
� � � � , � � � � � � � � � � � � � � � � � � � � / ) � � �
� � � � � � � � � � � � � � � � � � � , � � � � � � � � � �
� � � � � � � � � � � � � , � � � �
� % � � � � � # � � � % # � # ! � � � � � � � � � # �
� � � � � � � � � � � � � ! � � � � � # ! # � � � � � # % � � � � � � % �
� � � # ! � � � � � � # � � � � # % � % � % # �
• Pode ser mais eficiente (performance global do sistema)
� � � � � � � � � � � � � � � � � � � � � � � � , � � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
Informações redundantesExemplo
� � � � � �
� �� � � � � �
� � � � � � � �
� � � � � �� � � � � � ��� �
� � � � � ��
� � � !� " # !
# $ % � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ %
Exercício 5.2DER
& ' ( ) * + (, - . ' / 0 - 1 + 2
3 2 ) / 0 - 3 2 1 + ( & 2 ' , * 3 - ' / -
4 2 1 ) -' 2 0 2 / + -
3 5 ) / 0 -
6 78
7 9 6 :8
; 9
6 :8
; 9
6 :8
; 9
6 78
; 9
6 :8
7 9
6 :8
; 9
<
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ �
Exercício 5.2atributos
� � � � � � � � � � � ��
� � � � � � � � � ��
� � � � � � � � � � � �
� � � � � � � � � ��
� � � � � � � � � � � � � �
� � � � � � � � � � � � �
� � ��
� � � � � � � � �
� � � � � � � � � � � � � � ��
� ! � � � � �
� � � " � � � � � � � � � � �
# � � � � � $ � � ��
� � � � � � � ��
� � � � � � � � ��
� � � � � � � � � � � �
� � � " � � � � � # � � � � � � � � � � � � � � ��
% � � & � � �
� � � � � � � � � � ' � � � � � � # � � � � � � � � � � � � � � ��
% � � & � � �
' � � � � � � � ( � � � � � ' ��
� � � ��
$ � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ �
Exercício 5.2solução
� � � � � � � � � �
� � � � � � � ��
� � � � � � � � � ��
� � � � � � � � � � � �
� � � � � � � � � ��
� � � � � � � � � � � � ��
� � � � � � � ��
� � � ��
� ! � � � ��
� � � � �
� � � " � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � �
� � ��
� � � � � � � � �
# � � � � � $ � � ��
� � � � � � � ��
� � � � � � � � ��
� � � � � � � � � � � �
� � � " � � � � � # � � � � � � �
� � � � � � � ��
� � � � � � � ��
� � � � � � � � � ��
% � � & � � �
� � �
� � � � � � � � � � � " � � � � � � � � � � � � � �
� � � � � � � � � � " � � � � � � � # � � � �
� � � � � � � � � � # � � � � � � �
� � � � � � � ��
� � � � � � � ��
� � � � � � � � � ��
% � � & � ��
' ��
� � � � �
� � �
� � � � � � � � � � � " � � � � � � � � � � � � � �
� � � � � � � � � � " � � � � � � � # � � � �
� ' ��
� � � � � � � " � � � � � � � ' � � � � � � � ( � � � �
' � � � � � � � ( � � � � � ' ��
� � � ��
$ � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ �
Exercício 5.3DER
� � � � � �
�� � � � � �
� � � � �� � � � � � � �
�� � � � � �� � � !
� " # !
� � � � � � � �
� � � � � �
� � � � � � �
� � � � � � � � �
� � � !� " # !
� � � !� � # !
� � � !� " # !
� % � � � � � � � � �
� " # !� " # !
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ �
Exercício 5.3atributos
� & � � � � ! � � � � � � � ��
� � � � � �
� � � � � � � � � � � � � � � � � � � � & � ��
� & � � � � � � � � � � � � � & � ��
� � ��
� � � � � � � ��
� � � � " � � � �
� � � � � � � � � � � � � � � � � � ��
$ � � ��
$ � � � � � � �
# � � � � � � � � � � ��
$ � � � � � ! � � � � � � � � � � � � ��
� � � � � �
� � � � � � # � � � � � � � ! � � � ��
� � ��
� � � � � � � � � � � � � �
� � � � ! � � � � � � � � � � � � � &�
$ � � � � � � � � � � � � � � � ��
� � � � � � � � � � � � ��
' � � � � �
� � � � & � � � � � � � & & � � � � � � &�
� � � � ��
� � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ �
Exercício 5.3solução� � � � � � � � � � � � � � � � � �
�
� � � � � �
� � � � � � � � � � � � � � � � � � � � � ��
� � � � � � � � ��
� � � ��
� � � � � � ��
� � � � � � ��
� � � � � � � � � � � � � � � ��
� � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � ��
� � � � � � � � � � � � � � � � � � ��
� � �
� � � � � ��
� � � � � �
� � � � � � � � � ��
� � � � � � ! � � � � � � � � � � � ��
� � � ��
� � � � � � � � " � �
� � � � � � � � " � � � � � � � � � � " � � � � � � �
� � " � � � � � � � � � � � � � � � " ��
� � �
# � � � � � � � � � � � � � �
$ � � � � � � � � � � � � � � � � � � " ��
� � � � � � � � " � $ � � � � � � �
� � � � � � � � " � � � � � � � � � � " � � � � � � �
� � � � � � � � " � $ � � � � � � � � � � � � � � � " � � � � � � �
# � � � � � % � � � � � � � � � " ��
� � � � � � � � ��
� � � � � � & � � � ' � � � � ��
� ( � ) � � # � � � � ' � � � ��
* ' � � � �
� � � � � � � � " � � � � � � � � � � " � � � � � � �
+� � ) � � � � � � � � � � " ��
� � � � � � � � � � � � ��
� � � ��
$ � � � � ' � � � �
� � � � � � � � " � � � � � � � � � � " � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # # $ �
Engenharia reversade modelos relacionais
• Engenharia reversa
� � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ %
Engenharia reversa
Modelo ER(conceitual)
Modelo relacional(lógico)
Projeto lógicode BD relacional
Engenhariareversa de
BD relacional
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ $
Engenharia reversa de modelo relacional
• Passos:
�� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � �
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # $ �
Esquema relacionalpara engenharia reversa
� � � � � � � � � � � � � � � �
� � � � � � � � �
� � � � � � �
� � � � � �
� � � � � � � �
� � � � � �
� � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � �
� � � �
� � � � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � �
� � � � � � � � �
� � � � � � � � � � �
� � � � � �
� � � � � � � �
� � � � � � � � �
� � � �
� � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � �
� � � �
� � � � � � � � � � � � � � � � � � �
� � � � � ! " � � � � � � �
� � � �
� # � � � � � �
� � � �
� � � � � � � � � � � � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # � �
Identificação da construção ER correspondente a cada tabela
• Uma tabela pode corresponder a:
� � � � � � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � �
• Fator determinante
� � � � � � � � � � � � � � � � � � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # � �
Tipos de tabelas paraidentificação de construção ER
� � � � � � � � � �
� � � � � � � � � �
� � � � � � � � � � � �
� � � � � � � � � � � � �
� � � � � � � � � � � �
� � � � � � � � � �
� � � � � � � � � � � � � � �
� � � � � � � � � � � � �
� � � � � � � � � � � � � �
� � � � � � � � � � � �
� � � � � � � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # � �
Construções identificadas
� � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � �
� � � � � � � � � � � � � �
� � � � � � � �
� � � � � �
� � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � �
� � � �
� � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � � � � � �
� � � � � �
� � � � � � � �
� � � � � � � � �
� � � �
� � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � �
� � � �
� � � � � � � � � � � � � � � � � � �
� � � � � ! " � � � � � � �
� � � �
� # � � � � � � � � � � � � � � � � � � �
� � � �
� � � � � � � � � � � � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # # � �
Construções identificadas
� � � � � � � � � � � � �
� � � � � � �
��
� � � � � �
� � � �
� � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ %
Identificação derelacionamentos 1:n ou 1:1
• Chave estrangeira que não se enquadra nas regras acima
& ' ( ) ' ( * ( + , -
. / 0 1 2 3 4 5 1 6 / 5 7 4 8 9 5
4 :. / 0 1 2 3 4 5 1 6 / 5 7 4 8 9 8
• Esquema não informa se é 1:1 ou 1:n
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Identificação derelacionamentos 1:n ou 1:1
� � � � � � � � � � � � � � � �
� � � � � � � � �
� � � � � � �
� � � � � �
� � � � � � � �
� � � � � �
� � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � �
� � � �
� � � � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � �
� � � � � � � � �
� � � � � � � � � � �
� � � � � �
� � � � � � � �
� � � � � � � � �
� � � �
� � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � �
� � � �
� � � � � � � � � � � � � � � � � � �
� � � � � ! " � � � � � � �
� � � �
� # � � � � � �
� � � �
� � � � � � � � � � � � � � � � � � �
$ � % � � � � ! � � � � � � � � �
� � � ! � � ! � � � � � � � � � � �
� � % � � � � � $ �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Identificação derelacionamentos 1:n ou 1:1
� � � � � � � � � � � � �
� � � � � � �
��
� � � � � �
� � � �
� � � � � � � � � ��
��
��
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Definição de atributos
• Cada coluna não chave estrangeira é
& � � - , ' � � � , � + - ( + , � � - � ( � ' ( � - � � + - � ( + , �
� ' ' ( * ) � + � ( + , ( , - � ( � -
• As colunas chave estrangeira não correspondem a atributos
& � ' ' ( * ) � + � ( � - ' ( � - � � + - � ( + , � *
&� � � ' - � , ' - , - � - * + - * ( , - ) - * - + , ( ' � � ' ( *
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Definiçãode
atributos
� � � � � � � � � �
� � � � � � � � �
� � � � � �
� � � � � �
� � � � � �
� � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � � � � � � � �
� � � � � � �
��
� � � � � �
� � � �
� � � � � � � � �
��
��
��
� � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ $
Definição deidentificadores de entidades
• Coluna da chave primária que não é chave estrangeira
& � ' ' ( * ) � + � ( - � � - , ' � � � , � � � ( + , � � - � � ' � -
( + , � � - � ( � � ' ( � - � � + - � ( + , ��
• Coluna da chave primária que é chave estrangeira
& � ' ' ( * ) � + � ( - � � ' ( � - � � + - � ( + , � � � ( + , � � - � � ' � -
( + , � � - � (
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � � �
Definição deidentificadoresde entidades
� � � � � � � � � �
� � � � � � � � �
� � � � � �
� � � � � �
� � � � � �
� � �
� � � � � � � � � � � � � � � � �
� � � � � � � � � � � � �
� � � � � � �
��
� � � � � �
� � � �
� � � � � � � � �
��
��
��
� � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � � �
Exercício5.4� � � � � � � � � � � � � � � � � � � �
�
� � � � � � � � ��
� � � � � � � � � � � � ��
� � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � ��
� � � � � � � � ��
� � � � � � � � � � � � � � ��
� � � � � � � � � � � � �
� � � � � � � � � � � � ��
� � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � ��
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � ��
� � � � � � � � � � � � � � � � �
� � � � � � � � � � � ��
� � � � � � � � ��
� � � � � �
� � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � ��
� � � � � � � � � � � ��
� � � � � � � � ��
� � � � � � ��
� � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � ��
� � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � �
� � � � � � � �
� � � � � � � � � � � � � � ��
� � � � � ��
� � � ! � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � � �
Exercício 5.4passo 1
� � � � � � �
� � � �
� � � � �
� � � �
� � � �
� � � � � � �
��
� � � �
� � � � �
� � � � � � � � � � �
��
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � � �
Exercício 5.4passo 2
� � � � � � �
� � � �
� � � � �
� � � �
� � � �
� ��
� �
�
�
� � � � � � �
��
� � � �
� � � � �
� � � � � � � � � � �
��
�
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � � %
Exercício 5.4DER final
� � � � � � �
� � � �
� � � � �
� � � �
� � � �
� ��
� �
�
�
� � � � � � �
��
� � � �
� � � � �
� � � � � � � � � � �
��
�
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � � �
Exercício 5.4atributos
� � � � � ! � � � � � � � � � � �
� � � � � � � � � � � � �
� � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � �
� � ! � � � � � � �
� ! � � � � � � � � ! � � � ! � �
� � � � � � ! � � �
� � � � � ! � � � � � � � � � � �
� � � � � � � � �
� � � � � � � � � � � � � �
� � � � � � �
� � � $ � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � � �
Exercício 5.5
� � � � � � � � � � � �
� � � � � � � �
� � � � � � � �
� � ! � � � � �
� � � � � � � � �
� � ! � � � � � �
� � � � � �
� � � $ � � � � � � �
� � � � �
� � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � �
� � � $ � � � � � � � � � � � � � � � � � � � � �
� � � � � � � �
� � � � �
� � � � �
� � � � � � � � � � � � �
� � � � � � � � �
� � � � � � � � � �
� � � � � � � � � � � �
� � � � � � � � � � � �
� � ! � � � � �
� � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � � �
Exercício 5.5passo 1
� � � �
� � � � � � �
� � � � � �
� � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � � �
Exercício 5.5passo 2
� � � �
� � � � � � �
� � � � � �
�
� � � � �
� � �
� � � � � �
� � � �� � � � � � � � �
� �
�
��
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # � � $
Exercício 5.5atributos
� � � � � � � � � � � � ��
� � � � � ��
� � � � � � ��
� � � � � � � ��
� � � � �
� � � � � � � � � � ��
� � � � � ��
� � � � �
� � � � � � � � � � � � � � � ��
� � � � � � �
� � � � � � � � � � � � � � ��
� � � � � � � � �