Escolar Documentos
Profissional Documentos
Cultura Documentos
Dependência funcional:
Dados dois conjuntos de atributos A e B de uma entidade, diz-se que:
• B é funcionalmente dependente de A ou
• A determina B ou
• B depende de A,
se a cada valor de A estiver associado um, e só um, valor de B.
• Departamento → N_funcionário ?
Não pois Departamento 900 => {1021,1023}
• N_funcionário → Departamento ?
Sim pois se se conhecer o N_funcionário (atributo unívoco) é possível
determinar o Departamento (um funcionário só pode pertencer a um
departamento)
• N_funcionário → Apelido ?
Apesar de dois funcionários terem o mesmo apelido, se se conhecer o
N_funcionário determina-se um só Apelido
Formas Normais
1ª Forma Normal
Uma relação está na 1ª forma normal (1FN) quando:
• os domínios de todos os atributos consistem apenas em valores atómicos
• não existem subgrupos de atributos repetidos
A B
A B C D
A C D
A B C
A B C D
B D
A B C D
A B C D E
C E
Chaves candidatas:
Seminário, Estudante
Estudante, Instrutor
B C D
A B C D
C A
ou
A B D
A B C D
A C
A relação S Modelo
está na FNBC ? Concluído
N
#Produto
#Produto, #Fornecedor > Preço Preço
#Fornecedor
Não está na FNBC porque existem determinantes que não são chave
Decompor a relação em duas
R1 Existências R2
Telefone
Chave candidata: Chave candidata:
#Produto, #Fornecedor Tipo
Determinantes: Determinantes:
#Produto, #Fornecedor Tipo
#Produto
#Fornecedor
R4 Chave candidata:
Morada #Fornecedor
#Fornecedor Determinantes:
Telefone #Fornecedor
Está na FNBC
R5 Chave candidata:
#Produto, #Fornecedor
#Produto Determinantes:
Preço #Produto, #Fornecedor
#Fornecedor Está na FNBC
R2 (Tipo, Q_alerta)
R3 (#Produto, Existências, Tipo)
R4 (#Fornecedor, Morada, Telefone)
R5 (#Produto, #Fornecedor, Preço)
• Transitividade (T);
• Pseudotransitividade (P).
Notar que:
• X → Z é uma DF válida;
• Se X → Y, Y → Z e X → Z pertencem todas a um mesmo conjunto de DFs,
então X → Z é redundante.
A B C A B C
D D
1) Conjunto original de DF 2) A→C é removida, uma vez que
A→B e B→C
A B C A B C
D D
3) D→C é removida, uma vez que 4) A→B é removida, uma vez que
D→B e B→C A→D e D→B
Se X → Y e X → Z, então X → Y,Z.
Exemplo:
Se: Então
Nome Nome
BI BI
Morada Morada
Decomposição de DFs
Se X → Y,Z então X → Y e X → Z.
Exemplos:
Se: Então
Nome Nome
BI BI
Morada Morada
Exemplos:
A B A B
AZ-> B Z AZ-> BZ
Z acrescentada acrescentada
é redundante é redundante
Pseudotransitividade
Exemplo:
Sala
Disciplina
A cobertura mínima pode depender da ordem pela qual as DFs redundantes vão
sendo eliminadas, pelo que o mesmo conjunto de DFs pode originar várias
Coberturas Mínimas.
A decomposição deve:
• deixar todas as relações na forma normal adequada (que não cause anomalias);
• preservar todos os atributos;
• preservar as dependências funcionais;
• conduzir a junção sem perdas (não aditiva).
Preservação de atributos
Cada atributo da Relação Universal deve aparecer em pelo menos uma das
relações R1, R2, ..., Rn, ou seja, não se pode “perder” atributos durante o processo
de normalização.
Preservação de DF
As dependências funcionais existentes entre os atributos da relação universal
devem aparecer directamente, ou devem poder ser deduzidas através das regras de
inferência, numa das relações R1, R2, ..., Rn.
Porquê preservar as DF ?
• As DF representam restrições e podem e devem ser usadas para garantir a
integridade;
• Se, após a normalização, uma dada DF não aparece directamente numa única
relação, deixa de ser possível verificar facilmente a restrição representada por
essa DF; Seria necessário fazer a junção de duas ou mais relações para poder
verificar essa restrição, o que se tornaria incomportável num sistema real.
Lotes
ID_propriedade Concelho N_lote Área
Supor que:
• O número de identificação de cada propriedade é estabelecido a nível
nacional;
• As instâncias da entidade só contemplam 2 concelhos: Coimbra e Soure;
• As áreas dos lotes em Coimbra só podem ser de 500, 700 ou 1000 m2;
• As áreas dos lotes em Soure só podem ser 1200 m2;
DF´s:
a) ID_propriedade → todos os atributos
b) Área → Concelho
c) N_lote, Concelho → Área
d) N_lote, Concelho → ID_propriedade
Esta propriedade é também chamada junção não aditiva (JNA) porque garante que
a operação de junção não gera registos adicionais contendo informação errónea.
Proj_Emp
Nome_emp BI Nproj Nomeproj Local Horas
José 1154324 1 Hércules Coimbra 200
José 1154324 2 Viriato Viseu 35
Maria 5367222 3 Safira Braga 120
Sofia 2373672 1 Hércules Coimbra 80
Sofia 2373672 2 Viriato Viseu 70
Marta 6263533 2 Viriato Viseu 100
DF
{BI→NomeE Nproj→NomeP, Local BI, Nproj → Horas}
Emp_Locais Proj_Emp1
Nome_emp Local BI Nproj Nomeproj Local Horas
José Coimbra 1154324 1 Hércules Coimbra 200
José Viseu 1154324 2 Viriato Viseu 35
Maria Braga 5367222 3 Safira Braga 120
Sofia Coimbra 2373672 1 Hércules Coimbra 80
Sofia Viseu 2373672 2 Viriato Viseu 70
Marta Viseu 6263533 2 Viriato Viseu 100
DF
Proj_Emp (BI, NomeE, Nproj, NomeP, Local, Horas) BI→NomeE
Emp_Local (NomeE, Local) Nproj→NomeP, Local
Proj_Emp1(BI, Nproj, NomeP, Local, Horas) BI, Nproj → Horas
1ºPasso
Construir uma matriz S que terá nas colunas os atributos da relação universal e nas
linhas os nomes das relações de decomposição.
2ºPasso
Marcar os atributos de cada relação de decomposição com ai, sendo i o nº do
atributo.
BI NomeE Nproj NomeP Local Horas
Emp_Local a2 a5
Proj_Emp1 a1 a3 a4 a5 a6
3ºPasso
Repetir
Para cada DF X→Y
Se (existe alguma linha na matriz S com os dois conjuntos de atributos X e
Y, todos marcados com a´s) então
Para cada linha da matriz S
Se (os atributos contidos em X estão marcados com a´s) então
Marcar com a´s todos os atributos contidos em Y
fim se
fim para
fim se
fim para
Até ((existir uma linha só com a´s) ou (não haver alterações na matriz))
Não há alterações na matriz, nem nenhuma linha só com a´s ⇒ viola JNA
1ºPasso e 2ºPasso
BI NomeE Nproj NomeP Local Horas
Emp a1 a2
Proj a3 a4 a5
Trab_em a1 a3 a6
3ºPasso
• BI → NomeE
BI NomeE Nproj NomeP Local Horas
Emp a1 a2
Proj a3 a4 a5
Trab_em a1 a2 a3 a6
• Nproj→NomeP, Local
BI NomeE Nproj NomeP Local Horas
Emp a1 a2
Proj a3 a4 a5
Trab_em a1 a2 a3 a4 a5 a6
Uma dependência multivalor (DM) é outro tipo de dependência entre dados que
consiste em associações de muitos para muitos entre atributos.
DF
• Id_pessoa → N_telefone
As DF são falsas
• N_telefone → Id_pessoa
Id_pessoa →→ N_telefone
• As DM são uma consequência da 1FN que não permite que um atributo tenha
um conjunto de valores;
⇒ É necessária uma regra para o tratamento destas situações, que possa ser
usada para decompor a relação sem perda de informação.
Exemplo:
A relação R decompõe-se em duas relações na 4FN:
Func_proj Func_dependente
Funcionário Projecto Funcionário Dependente
Pires Alfa Pires Rita
Pires Beta Pires João
Pires Ana
Revendas
Representante Cliente Produto
1 Martins Sá e filhos Louça Chave da relação
2 Martins Sá e filhos Talheres Representante, Cliente, Produto
3 Martins DMI, Lda Louça
4 Martins DMI, Lda Talheres Está na FNBC, mas tem
5 Castro Sá e filhos Cintos redundância
6 Castro Sá e filhos Meias
7 Castro Sá e filhos Lenços A redundância resulta de:
8 Castro YSL Cintos Representante→→Cliente
9 Castro YSL Meias Representante→→Produto
10 Castro YSL Lenços
Clientes_Representante Representação
Representante Cliente Representante Produto
Martins Sá e filhos Martins Louça
Martins DMI, Lda Martins Talheres
Castro Sá e filhos Castro Cintos
Castro YSL Castro Meias
Castro Lenços
Supondo que se acrescentava à relação Revendas a restrição que indica que uma
dada loja só revende certos produtos:
Por exemplo, a loja Sá e filhos não vende talheres nem Meias e a loja YSL não
vende Cintos. Neste caso:
• as instâncias nº 2, 6 e 8 seriam retiradas pois deixariam de existir;
• a decomposição de Revendas em duas relações (4FN) não se alterava;
• a decomposição de Revendas em duas relações (4FN) violaria a propriedade
da junção não aditiva, aparecendo os registos retirados como espúrios;
• a DM Representante→→Produto | Cliente, deixa de ser verdadeira.
Com a introdução de uma restrição que indica que uma dada loja só vende certos
produtos é necessário definir a seguinte DJ[R1, R2, R3] sendo:
R1(Representante, Cliente), R2(Representante, Produto) e R3(Cliente, Produto).
A aplicação da 5FN consiste em encontrar a DJ *[R1, R2, ..., Rp] que permite
decompor uma relação sem perdas.
Note-se que, os casos que necessitam da 5FN são raros e difíceis de detectar, pois
resultam da existência de regras ou condições especiais, que tornam algumas
instâncias inválidas.