Banco de Dados I — 2026.2

Aula 4
Modelo Relacional & Normalização

👨‍🏫 Prof. Gustavo Pinto 🏛️ UFPA 📅 09 de abril de 2026 🕣 7h30 – 9h10

Agenda de hoje

O que é o Modelo Relacional?

O Modelo Relacional organiza os dados em tabelas (relações), onde cada linha é uma tupla e cada coluna é um atributo. Proposto por Edgar Codd em 1970.

Relação = Tabela

Conjunto de tuplas com o mesmo esquema

Tupla = Linha

Uma instância/registro da tabela

Atributo = Coluna

Uma propriedade com nome e domínio

Regra 1 — Entidade → Tabela

Cada entidade do MER vira uma tabela. Cada atributo vira uma coluna. O atributo identificador vira a chave primária.

Aluno matrícula Aluno matrícula , nome , email , dt_nascimento

Regra 2 — Relacionamento 1:N

A chave primária do lado "1" é adicionada como chave estrangeira na tabela do lado "N".

Depto 1 lotado N Funcionário Funcionário CPF , nome , cod_depto (FK)

A FK vai para o lado N — cada funcionário pertence a um departamento.

Regras 3 e 4 — Rel. 1:1 e N:M

1:1 — FK em qualquer lado

Coloque a FK no lado com participação total (se houver). Assim evita NULLs.

Ex: Funcionário gerencia Departamento → FK cod_gerente em Departamento

N:M — Tabela associativa

Cria-se uma nova tabela contendo as PKs das duas entidades como FKs. A PK da nova tabela é a combinação das duas FKs.

Ex: Aluno cursa Disciplina → tabela Matrícula(aluno_id, disc_id, nota)

N:M → Tabela associativa matrícula , nome Aluno aluno_id (FK) , disc_id (FK) , nota Matrícula (nova) código , nome , créditos Disciplina

Regras 5 e 6 — Ent. Fraca & Generalização

Entidade Fraca

Vira uma tabela cuja PK = FK da entidade forte + chave parcial.

Dependente(func_cpf (FK), nome, dt_nascimento)

Generalização/Especialização

Três estratégias possíveis:

① Uma tabela por hierarquia — todos os atributos juntos + coluna "tipo"

② Uma tabela por subclasse — cada subclasse com FK para superclasse

③ Tabelas independentes — atributos da superclasse repetidos em cada subclasse

Estratégia ② é a mais comum e recomendada.

Normalização

Normalização é o processo de organizar tabelas para minimizar redundância e evitar anomalias de inserção, atualização e exclusão.

Anomalia de Inserção

Não consigo inserir dados de uma entidade sem dados de outra

Ex: cadastrar departamento sem funcionário

Anomalia de Atualização

Alterar um dado exige atualizar várias linhas

Ex: mudar nome do departamento em todos os funcionários

Anomalia de Exclusão

Excluir uma tupla causa perda de dados não relacionados

Ex: excluir o último funcionário perde dados do departamento

Dependência Funcional

Um atributo B é funcionalmente dependente de A (A → B) se, para cada valor de A, existe exatamente um valor de B.

A normalização usa DFs para decidir como decompor tabelas.

Primeira Forma Normal (1FN)

Uma tabela está em 1FN se todos os atributos contêm apenas valores atômicos (indivisíveis) — sem grupos repetitivos ou atributos multivalorados.

Viola 1FN

CPFNomeTelefones
111Ana9999, 8888
222Bia7777

Telefones tem múltiplos valores numa célula

Em 1FN

CPFTelefone
1119999
1118888
2227777

Tabela separada Telefone(CPF, Telefone)

Segunda Forma Normal (2FN)

Uma tabela está em 2FN se está em 1FN e todo atributo não-chave depende da chave inteira (sem dependências parciais).

Viola 2FN

aluno_iddisc_idnotanome_aluno
1BD18.5Ana
1POO7.0Ana

nome_aluno depende só de aluno_id, não da chave toda

Em 2FN

aluno_iddisc_idnota
1BD18.5
aluno_idnome_aluno
1Ana

Separou: nome_aluno vai para tabela Aluno

Terceira Forma Normal (3FN)

Uma tabela está em 3FN se está em 2FN e nenhum atributo não-chave depende de outro atributo não-chave (sem dependências transitivas).

Viola 3FN

CPFnomecod_deptonome_depto
111AnaD1TI
222BiaD1TI

CPF → cod_depto → nome_depto (transitiva)

Em 3FN

CPFnomecod_depto (FK)
111AnaD1
cod_deptonome_depto
D1TI

Separou: Departamento vira tabela própria

Resumo das Formas Normais

1FN

Valores atômicos
Sem grupos repetitivos

2FN

1FN + sem dependências parciais
(atributo depende da chave inteira)

3FN

2FN + sem dependências transitivas
(não-chave não depende de não-chave)

Regra prática: "cada atributo não-chave deve depender da chave, da chave inteira, e de nada além da chave" — Bill Kent

Exercício

Mapeamento & Normalização

Uma loja tem clientes (CPF, nome, cidade) que fazem pedidos (número, data). Cada pedido contém vários produtos (código, descrição, preço) com uma quantidade. Cada produto pertence a uma categoria (código, nome).

① Mapeie para tabelas

Identifique os relacionamentos (1:N, N:M) e crie as tabelas com PKs e FKs.

② Verifique normalização

Suas tabelas estão em 3FN? Se não, normalize mostrando cada passo.

Semana 14–16/04 — Viagem

Atividade Assíncrona
Modelagem ER

📖 Próxima aula presencial: 23/04 — Avaliação 1