CE/FK
*
A → B
Três perguntas, em ordem. Cada uma resolve um problema:
A célula telefones da Ana guarda dois valores. Isso fere a 1FN.
telefones
telefone1
telefone2
telefone3
cliente (id_cliente*, nome) telefone_cliente (id_telefone*, id_cliente CE/FK → cliente, numero, tipo)
Agora cada célula tem um valor só, e cabem quantos telefones for preciso.
endereco = "Rua das Flores, 120"
telefones = "A / B"
endereco = "Rua X, 120"
logradouro
numero
Fere a 1FN? Se sim, qual o conserto?
generos = "Ação, Aventura, RPG"
jogo
nome_completo = "Ana Maria Souza"
cliente
ingredientes = "farinha; ovo; açúcar"
bolo
email
forms.gle/M44Awj16aVoNPYqY9
Se a chave primária é uma coluna só, a 2FN já está garantida — não existe "pedaço" de uma coluna.
Tabela item_emprestimo, chave primária = id_emprestimo + id_jogo:
item_emprestimo
id_emprestimo + id_jogo
titulo_jogo
id_jogo
data_retirada
id_emprestimo
quantidade
emprestimo (id_emprestimo*, data_retirada, id_cliente CE/FK → cliente) jogo (id_jogo*, titulo, genero) item_emprestimo (id_emprestimo* CE/FK → emprestimo, id_jogo* CE/FK → jogo, quantidade)
Cada atributo foi para a tabela do seu determinante. Na tabela do meio sobra só o que depende da chave inteira.
Tabela matricula, chave = id_aluno + id_disciplina:
matricula
id_aluno + id_disciplina
(id_aluno*, id_disciplina*, nome_aluno, nome_disciplina, nota, semestre)
forms.gle/AAWZrgdGqWaLyj3EA
id_jogo → id_plataforma → nome_plataforma. O nome vem de carona.
id_jogo → id_plataforma → nome_plataforma
plataforma (id_plataforma*, nome, fabricante) jogo (id_jogo*, titulo, genero, id_plataforma CE/FK → plataforma)
Sobra em jogo só a referência — que é repetição legítima (Aula 08).
JOIN
Casos em que se aceita repetir de propósito:
genero
Pergunte antes de separar:
Se as duas respostas forem "não", deixe como coluna.
Está em 3FN? Se não, o que separar?
jogo (id_jogo*, titulo, id_plataforma, nome_plataforma)
cliente (id_cliente*, nome, cep, cidade)
emprestimo (id_emprestimo*, data_retirada, id_cliente)
forms.gle/rk3L2yjurRqg9DZG7
der.drawio.svg
grupoNN-aulaNN-artefato.<ext>
grupo03-aula09-esquema-3fn.xlsx
grupo03-aula09-der.drawio.svg
CREATE TABLE
O que eu vou conferir grupo por grupo:
Eu passo em cada grupo. Tenham pronto:
Testar em casa: aplique as três perguntas naquela planilha que você analisou na Aula 08. Em que forma normal ela está?
Tarefa opcional: confira se o der.drawio.svg do grupo está idêntico ao esquema normalizado. Qualquer diferença agora vira erro de SQL na Aula 11.
O modelo está pronto no papel. Na próxima aula ele vira um banco de dados de verdade.