DEV Community

Cover image for Normalização em Banco de Dados: Estruturando Dados com Eficiência e Integridade
Kauê Matos
Kauê Matos

Posted on • Edited on

Normalização em Banco de Dados: Estruturando Dados com Eficiência e Integridade

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)