Engenharia reversa de arquivos e documentos - dca.ufrn.branderson/FTP/dca0120/Aula6.pdf ·...
Transcript of Engenharia reversa de arquivos e documentos - dca.ufrn.branderson/FTP/dca0120/Aula6.pdf ·...
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$
Engenharia reversade arquivos e documentos
Capítulo 6
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
�
Engenharia reversade arquivos e documentos
� � � � � � � �
� � � � � � � �
� � � � � � � � � � � � � �
� � � � � � � � � �
� � � � � � � � �
� � � � � � � � � � �
! " # $ % & ' ( ) * +
� , - � . � � � � � - � / �
� / � � � � � �
� � . � � �
� � � � � � � � � �
� � � � � � � � �
� � 0 1 � � �
� � � � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
�
Engenharia reversade arquivos e normalização
• Entrada:
� � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � �
� � � � � � � � � � �
� � ! � " # � � � � � � � " �
� � ! � " # � � � � � # � � � " � � � " � � � � � � $ � � � � �
� % & ' ( ) * + , + & + ) * - , . , ' ( / & + ) * 0 ) . 1 2 3 4 ' 5 )
. , 6 & ( / ) ' & 6
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$
Engenharia reversa de arquivos e normalização - motivação
• Sistemas legados• Raramente documentados• Necessidade de modelo ER
%
& ' ( ) * + ( , - .
%
& / 0 1 ' , - . 2 ' 1 ' . ) * 1 . * / 2 . 3 + 4 5
%6 ( * + 0 1 ' , - . 7 . 8 . ) * 1 . 9 4 5
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
�
Engenharia reversa - processo
� � � � � �
� � � � � � � � �
� � � � � � � �
� � � � � � � � � � � � � � �
� � � � � � � � � � � �
� � � � � �
� � � � � � � � �
� � � � � � � �
� � � � � � � � � � � � � � �
� � � � � � � � � � � �
...
� � � � � � � � � � � � � � � � � � � � �
� � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
�
NormalizaçãoObjetivo
• Reagrupar informações para
% + � / 8 / ( ' 1 1 + 3 ) ( 3 � ( 7 / ' 9 3 + 3 ' 3 . 9• Reagrupar informações para
% + � / 8 / ( ' 1 + 9 * 1 ) * ) 1 ' 9 / ( + � / 9 * + ( * + 9 ( . 8 . 3 + � . � �
� ' * 1 / � ) * . 9 8 ) � * / � ' � . 1 ' 3 . 9
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
�
Normalizaçãopassos
� � � � � � � �
� � � � � � �
� � � � � � � �
� � � � � � � � � � � � �
� � � � � � � � � �
� �
� � � � � � � �
� � � � � � � �
� � � � � �
� � � �� � � � � �
� � �
� � � � � �
� � � �
� � � � � �
� � �
� � � � � �
� � � �
� � � � � �
� � � �
� � � � � �
� � �
� � � � � � � � � � � � � �
� � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
�
Documento exemplo� � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �!
" # $ % & � ' ( � � � ) � * � + , - � . � * � / 0 �
1 2 3 4 5 6 3 6
7 8 9 : 7 5 ; 3 6
< 6 8 7 1 ; = 7 5 6 : 4 ;
> ? < 1 4 6 < ; @
A ; @ B : 4 6 3 ; = ; 3 7
4 < C 1 4 6 < 6
9 : 6 D 7 = 6
= 7 8 9 6
; @ 6 1 ; 3 6 ; 6
9 : 6 D 7 = 6
E F G H I J K J L F G F M F F M N F E G
O F G P Q R ST U J L E G E M F V M N F E G
H F E H I J W X Y F N O M F V M N E F Z
F E F G [ \ ] S J W L E G G M F V M N E F Z
Z F N F ^ _ ] U J L F G F M F F M N E F E
% ` " � a � " � � & � b # � � � c d e � f � � � � � g , 0 * � h i �
" # $ % & � ' ( � � � ) � * � + , - � j k
1 2 3 4 5 6 3 6
7 8 9 : 7 5 ; 3 6
< 6 8 7 1 ; = 7 5 6 : 4 ;
> ? < 1 4 6 < ; @
A ; @ B : 4 6 3 ; = ; 3 7
4 < C 1 4 6 < 6
9 : 6 D 7 = 6
= 7 8 9 6
; @ 6 1 ; 3 6
; 6 9 : 6 D 7 = 6
Z F N F ^ _ ] U J L F G F M V P M N O F E
G F F E I J K J L E G G M V F M N F E G
H F E H I J W X Y F N F M F F M N E F E
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$
Normalização1º passo
% & ' ( % ) * + %
* , ' ( - . / / (
+ / 0 ( ) % 1 2 /
3 4 5 6 4 7 4 8 9 : ; < =
> = ? = 9 : @ 4 A :
B C
% & ' ( % ) * 1 D /
1 / , ) * E - F * + /
G : 7 7 : H 4 ?
: I J C% & ' ( % ) *
1 * K L M
G : 7 7 : H 4 ?
: N J C
% & ' ( % ) *
1 * O L M
G : 7 7 : H 4 ?
: P J C
G : 7 7 : H 4 ?
: Q J C
% & ' ( % ) *
1 * R L M
% & ' ( % ) * , % E * 0 - / 1 * E
1 / , ) * E - F * + /
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Representação na forma detabela não normalizada
• Tabela não-normalizada ou• tabela não-primeira-forma-normal
� � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � ! � � � � � � � � � � � � " � � # � � � $
% & ' ( ) * + , ) - + ' . * / 0 1 2 - & ' * 3 - 4 / + ( ' 4 - 1 + 3 5 6 . & ' 1 7
& ' * 3 0 6 3 + 8 - ( + 1 + * . * 9 + 2 + 1
• Abreviatura: ÑN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ $
Tabela aninhadaexemplo
% & ' ( ) * + , -. * / 0 1 2 ) 3 4.
% * ' 3 4. 5 * 4 0 % 6 7 8 6 9 / 6 7 6 : ; - , 0 4. < 9
= 8 % > > ? 5 * @ * / 0 1 0 ; @A
B ? C D E * F * < ? C ? G ? ? G H ? B C8 - 1 7 0 4 6 ' 0
3 1 7 * I J 0 K ? C L 8 M 9 @ - * < B C B G ? > G H ? B C
D ? B D E * 1 N O ? H K G ? > G H B ? P
? B ? C % 6 ) 9 * 1 < B C C G ? > G H B ? P
P ? H ? Q R ) - * < ? C ? G ? ? G H B ? B
( < S > B Q 6 ; J 7 0 ; T F * P ? H ? Q R ) - * < ? C ? G > L G H K ? B8 - 1 7 0 4 6 ' 0
U V C ? ? B E * F * < B C C G > ? G H ? B C
D ? B D E * 1 N O ? H ? G ? ? G H B ? B
W X Y Z [ X X \ ] \ ^ X _ X Z ` a ` X [ ] \ ^ X _ Z b c d e Z f d
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Tabela ÑNEsquema
� � � � � � � � � � � ��
� ��
� � � ��
� � � � � � ��
� � � ��
� � ��
� � ��
� � � � � � ��
� � ! " � # #
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ %
Arquivo em Pascal
& ' ( ) * + ,-
. / 0 1 2 3 4 ) 5 6 4 7
8 2 9-
. / : ; 1 < + , + * =
1 2 > +-
. / : 8 ? . *-
@ A =
; 1 , * + B B 2 B-
8 0 * B 2 B-
. / : C 4 4 C ' D E F F E A G 2 H 4 ) 5 6 4 7
8 2 9-
8 0 * B 2 : ; 1 < + , + * =
B + > + B < * +-
; 1 , * + B B 2 : ; 1 < + , + *
) I 7 =
9 ; B 8 ; J / ; 1 . B-
8 0 * B . 9 . B-
. / : C 4 4 C ' D A F F K A A G 2 H 4 ) 5 6 4 7
8 2 9-
9 ; B 8 : ; 1 < + , + * =
B + > + B < * + B-
8 0 * B . 9 2 B : C 4 4 C ' D E F F K A G 2 H 4 ) 5 6 4 7
B + > + B < * +-
9 ; B 8 : ; 1 < + , + * =
1 2 < .-
9 ; B 8 : ; 1 < + , + *
) I 7
) I 7
) I 7 =
. * L-
. / 0 1 2 3 M N O ) 6 M * + ,-
. / 0 1 2 =
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Arquivo em Cobol
� � � � � � �� � �
� � � � � ���
� � � � � ��
� � � � � � ��
� � � � � � � � � � � � �� � � � � � � � � �
� � � � � � � � �
� � � � � �� � � � � �
� � � � � � � � � � � � �� � � � � � � � ! � �
� � � � � �� � �
� � � � � � � � � � �� � � � � � � � � ! �
� " � � � � �� � � � � � � � �� �
� " � � � �� � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Esquema ÑNpara arquivos exemplo
� � � �� � � � � � � � �� �
� � � � �� �
� � � �� � � �
� � � �� � � � � � �
� � � �� � � � � � �� � � �� � � � � �
� � � � �� � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Representação em esquemanão normalizada
• Nenhuma transformação foi feita no modelo do documento
• Apenas foi usada outra notação• Notação independe do tipo de documento/arquivo usado como entrada do processo de normalização
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Forma normal• Regra que uma tabela deve obedecer para ser considerada “bem projetada”
• Há diversas formas normais, cada vez mais rígidas, para verificar tabelas relacionais
• Aqui tratadas
� � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ %
Primeira forma normal1FN
& ' ( ) & * + , &
+ - ( ) . / 0 0 )
, 0 1 ) * & 2 3 0
4 5 6 7 5 8 5 9 : ; < = >
? > @ > : ; A 5 B ;
C D
& ' ( ) & * + 2 E 0
2 0 - * + F . G + , 0
H ; 8 8 ; I 5 @
; J K D& ' ( ) & * +
2 + L M N
H ; 8 8 ; I 5 @
; O K D
& ' ( ) & * +
2 + P M N
H ; 8 8 ; I 5 @
; Q K D
H ; 8 8 ; I 5 @
; R K D
& ' ( ) & * +
2 + S M N
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Passagem à primeira forma normal (1FN)
primeira forma normal (1FN)=
diz-se que uma tabela está na primeira forma normal, quando ela não contém
tabelas aninhadas
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Passagem à 1FNalternativas
• Construir uma única tabela com redundância de dados
• Construir uma tabela para cada tabela aninhada
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� $
Passagem à 1FNuma única tabela
• Uma tabela na qual os dados das linhas externas à tabela aninhada são repetidos para cada linha da tabela aninhada
• Exemplo
� � � � � � � � � � � ��
� � � �
� � � � ��
� � � � ��
� � ��
� � ��
� � ��
� � � � � ��
� � � � � �
• Dados do projeto aparecem repetidos para cada empregado do projeto
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Passagem à 1FNuma tabela para cada tabela aninhada
• Cria-se uma tabela referente a própria tabela que está sendo normalizada e uma tabela para cada tabela aninhada
• Exemplo:
� � � � � � � � ��
� � � �
� � � � � �
� � � � � � � � � � � ��
� � � � ��
� � ��
� � ��
� � ��
� � � � � ��
� � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Passagem à 1FNalternativas
• Primeira alternativa (tabela única) é mais correta• Decompor uma tabela em várias tabelas (segunda alternativa)
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
• Ver exercício
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Passagem à 1FNalternativas
• Para fins práticos
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � �
• Quando houver diversas tabelas aninhadas, eventualmente com diversos níveis deaninhamento, fica difícil visualizar a tabela na 1FN na alternativa de tabela única
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Passagem à 1FN passo (1)
• Criar uma tabela na 1FN referente a tabela não normalizada
• A chave primária da tabela na 1FN é idêntica a chave da tabela ÑN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Passagem à 1FNcriar tabela referente a tabela ÑN
� � � � � � � ��
� ��
� � � ��
� � � � � � ��
� � � �
� � ��
� � ��
� � � � � � �
� � � � � �
ÑN
1FN
� � � � � � !"
# $ % �"
& ' ( ) *
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ %
Passagem à 1FNPasso (2)
• Para cada tabela aninhada
& ' ( ) * ( + , * - * . / 0 * 1 * 2 3 4 ' 5 , 6 5 7 - * 6 / 0 * 7 7 / 8 + ) 1 - / 7
' 5 0 + 1 * 7 9
: ; < = ; > ? @ A B C D A B ; E ? < ; E ; F C ; E ; G H ; I ? J ; G K ; L F ; J ;
H ; I ? J ; ? C L F ? G H M N ? G H D ; K B K = ; E ;
: ; G < N J F K ; G E ; @ A O @ A B ; H ; I ? J ; ; K B K = ; E ;
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Passagem à 1FNcriar tabela referente a tabela aninhada
� � � � � � � ��
� ��
� � � ��
� � � � � � ��
� � � �
� � ��
� � ��
� � � � � � �
� � � � � �
ÑN
1FN
� � � � � � � ��
� ��
� � � � �
� � � � � � � ��
� � � � � ��
� � � �
� � ��
� � ��
� � � � � � �
� � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Passagem à 1FNPasso (3)
• Definir as chaves primárias das tabelas na 1FN que correspondem a tabelas aninhadas.
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Passagem à 1FNdefinição de chave primária
� � � � � � � ��
� ��
� � � ��
� � � � � � ��
� � � �
� � ��
� � ��
� � � � � � �
� � � � � �
ÑN
1FN
� � � � � � � �
� � �
� � � � �
� � � � � � � �
� � � � � �
� � � �
� � �
� � �
� � � � � �
� � � � � �
� � � � � ! � " # $ � % � & ' � ( ) � * " + ,
� � ' ) � ) * � " ' - * � $ � * � - . � $ �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ %
Passagem à 1FNdefinição de chave primária
& ' ( ) * + ( ,-
. / 0 (-
1 2 3 4 + 5
& ' ( ) * + ( ,-
' ( ) 6 7 0-
8 ( 7 2-
' 9 :-
; 9 <-
1 9 : 9 = > /-
. 2 7 0 ? < 5Qual é a chave primária desta tabela?Pergunta a fazer:
“um valor de CodEmp (chave da tabelaorigem) aparece uma vez só no documento ou várias?”
1FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Passagem à 1FNdefinição de chave primária
& ' ( ) * + ( ,-
. / 0 (-
1 2 3 4 + 5
& ' ( ) * + ( ,-
' ( ) 6 7 0-
8 ( 7 2-
' 9 :-
; 9 <-
1 9 : 9 = > /-
. 2 7 0 ? < 5Como um valor de CodEmp aparece váriasvezes, é necessário CodProj para distinguiras várias aparições
1FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ $
Passagem a 1FN - exemplo
� � � � � � � ��
� ��
� � � � �
� � � � � � � ��
� � � � � �
� � � ��
� � ��
� � ��
� � � � � � �
� � � � � �Caso cada empregado trabalhe em um único projeto apenas, ou sejacaso um valor de CodEmp apareça uma única vez na tabela
1FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Passagem à 1FNexemplo� � � � �
� � � � � � � � � � � �
� � � � � � � � � � � � � � � �
� ! � " � # $ % � & � " � ' ( �
) * + � , - . / 0 1 2 / 3 4 5 6 78 1 2 9 . : 2 ; <
= > ? @ A B C D
E F : G H 5 I J K L M N O P K N Q J R S T R U V R S R W X Y Z Q N O [ U
\ 6 E ] ] _ a b c K d K [ a e e f _ a
\ 6 E ] ] g a h T i Uj Y K [ _ a _ e k e f _ a
\ 6 E ] ] b _ b c K l m n f g e k e f _ ` o
\ 6 E ] ] ` _ a J R p U K l [ _ a a e k e f _ ` o
\ 6 E ] ] o f q r p Y K [ a e e f _ ` _
G s t ] u o f q r p Y K [ a e k h e f g ` _
G s t ] u a ` _ c K d K [ _ a a e k e f _ a
G s t ] u b _ b c K l m n f e e f _ ` _
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ %
Passagem à 1FNexemplo
& ' ( )* + , - . - + / 0 1 2 * 0 -
)* 3 ' 1 0
45 0 6 7 )* 3 ' 1 0
4
5 3 6 7 ' 0 )8 + 9 + 1 )* 3 ' 1 0
4
2 * 0 -)
* + , -4
5 0 6 7 )* + , -
4
: 1 ; 0 ' 7 )* + , - < <
ÑN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Passagem à 1FNdecomposição em tabelas
& ' ( )* + , - . - + / 0 1 2 * 0 -
)* 3 ' 1 0
45 0 6 7 )* 3 ' 1 0
4
5 3 6 7 ' 0 )8 + 9 + 1 )* 3 ' 1 0
4
2 * 0 -)
* + , -4
5 0 6 7 )* + , -
4
: 1 ; 0 ' 7 )* + , - < <
� � � � � � � � � � �� � � � �
� � � �� � � � �
� � � � � � � � � � �� � � � � �
ÑN
1FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Passagem à 1FNdecomposição em tabelas
& ' ( )* + , - . - + / 0 1 2 * 0 -
)* 3 ' 1 0
45 0 6 7 )* 3 ' 1 0
4
5 3 6 7 ' 0 )8 + 9 + 1 )* 3 ' 1 0
4
2 * 0 -)
* + , -4
5 0 6 7 )* + , -
4
: 1 ; 0 ' 7 )* + , - < <
� � � � � � � � � � �� � � � �
� � � �� � � � �
� � � � � � � � � � �� � � � � �
� � � � � � � � � � � � � � �� � � � �
� � � �� � � �
� � � �� � � �
� � � � � � �� � � � �
ÑN
1FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Passagem à 1FNdefinição da chave primária
& ' ( )* + , - . - + / 0 1 2 * 0 -
)* 3 ' 1 0
45 0 6 7 )* 3 ' 1 0
4
5 3 6 7 ' 0 )8 + 9 + 1 )* 3 ' 1 0
4
2 * 0 -)
* + , -4
5 0 6 7 )* + , -
4
: 1 ; 0 ' 7 )* + , - < <
� � � � � � � � � ��
� � � � �
� � � �� � � � �
� � � � � � � � � � �� � � � � �
� � � � � � � � � � � � � ��
� � � � �
� � ��
� � � �
� � � �� � � �
� � � � � � �� � � � �
� � � � � � � � � � � � � � � ! � " # � $ � % &
� � ! # � # $ � � ! ' $ � � � $ � ' ( � � �ÑN
1FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ %
Passagem à 1FNdefinição da chave primária
& ' ( )* + , - . - + / 0 1 2 * 0 -
)* 3 ' 1 0
45 0 6 7 )* 3 ' 1 0
4
5 3 6 7 ' 0 )8 + 9 + 1 )* 3 ' 1 0
4
2 * 0 -)
* + , -4
5 0 6 7 )* + , -
4
: 1 ; 0 ' 7 )* + , - < <
= > ? @ A @ B = A CD
= > ? @ AE
F A G H D= > ? @ A
E
F > G H ? A DI J K J @ D= > ? @ A L
= J M C N C J O A @ B = A CD
= > ? @ AE
= A CD
= J M CE
F A G H D= J M C
E
P @ Q A ? H D= J M C L
R S � � T � ' ( � � � U $ � V $ � � � ! # � # � � � � � W
X � $ Y S � # � � Z � [ � $ &
\ S � � � � % $ � � ] % �^
] � � � _ ' ( � � � � � # � � � � �
% $ Y � � ` � U � $ � ' � S � � ! a � � [ � %
� % ' S � � � # % % S � V $ � ! W b
ÑN
1FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Passagem à 1FNdefinição da chave primária
& ' ( )* + , - . - + / 0 1 2 * 0 -
)* 3 ' 1 0
45 0 6 7 )* 3 ' 1 0
4
5 3 6 7 ' 0 )8 + 9 + 1 )* 3 ' 1 0
4
2 * 0 -)
* + , -4
5 0 6 7 )* + , -
4
: 1 ; 0 ' 7 )* + , - < <
� � � � � � � � � � � � � � �
� � � � � � � �
� � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � �
� � � � � � �
� � � � � � �
� � � � � � � � � �
� � ' a � Y % � � ' � � � � � # % � U � $ � ' � S � � � � ' � � � [
ÑN
1FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Passagem a 1FN exemplo Pascal/COBOL
� � � �� � � � � � � � �� �
� � � � �� �
� � � �� � � �
� � � �� � � � � � �
� � � �� � �
� � � �� � � �� � � � � �
� � � � �� � � � � �
� � � � � � � � ! "� �#
$ � % & "� � '
� � � � � � ( � � � � ! "� �#
� ! " � ( � �#
) & % "* � + ( & � � � '
� � � � � , * � - � � ! "� �#
� ! ", * � - '
� � � � � , * � - ) & % � � ! "� �#
� ! ", * � -#
) & % ", * � - " � ( � . ! .#
$ � / . ", * � - '
ÑN
1FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Passagem a 1FN exemplo Pascal/COBOL
� � � �� � � � � � � � �� �
� � � � �� �
� � � �� � � �
� � � �� � � � � � �
� � � �� � �
� � � �� � � �� � � � � �
� � � � �� � � � � �
� � � � � � � � � � ��
� � � � � �
� � � � � � � � � � � � � � ��
� � � � � � ��
� � � � � � � � � � �
� � � � � � � � � � � � � ��
� � � � � � �
� � � � � � � � � � � � � � � ��
� � � � � ��
� � � � � � � � � � � ��
� � � � � � � � �
ÑN
1FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� $
Dependência funcional• Para entender 2FN e 3FN
� � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � ��
• Em uma tabela relacional, diz-se que
� � � � � � � � � �� � � � � � � � � � � � � � � � � � ! � � � � �
� � � � � � "# � $ � � � � � � � � � "
� � ! � % � � � � � � � � �
��& $ � � � � '
� � � � � � � ( � � � � � ) � � � ' � � � � � �� � * � � � � � � "
$ � � � � � � � � � � � � ) � � � ' � � � � � � � � � * �� � � �
�� �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ $
Exemplo de dependência funcional
%
& ' ( ) * +
%
, - . / 0 ) +
%
1 2 2 3
1 4 2 3
1 2 2 3
1 5 6
1 4 2 3
1 5 6
1 2 2 3
Código→ Salário
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Dependência funcionalexemplos
� � � �
� � � � �
� � � �
� � � �
� � � � �
� � � �
� � � �
� � � �
� � �
� � � �
� � � � �
� � � �
� � � �
� � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � �
A→ B
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # #
$ %
Dependência funcionalexemplos
& ' ( )
' * + + ,
( - + . *
' / 0 + ,
' * + + ,
( + + . *
( - + . *
& . , * . 1
& . + 2 . 1
& . , * . 1
' * + + ,
( - + . *
& . , * . 1
( - + . *
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � �
A→ D
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # #
$ �
Dependência funcionalexemplos� � � �
� � � � �
� � � �
� � � �
� � � � �
� � � �
� � � �
� � � �
� � �
� � � �
� � � � �
� � � �
� � � �
� � � �
� � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � �
(A,B)→ C
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # #
$ �
Segunda forma normal2FN
• Objetiva eliminar um certo tipo de redundância de dados
• Exemplo
• Dados referentes a empregados (Nome, Cat e Sal)
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � �
� � � � � � � ��
� � � � � �
! � � "�
� # $�
% # &�
' # $ # ( ) *�
+ " � , & -
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��� ��
� � � � � � � ! ! � � �� ��� � �� � � � � �" # # #
$ �
Segunda forma normal2FN
� � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � ! �
" # $ $ % & ' ( ) * � + � ! ' ( ' , ' ' , - ' & (
" # $ $ % . ' ( / � 0 �1 � � ! & ( & , ' 2 , - ' & (
" # $ $ % ) ' & ) * � 3 4 5 ' - . , ' 2 , - & ' 6
" # $ $ % ' & ' ( � � 7 � � 3 ! & ( ( , ' 2 , - & ' 6
" # $ $ % 6 ' - ' 8 9 7 � � ! ' ( ' , ' ' , - & ' &
� : ; $ < 6 ' - ' 8 9 7 � � ! ' ( ' , 2 / , - . ' &
� : ; $ < ( ' ' & * � + � ! & ( ( , 2 ' , - ' & (
� : ; $ < ) ' & ) * � 3 4 5 ' - ' , ' ' , - & ' &
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ %
Passagem à segunda forma normal 2FN
segunda forma normal (2FN)=
uma tabela encontra-se na segunda forma normal, quando, além de estar na 1FN, não contém
dependências parciais
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
Dependência parcial
dependência parcial=
uma dependência (funcional) parcial ocorre quando uma coluna depende apenas de parte
de uma chave primária composta
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
Dependências parciais
� � � � � � � � � � � � ��
� � � ��
� � � �
� ��
� � ��
� � � � � � ��
� � � � � �
1FN
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
Dependências não parciais
� � � � � � � � � � � � ��
� � � ��
� � � �
� ��
� � ��
� � � � � � ��
� � � � � �
1FN
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
Passagem à 2FN• Tabela 1FN e que possui apenas uma coluna como chave primária
� � � � � � � � � � � � � � � � � � � � � � �• É impossível uma coluna depender de uma parte da chave primária, quando a chave primária não é composta por partes
• Conclusão
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ $
% & ' ( ) * ' +,
- . / ',
0 1 2 3 * 4
% & ' ( ) * ' +,
& ' ( 5 6 /,
7 ' 6 1,
& 8 9,
: 8 ;,
0 8 9 8 < = .,
- 1 6 / > ; 4
Passagem à 2FNTabela com uma coluna na chave
1FN
? @ A B C D A EF
G H I AF
J K L M D N
2FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Passagem à 2FN• Também
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � �
�� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Passagem à 2FN
� � � � � � � � � � � � ��
� � � ��
� � � �
� ��
� � ��
� � � � � � ��
� � � � � �
� � � � � � � � � ! " " � # $ % � & � ' # ( ) ' # � $ ! ( & ) ' # � " $ ! � � * � "
� ! " " � # $ ! � � * � " * + ! $ % � & � , � & � " � ' � - � ( # * � , �
. � ' / � * 0 � � 1 � 2 � '3
� ' � $ � , � $ ! � � * � * + ! $ % � & � 4
5 � $ ! � � * � , � � * , � , � 0 ! , � � $ % � & � ! � " 6 , � � ' 0 � 7 8
! �5 � ' � # , � * 0 # 1 # $ � ' � ( & � � ! ' , � $ ! � � * � * � $ � " " # 0 � , � 0 ! , �
$ % � & � ! � " 6 , � � ' 0 � , � � � 7 8
1FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Passagem à 2FN
� � � � � � � � � � � � ��
� � � ��
� � � �
� ��
� � ��
� � � � � � ��
� � � � � �
� � � � � � � � � � � � ��
� � � ��
� � � � � � ��
� � � � � �
� � � � � � � ��
� � � �
� ��
� � � �
1FN
2FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Tabelas na 2FN� � � � �� � � � � � � � � � � �
� � � � � � � � � � � � � � � ��
� � � � � � � � � � � � � ! �
" # � $ % � � ! � � � & ' � � � � � � � � � � ( )
� � � � * + , �� � � � � - � . * + , / 0 1 0 2 3 4 5 6 + , 7 8
� � � � � � 9 : ; < : = : : = > : 9 ;
� � � � � � ? : ; @ 9 = : A = > : 9 ;
� � � � � � < : 9 < ? = : A = > 9 : B
� � � � � � : 9 : ; ; = : A = > 9 : B
� � � � � � B : > : : = : : = > 9 : 9
" # � $ B : > : : = A @ = > ? : 9
" # � $ ; : : 9 ; = A : = > : 9 ;
" # � $ < : 9 < : = : : = > 9 : 9
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ %
Tabelas na 2FN
& ' ( )* + , & ' ( - + ' . * / 0 1 / 2
3 4 5 6 7 + 8 + 9 4 5
: 4 5 ; 1 < 2 = > + 9 3 5
4 3 4 5 * / ? 2 + @ 9 3 5
A 4 B 4 C D ? > + 9 4 5
5 4 4 3 7 + 8 + 9 3 5
6 4 3 6 7 + @ E F 4 B
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Terceira forma normal (3FN)• Trata de um outro tipo de redundância• Exemplo
• Considerar
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � �
• Salário que é pago a uma categoria funcional é armazenado tantas vezes quantos empregados possui a categoria funcional
Emp ( CodEmp, Nome, Cat, Sal )
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Terceira forma normal (3FN)
� � � �� � � � � � � � � � � �
� � � � � � � � � � �
� � � � � � � � � � � �
� � � � � � � � � � �
� � � � � � � � � � �
� � � � ! � � � � � �
� � � � ! � � � � � �
� � � � � � � � � � �
� � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Dependência transitiva
Emp ( CodEmp, Nome, Cat, Sal )
Dependência funcional transitiva (indireta)
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ %
Terceira forma normal3FN
terceira forma normal (3FN)=
uma tabela encontra-se na terceira forma normal, quando, além de estar na 2FN, não
contém dependências transitivas
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
Normalização do exemplo
� � �
� � � � � � � � � ��
� � ��
� � � � � �
� � � � � � � � � � � � ��
� � � ��
� � � � � � �
� � � � � � �
� � � � � � � ��
� � � ��
� � �
� � � � ��
� � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ $
Normalização do exemplo
� �� � � � � � � � � � � �
� � �
� � � �
� � � � � � �
� � � �
� � �
� � �
� � � � � �
� � � � � � �
� � �
� � � � � � � � � � � �
� � �
� � � � �
� � � � � � � � � � � � � � �
� � � � � �
� � � �
� � �
� � �
� � � � � �
� � � � � �
� � �
� � � � � � � � � � � �
� � �
� � � � �
� � � � � � � � � � � � � � �
� � � � � �
� � � � � �
� � � � � �
� � � � � � � � � �
� � � �
� � �
� � � �
� � �
� � � � � � � � � � � �
� � �
� � � � �
� � � � � � � � � � � � � � �
� � � � � �
� � � � � �
� � � � � �
� � � � � � � � � �
� � � �
� � � �
� � � � � � �
� � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
Tabelas na 3FN� � � � �� � � � � � � � � � � �
� � � � � � � � � � � � � � � ��
� � � � � � � � � � � � � ! �
" # � $ % � � ! � � � & ' � � � � � � � � � � ( )
� � � � * + , �� � � � � - � . * + , / 0 1 0 2 3 4 5 6 + , 7 8
� � � � � � 9 : ; < : = : : = > : 9 ;
� � � � � � ? : ; @ 9 = : A = > : 9 ;
� � � � � � < : 9 < ? = : A = > 9 : B
� � � � � � : 9 : ; ; = : A = > 9 : B
� � � � � � B : > : : = : : = > 9 : 9
" # � $ B : > : : = A @ = > ? : 9
" # � $ ; : : 9 ; = A : = > : 9 ;
" # � $ < : 9 < : = : : = > 9 : 9
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
Tabelas na 3FN
� � � �� � � � � � � � � � �
� � � � � � � �
� � � � � � � � � � �
� � � � � � � �
� � � � � � � �
� � ! � � � �
� � ! � � � �
� � � � � � � �
� � � � � � � �
" # $ %
" # $ & # '
( ) *
( + *
, ) -
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ %
Passagem à 4FN• Maioria dos documentos e arquivos
& ' ( ) * + , - + . / 0 1 + ' 2 3 ' 4 5 6 3 . 7 8 / * / ) 9 2 )
• Na literatura aparecem outras formas normais
&8 + : , ' 9 + : , ' ; ( ) < + = * ) > ? + ( (
& ' @ 5 6
& ' A 5 6
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Exemplo para 4FNModelo original
� � � � � �� �
� � � � � � � � � �� � � � � � �
� � � � � � � � �
� � � � � � � � �
� � � � � �
� �
� � � � � �� �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Exemplo para 4FNRequisitos alterados
� � � � � �
� � �
� � �
� �
� � � � � � � � � � � � � � � �
� � � � � � � �
� � � � � �
� � �
� � � � � �� � �
� � �
� � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Tabela Utilizaçãocom requisitos alterados
� � � � � � � � � � � � � � � � � �
�
�
�
� �
� �
� � �
� � �
� �
� �
� � �
� � �
� � �
� � �
� � �
� � � � � � � � �
� � � � � � � � � � � � � ! � � " # � � $ � ! %
! % # � % & � � % ' ( � � � % � " � ! % )
� � � � � � � � � � � � � ! �
� * � � # � " � � � % � � � ! % � % # � % & � � %
' ( � � � % � " � ! % )
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ %
Dependências multivaloradas
• CodProj→→ CodEmp• CodProj→→ CodEquip
CodProj CodEmp CodEquip
1 1 11 2 11 3 11 1 21 2 21 3 22 2 2
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
4FNdefinição
quarta forma normal (4FN)=
uma tabela encontra-se na quarta forma normal, quando, além de estar na 3FN, não contém mais de uma dependência
multi-valorada
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
4FN
ProjEmp (CodProj,CodEmp)ProjEquip (CodProj,CodEquip)
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
Problemas da normalização• Chaves primárias omitidas ou incorretas• Atributos relevantes implicitamente representados
• Atributos irrelevantes, redundantes ou derivados
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ $
Chaves primárias omitidas ou incorretas
• Arquivos convencionais
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � �
• Quando um arquivo convencional não possui chave primária ou quando a chave primária nele usada difere da usual na organização
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � �
�
� � � � � �� � � � � � �� � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
Chaves primárias omitidas ou incorretas exemplo
• Arquivo com dados sobre empregados de uma organização enviado para fins de fiscalização a um órgão governamental
• Identificador de empregado usado na organização é omitido, já que este é irrelevante para o órgão fiscalizador
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
$ �
Chaves primáriasomitidas ou incorretas - exemplo
• Outra situação
� � � � � � � � � � � � � � � � � �
� � � � � � � � �
� � � � � � � � � � � � � � � � �
• No caso mencionado acima
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
�
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � ��
� � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � ��
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
� �
Atributos relevantesimplicitamente representados
• Arquivos convencionais podem conter atributos de forma implícita
� � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � ��
� � �
• Deve-se proceder como se o atributo aparecesse explicitamente no documento
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
� �
Atributo implícitoOrdenação
• Exemplo:
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � � � � ��
� � � � � � � � � � � � � � � � � � � � � ��
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � �
�� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � �
� � � � �� � ��
� � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� ��
� ��
� � � � � � � ! ! � � ���
�� � �� � � � � �
" # # #
� �
Atributo implícitoOrdenação
� ��� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � �
� � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � ! � " � � # $ % & ' $ ( ) � � � * % + $ � # ,
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ %
Atributo implícitoOrdenação
• Informação da classificação dos candidatos em um curso foi perdida no processo de normalização
• Procedimento correto
& ' ( ) * + ' , - . / * ' ) ' 0 1 2 - ( 0 - ( 1 0 1 3 - * 1 4 5 6 ( 1 7 8 , 2 1 9 : 4 1
' ( 7 8 , 2 1 ; < 8 = + - 1 / 1 , - ) - ' 2 / * ' ) ' 0 1 2 - ( 0 - ( 8 1 , = + ' > 8 ( 1
7 8 , 2 1 ? 1 8 , ? - ( 1 ; < 8 ? 8 @ , - A ' @ 0 , 8 @ B ) 8 * + ( 1 C , ? - 2 D
E 1 ( ? F
G HIJ K L M N O P Q P N R S T U M S P L M V J T S W X S Y Z L M V J T S W X V Y Z J S L [ N \ N T L M V J T S WU M S P L M N O P W X S Y Z L M N O P W ] J P Z Y L M N O P
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Atributosirrelevantes, redundantes ou derivados• Devem ser eliminados já quando da passagem a forma não normalizada
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ �
Integração de modelos
# � ! � % �
� � % $ � & � " $ % �
� � * � # $ ! �
$ � � * & � � � ! � � * # � " + � �
� � � � � � � �
# � ! � % �
� � % $ � & � " $ % �
� � * � # $ ! �
$ � � * & � � � ! � � * # � " + � �
� � � � � � � �
...
� � � � � � � � � � � � � � � � � � � � � � � � �
� � � � ! " # $ %
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ %
Integração de modelos• Normalização de cada um dos arquivos/documentos
& ' ( ) * + , - * . / 0 ) 0 1 2 ( * . + 3 ' ( ) 4 + ) 5 ( * . 5 6 7 . 8 6 9
• Passo seguinte
& 0 ) 5 . : ; 6 ; ( 9 3 ( * . 8 ( 9 ( 7 5 0 * ( 9 < 6 ; 6 ' 6 * 6 6 ; = + 0 > ( ) (
3 ( * . 8 ( : 8 ( 7 6 8 * ( 7 6 ) ' ( * . * 6 * ( 9
• Processo é conhecido por
& ? @ A B C D E F G H I B J ? K L B K
& ? @ A B C D E F G H I B B K M N B O E K
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Integração de modelosobjetivos
• Os atributos de uma mesma entidade (ou de um mesmo relacionamento) podem estar armazenados em diferentes arquivos
& 4 + ) 5 6 ; 6 9 5 6 7 . 8 6 9 . 3 + 3 6 � ) 0 ' 6 5 6 7 . 8 6 = + .
; . < ; . 9 . ) 5 6 6 . ) 5 0 * 6 * . ( + ; . 8 6 ' 0 ( ) 6 3 . ) 5 ( . 3
= + . 9 5 2 (
• Tabelas de um modelo livres de redundâncias• Tabelas de diferentes modelos podem ter redundâncias entre si
& 0 ) 5 . : ; 6 1 2 ( . 8 0 3 0 ) 6 . 9 5 6 9 ; . * + ) * � ) ' 0 6 9
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ $
Integração de modelospassos
(1) integração de tabelas com a mesma chave(2) integração de tabelas com chave contida(3) verificação de 3FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Integração de tabelascom mesma chave
• Junção de tabelas que possuem a mesma chave primária.
• “mesma” chave primária =
& I H O � @ ? H K . � H @ A B � I H K * 6 9 ' ( 8 + ) 6 9 = + . ' ( 3 < � . 3
6 ' � 6 > . < ; 0 3 � ; 0 6 9 2 ( 0 : + 6 0 9
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� �
Integração de tabelascom mesma chave - exemplo
� � � � � � � � �
� � � � � � � � ��
� � � �
� � � � � �
� � � � � � � � � � � ��
� � � � ��
� � � � � ��
� � � � ! " �
� � � � � � � � ��
# � ��
� � � �
� � � � � � ��
$ � " �
� � � � � � � � � %
� � � � � � � � ��
� � � � � � � � �
� � � � ��
� � � � � � �
� � � � � � � � � � � �
# � � � � � � �
� � � � & ' � � � � � � � � � � � ��
� � � & ' � � � ��
� � � � � � �
� � � � � � � � � � � ��
� � � � ��
( ' ) * � � � � � � �
� & ' � � � � � � � � � � & ' � � � ��
� � � � � � ) * �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ %
Integração de tabelascom mesma chave - exemplo
& ' ( ) * ' + , - ) . / 0 ( ' 1
2 3 4 5 6 7 4 8 2 3 4 59
: ; < 49
= > ? @ 39
= A B A C D ; @ ; 49
7 4 8 = > < B 4 E
2 3 4 5 F G < 6 7 4 8 2 3 4 59
7 4 8 F G <9
= A B A C D ;9
: > G < H I9
J K D L M 4 F G < 2 3 4 5 E
F G < 6 7 4 8 F G <9
N 4 G >9
7 A B E
7 A B 6 7 A B9
O A I E
= > < B 4 6 7 4 8 = > < B 49
N 4 G > = > < B 4 E
2 3 4 5 F P K ; < A G > D B 4 6 7 4 8 2 3 4 59
7 4 8 F P K ; < A G9
= A B A C D ; E
F P K ; < A G > D B 4 6 7 4 8 F P K ; < A G9
= > ? @ 3 ; L M 4 E
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Integração de modelosproblemas
• Processo baseia-se na comparação dos nomesde colunas e de tabelas dentro dos diferentes modelos
• Problema :conflitos de nomes
�
� � � � � � � � �
�
� � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Integração de tabelascom chaves contidas
• Tabelas são fundidas
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � �
• Chave primária está contida dentro da outra
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ %
Integração de tabelascom chaves contidas
• Exemplo
& � � ' � � � ( ) � *& �
+
) � *' � � � ,
& � � ' � � � - � � ( ) � *& �
+
) � *' � � �
+
- � � *' � � � *) � � � � � �
+
. � � *' � � � ,
• Primeira tabela
�� / � � � 0 � � � � � � � � � � � � � � � � � � � � � � � �
+
• Segunda tabela
�� / � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Integração de tabelascom chaves contidas
& � � ' � � � ( ) � *& �
+
) � *' � � � ,
& � � ' � � � - � � ( ) � *& �
+
) � *' � � �
+
- � � *' � � � *) � � � � � �
+
. � � *' � � � ,
• Colunas Cod-Al e Cod-Disc da tabela AlunoDisc
� � � � � � � � � � 0 � � � � � � � � � ) � *& � � ) � *' � � �
� � � � � � � � & � � ' � � � - � �• Informações contidas na tabela AlunoDisc já estão na tabela AlunoDiscSem
• Tabela AlunoDisc é redundante e pode ser eliminada sem perda de informações
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Integração de tabelascom chaves contidas
• Não integrar quando tabela contém dados além da chave primária
& � � - � � ( ) � *& �
+
- � � *' � � �
+
� � � � - � � . � ,
& � � ' � � � - � � ( ) � *& �
+
) � *' � � �
+
- � � *' � � �
+
. � � *' � � � ,
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Integração de tabelascom chaves contidas
• Garantir que primeira tabela efetivamente contida na segunda
• Exemplo
& � � � � � � � � ( ) � *& �
+
- � � *' � � � ,
& � � ' � � � - � � ( ) � *& �
+
) � *' � � �
+
- � � *' � � �
+
. � � *' � � � ,
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ �
Integração de tabelascom chaves contidas
AlunoMatric (Cod-Al,Sem-Disc)AlunoDiscSem (Cod-Al, Cod-Disc,Sem-Disc, Nota-Disc)• AlunoMatric
� � � � � � � � � � / � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � �
• AlunoDiscSem
� � � � � � � � � � � � � 0 � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � �
• Durante o semestre letivo
� � � � � � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
$ $
Volta à 2FN• A integração de dois modelos 4FN pode conduzir a um modelo que está na 2FN mas não na 3FN.
• Exemplo
� � � � � � � � �
' � � � � � � � � � ( ) � ' � � � +
. � � ' � � � +
) � � � � � � ' � � � ,
� � � � � � � �
' � � � � � � � � � ( ) � ' � � � +
� � � � ' � � � +
. � � � � � � � ' � � � ,
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� � �
Volta à 2FN• Integração destes dois modelos resultaria no modelo integrado abaixo mostrado.
• Modelo integrado:
' � � � � � � � � � ( ) � ' � � � +
. � � ' � � � +
) � � � � � � ' � � � +
� � � � ' � � � +
. � � � � � � � ' � � � ,
• Não está na 3FN
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� � �
Construção do modelo ER e Eliminação de Redundâncias
• Integração dos modelos obtidos a partir dos diversos arquivos e documentos normalizados, segue a construção do modelo ER (ver ). Nesta construção usam-se as regras apresentadas no capítulo anterior para transformação de modelos relacionais em modelos ER.
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� � �
Verificação do modelo ERLimitações da Normalização
• O processo de normalização não conduz necessariamente a um modelo ER perfeito
• Normalização apenas elimina
� � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � / � � � �
� � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� � �
Verificação do modelo ERLimitações da Normalização
• Optamos pela alternativa de decompor tabelas na passagem à 1FN
� � � � � � � � � � �+
� � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � �+
� � � � � � � � � � � � � � / � � � � � � � � � �
• Há outras formas normais (Boyce/Codd e a quinta forma normal)
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� � %
Construção do modelo ER• Último passo da engenharia reversa
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � / � � � � � � � � � � � � � � � � +
� � � � � � �
� � � � � � � � � � � � / � � � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� � �
Exercício 6.1• Mostrar a 2FN e 3FN do modelo abaixo (vendas)
� � � � � � � � � � � � � � �
� � � � � � � � � � � � � ��
� � � � � � � � ��
� � � � � � � � � � � � ��
� � � � � � � � ��
� � � � � ��
� � � � � ��
� � � � � � � ��
� � � � � � � � ��
� � � � � ��
� � � � � � � � � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� � �
Exercício 6.1dependências parciais
• Dependências funcionais parciais
� � � � � � � � � � � � � � ��� � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � �
� � � � � � � � � � � �
� � � � � � � � � � � �
� � � � � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # #
� � �
Exercício 6.12FN
� �
� � � � � � � � � � � � � � ��
� � � � � � � � � � � � ��
� � � � � � � ��
� � � � � � � � � � � � � � � � �
� � � � � ��
� � � � � ��
� � � � � � � ��
� � � � � � � ��
� � � � � � ��
� � � � � � � � � � � � � � �
! �� � � � � � � � � � � � � � ��
� � � � � � � � � � � � ��
� � � � � � � ��
� � � � � � � ��
� � � � � � � � �
� � � � � � � � � � � � � � � � � � ��
� � � � � � � ��
� � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � ��
� � � � � � � � � � � � � � �
� � � � � � � � � � ��
� � � � � � �
� � � � � ��
� � � � � ��
� � � � � � � �
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ % &
Exercício 6.1dependências transitivas
• 2FN contém uma dependência transitiva• Na tabela Venda
' ( ) * + , - . ( + / * + ,
0 1 23 4 5 6 7 5 8 9 : ; < = 6 5 > ? < @
AB ? 9 C D ? E C F ? G > ? 9
A< H 6 5 > ? G > ? 9
AI 4 9 53 4 5 6 AG > 5 J ?3 4 5 6 K
G > ? 9 H 4 ? ; B ? 9 C D ? E C F ? G > ? 9A
< H 6 5 > ? G > ? 9A
L 5 M N > C N : ? G > ? 9 K
E C F ? G > ? 9 ; B ? 9 C D ? E C F ? G > ? 9A
L 5 M N > C N : ? E C F ? G > ? 9 K
7 5 8 9 : ; < = 6 5 > ? < @A
L : 4 : 7 5 8 9 :AB ? 9 O 5 D AB ? 9 P 6 FA< ? 6 5 P 6 F K
� � � � �� � �� � � � � � � � � � � � � � � � � � � � � � � �� �� � � � �� �� � �� � �� � � � � �� � � � �� �� � � � � � � � � � � ! ! � � �� � �� � �� � � � � � " # # # $ % �
Exercício 6.13FN
� � �� � � � � � � � � � � � � ��
� � � � � � � � � � � � �
� � � � � � � � �
� � � � � � ��
� � � � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � �
� � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � � � � ��
� � � � � � ��
� � � ��
� � ! � ��
� � � ! � � �
" � �� � � � � � � � � � � � � ��
� � � � � � � � � � � � �
� � � � � � � � �
� � � � � � ��
� � � � � � � � � �
� � � � � � � � � � � � � � � � � � � �
� � � � � � � � �
� � � � � � � � � � � � �
� � � � � � � � � � � � � � � � � � � � �
� � � � � � � � � � � � � � � � �
� � � � � � � � � ��
� � � � � � ��
� � � ��
� � ! � � �
! � � � � � � � � � � ! � ��
� � � ! � � �