DEV Community

Kauê Matos
Kauê Matos

Posted on • Edited on

O que é a normalização em um banco de dados ?

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)`
`);`
Enter fullscreen mode Exit fullscreen mode

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)
);
Enter fullscreen mode Exit fullscreen mode

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)
);
Enter fullscreen mode Exit fullscreen mode

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)
);
Enter fullscreen mode Exit fullscreen mode

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)
    );
Enter fullscreen mode Exit fullscreen mode

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)