Megadados
Dependências Funcionais e Normalização
Engenharia
Maciel C. Vidal
Aula de hoje
• Dependências funcionais
• Formas normais
2
Dependências Funcionais
3
Dependências funcionais
São relacionamentos do tipo “muitos para um” entre atributos de uma
relação (não confundir com relacionamentos entre relações)
Formalmente: Para dois conjuntos de atributos 𝑋 e 𝑌 de uma relação,
dizemos que “𝑌 é funcionalmente dependente de 𝑋” ou que “𝑋 determina
funcionalmente 𝑌” (e denotamos 𝑋 → 𝑌) se, e somente se, qualquer tupla
em 𝑋 tem precisamente uma tupla equivalente em 𝑌.
Ou seja:
𝑋 → 𝑌 ⇔ duas linhas da tabela que concordam em 𝑋 deverão concordar
em 𝑌
4
Exemplos:
Liste todas as dependências funcionais do schema
FilmesAtores(id_filme, filme, estúdio, data, id_ator, ator, salario)
Considere que um mesmo estúdio jamais lança filmes com mesmo título
na mesma data
Use as abreviações a seguir: Atributo Abreviação
id_filme #F
filme F
estúdio E
data D
id_ator #A
ator A
salario S
5
Solução
As dependências funcionais mais importantes neste problema são:
bizarro!
#𝐹 → 𝐹, 𝐸, 𝐷 , #𝐴 → 𝐴 , #𝐹, #𝐴 → 𝑆 e 𝐹,𝐸,𝐷 → #𝐹
Porém existem várias outras dependências funcionais que podem ser
derivadas destas através da aplicação de algumas regras:
1. Reflexão: 𝐵 ⊂ 𝐴 ⇒ 𝐴 → 𝐵
2. Aumento: 𝐴 → 𝐵 ⇒ 𝐴𝐶 → 𝐵𝐶
3. Transitividade: 𝐴 → 𝐵 ∧ 𝐵 → 𝐶 ⇒ 𝐴 → 𝐶
Exercício: ache algumas dependências funcionais resultantes da
aplicação destas regras
6
Formas normais
7
Material de estudo
Molina, H. C., Ullman, J. D., Widom, J. “Database Systems: The Complete
Book”, cap 3
Silberschatz, A., Korth, H. F., Sudarshan, S. “Sistema de Banco de Dados”,
cap 8
Date, C. J. “Introdução a Sistemas de Bancos de Dados”,
caps. 11 a 13
CUIDADO: Livro do Poderoso: cap. 3
• Existem alguns erros no livro na parte da segunda forma normal!
8
Formas normais
São regras para ajudar a diminuir redundância e
aumentar integridade no projeto de um banco de
dados.
Inventadas por Edgar F. Codd, criador do modelo
relacional, em 1970.
9
Formas normais
Chamamos de normalização o processo de rearranjar
o banco de dados para que obedeça às várias formas
normais. O processo contrário, de regredir o projeto
do banco de dados para formas normais menores,
chama-se denormalização.
10
Objetivo
• Evitar repetições
• Recuperar informações de forma fácil
11
Formas normais
• 1NF: Primeira forma normal (first normal form)
• 2NF: Segunda forma normal
• 3NF: Terceira forma normal
• Outras formas normais:
• BCNF: Forma normal de Boyce-Codd (Boyce-Codd
Normal Form)
• 4NF, 5NF
• São raramente usadas
12
1NF
Definição:
“Uma entidade está na primeira forma normal
quando cada tupla tem apenas um valor por
atributo”
13
Exemplo 1NF
Esta tabela não está na 1NF!
id_usuário nome id_endereço endereço telefone
(PK)
1 Juca 100 Rua Quatá, 300, São Paulo/SP 111-1111,
333-3333
2 Maria 200 Rua Casa do Ator, 537, Ap 42, São 222-2222
Paulo/SP
3 Roberto 300 Av. Bias Fortes 382, Belo 444-4444
Horizonte/MG
Múltiplos valores
Múltiplos valores
por célula!
por célula!
14
Solução?
id_usuário nome id_endereço endereço cidade estado telefone
(PK)
1 Juca 100 Rua Quatá, 300 São Paulo SP 111-1111
1 Juca 100 Rua Quatá, 300 São Paulo SP 333-3333
2 Maria 200 Rua Casa do Ator, São Paulo SP 222-2222
537
3 Roberto 300 Av. Bias Fortes Belo MG 444-4444
382 Horizonte
15
2NF
Definição:
“Uma entidade está na segunda forma normal
quando obedece à 1NF e todos os seus atributos
não-chave dependem funcionalmente da chave
primária inteira”
16
Exemplo 2NF
id_pessoa (PK) id_projeto (PK) nome_pessoa nome_projeto doação
1 33 Mario Jacaré 150
1 44 Mario Sabiá 240
3 33 Ana Jacaré 350
17
Exemplo 2NF
id_pessoa (PK) id_projeto (PK) nome_pessoa nome_projeto doação
1 33 Mario Jacaré 150
1 44 Mario Sabiá 240
3 33 Ana Jacaré 350
Solução: id_pessoa (PK) nome_pessoa
1 Mario
id_pessoa (PK) id_projeto (PK) doação
3 Ana
1 33 150
1 44 240 id_projeto (PK) Nome_projeto
3 33 350 33 Jacaré
44 Sabiá
18
3NF
Definição:
“Uma tabela está na 3FN quando estiver na 2FN e se
todos os atributos que não pertencem à chave
primária não dependerem funcionalmente de outro
atributo que não a chave.”
“Uma tabela está na 3FN quando estiver na 2FN e se
não existem dependências transitivas para a chave
primária.”
19
Exemplo 3NF
Estes atributos pertencem à endereço,
não diretamente à usuário!
id_usuário nome id_endereço endereço cidade estado
(PK)
1 Juca 100 Rua Quatá, 300 São Paulo SP
2 Maria 200 Rua Casa do Ator, 537 São Paulo SP
3 Roberto 300 Av. Bias Fortes 382 Belo Horizonte MG
20
Solução 3NF
id_usuário nome id_endereço
(PK) (FK)
1 Juca 100
2 Maria 200
3 Roberto 300
id_endereço endereço cidade estado
(PK)
100 Rua Quatá, 300 São Paulo SP
200 Rua Casa do Ator, 537 São Paulo SP
300 Av. Bias Fortes 382 Belo Horizonte MG
Acabou?
21
Solução 3NF
id_usuário nome id_endereço
(PK) (FK) Analise do ponto de vista
1 Juca 100 das anomalias
2 Maria 200
3 Roberto 300
id_endereço endereço id_cidade (FK)
(PK)
100 Rua Quatá, 300 55
200 Rua Casa do Ator, 537 55
300 Av. Bias Fortes 382 66
id_cidade cidade estado
(PK)
55 São Paulo SP
66 Belo Horizonte MG
22
Resumo Dados brutos
Garantir 1 valor por célula
1NF
Remover dependências
parciais de chave
2NF
Remover dependências
transitivas
3NF Outras formas
Casos particulares normais
23
[Link]