MySQL: Teoria do projeto e da normalização de bancos de…

Última atualização: 2026-08-26

Um bom projeto de banco de dados é a base do sucesso de um sistema — um projeto inadequado pode levar a problemas intermináveis no futuro.

Esta aula aborda a teoria e a prática do projeto de bancos de dados.

1. O que você vai aprender


2. Processo de design

100%
graph TB
    A[Requirements Analysis] --> B[Conceptual Design ER Diagram]
    B --> C[Logical Design Table Structure]
    C --> D[Physical Design Index/Partition]
    D --> E[Implementation and Deployment]
    E --> F[Operations and Maintenance Optimization]

3. Teoria dos Paradigmas

Paradigma Requisitos Exemplo
1NF Os campos não podem ser divididos ainda mais Um número de telefone não pode ter várias entradas
2NF Eliminação de dependências parciais Os campos que não fazem parte da chave primária são totalmente dependentes da chave primária
3NF Eliminar a transitividade Os campos que não são de chave primária não podem depender de outros campos que também não sejam de chave primária
BCNF Todo fator determinante é uma chave candidata Uma forma mais restrita da 3NF

▶ Exemplo: Projeto em 3NF

SQL
-- Violation of 3NF (Department name depends on dept_id, not directly on employee id)
CREATE TABLE employees_bad (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    dept_id INT,
    dept_name VARCHAR(50)  -- Transitive dependency
);

-- ✅ Comply with 3NF
CREATE TABLE departments (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    dept_id INT,
    FOREIGN KEY (dept_id) REFERENCES departments(id)
);
▶ Experimente

4. Design antiparadigma

Às vezes, em prol do desempenho, quebramos deliberadamente as regras.

Cenário Abordagem antiparadigma Motivo
JOINs frequentes Campos redundantes Menos JOINs
Consultas estatísticas Colunas calculadas Como evitar cálculos em tempo real
Relatórios Relatórios resumidos Agilizar consultas

5. Convenções de nomenclatura

Melhores práticas Recomendações O que evitar
Nome da tabela snake_case, plural singular, camelCase
Nome do campo snake_case camelCase, chinês
Chave primária id userId
Chave Estrangeira table_id customerId
Índice idx_table_col table_col_idx

6. Projeto de diagramas ER

100%
erDiagram
    CUSTOMERS ||--o{ ORDERS : places
    ORDERS ||--|{ ORDER_ITEMS : contains
    PRODUCTS ||--o{ ORDER_ITEMS : includes
    CUSTOMERS {
        int id PK
        string name
        string email
    }
    ORDERS {
        int id PK
        int customer_id FK
        decimal amount
        date order_date
    }
    PRODUCTS {
        int id PK
        string name
        decimal price
    }

❓ Perguntas Frequentes

P: É necessário seguir a 3NF? R: Na maioria dos casos, sim. No entanto, em cenários com muitas leituras e poucas gravações, é aceitável se desviar da forma normal.

P: Quais tipos de dados devem ser usados para os campos? R: Use BIGINT para a chave primária, DECIMAL para valores monetários, TIMESTAMP para datas e horários e VARCHAR para texto.

P: Os nomes das tabelas devem estar no singular ou no plural? R: Recomendamos usar o plural (usuários, pedidos) para indicar “um conjunto de registros”.

P: É necessário seguir as três formas normais? R: Não necessariamente. Em cenários de consultas com alta concorrência, é possível se afastar das formas normais; uma redundância adequada pode reduzir o número de JOINs.

P: Quais ferramentas podem ser usadas para diagramas ER? R: MySQL Workbench (engenharia direta/reversa), draw.io (ferramenta online gratuita) e dbdiagram.io (geração de diagramas ER a partir de código).


📖 Resumo


📝 Exercícios

  1. Problema básico (Dificuldade: ⭐): Elabore um diagrama ER para um sistema de blog.

  2. Problema avançado (Dificuldade ⭐⭐): Normalize uma tabela da 1NF para a 3NF.

  3. Questão desafiadora (Dificuldade: ⭐⭐⭐): Projete um banco de dados de comércio eletrônico que inclua tabelas para usuários, produtos, pedidos e pagamentos.

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%