A normalização em bancos de dados é um processo essencial para organizar e estruturar os dados de forma eficiente, reduzindo redundâncias e melhorando a integridade e consistência das informações. Ela é dividida em diferentes formas normais, cada uma com critérios específicos. Vamos aprimorar o artigo e adicionar exemplos em SQL.
1 FN - Primeira Forma Normal
A Primeira Forma Normal (1FN) diz respeito à eliminação de atributos multivalorados em uma tabela. A tabela fornecida na questão não está na 1FN devido ao atributo multivalorado "telefone". Vamos reestruturá-la:
`CREATE TABLE cliente (`
`cliente_id INT PRIMARY KEY,`
`nome VARCHAR(50),`
`sobrenome VARCHAR(50),`
`endereco VARCHAR(50)`
`);`
`CREATE TABLE telefone (`
`telefone_id INT PRIMARY KEY,`
`cliente_id INT,`
`numero INT,`
`FOREIGN KEY (cliente_id) REFERENCES cliente(cliente_id)`
`);`
2 FN - Segunda Forma normal
A Segunda Forma Normal (2FN) trata da eliminação de dependências parciais. Considere uma tabela de produtos com categorias:
CREATE TABLE produto (
produto_id INT PRIMARY KEY,
nome_produto VARCHAR(50),
categoria_id INT,
categoria_nome VARCHAR(50),
FOREIGN KEY (categoria_id) REFERENCES
categoria(categoria_id)
);
CREATE TABLE categoria (
categoria_id INT PRIMARY KEY,
nome_categoria VARCHAR(50)
);
Neste exemplo, a tabela produto
está na 1FN, mas não na 2FN devido à dependência parcial entre categoria_id
e categoria_nome
. Vamos corrigir isso:
CREATE TABLE produto (
produto_id INT PRIMARY KEY,
nome_produto VARCHAR(50),
categoria_id INT,
FOREIGN KEY (categoria_id) REFERENCES categoria(categoria_id)
);
CREATE TABLE categoria (
categoria_id INT PRIMARY KEY,
nome_categoria VARCHAR(50)
);
3 FN - Terceira Forma normal
A Terceira Forma Normal (3FN) visa eliminar dependências transitivas. Suponha uma tabela que armazena informações sobre livros e autores:
CREATE TABLE livro (
livro_id INT PRIMARY KEY,
titulo VARCHAR(50),
autor_id INT,
autor_nome VARCHAR(50),
editora VARCHAR(50),
FOREIGN KEY (autor_id) REFERENCES autor(autor_id)
);
CREATE TABLE autor (
autor_id INT PRIMARY KEY,
nome_autor VARCHAR(50),
nacionalidade VARCHAR(50)
);
A tabela livro
não está na 3FN devido à dependência transitiva entre autor_id
, autor_nome
e nacionalidade
. Vamos ajustar:
CREATE TABLE livro (
livro_id INT PRIMARY KEY,
titulo VARCHAR(50),
autor_id INT,
editora VARCHAR(50),
FOREIGN KEY (autor_id) REFERENCES autor(autor_id)
);
CREATE TABLE autor (
autor_id INT PRIMARY KEY,
nome_autor VARCHAR(50),
nacionalidade VARCHAR(50)
);
Essas alterações garantem que a tabela livro
esteja na 3FN, eliminando a dependência transitiva. A normalização é uma prática crucial para projetar bancos de dados eficientes e reduzir inconsistências nos dados.
Top comments (0)