DEV Community

Kauê Matos
Kauê Matos

Posted on • Edited on

3

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.

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay