Aula 03 - Normalização e Estrutura Relacional 📡
Objetivo
Objetivo: Aprender as regras da Normalização para eliminar redundâncias, garantir a integridade dos dados e criar estruturas de tabelas otimizadas e profissionais.
1. Tipos de Dados e o Conceito de NULL 🧩
Cada coluna em uma tabela deve ter um tipo definido. Isso ajuda o SGBD a economizar espaço e validar entradas.
- Inteiros (
INT,BIGINT): Números sem casas decimais. - Decimais (
DECIMAL,NUMERIC,REAL): Para valores monetários ou medidas precisas. - Texto (
VARCHAR,TEXT,CHAR): Cadeias de caracteres. - Data/Hora (
DATE,TIMESTAMP): Registros temporais. - NULL: Representa a ausência de valor ou valor desconhecido. Não é o mesmo que zero ou string vazia ("").
2. O que é Normalização? ⚖️
É um processo técnico de organizar as colunas e tabelas de um banco de dados para minimizar a redundância (repetição de dados) e evitar anomalias de atualização.
Por que normalizar?
- Economia de espaço em disco.
- Facilidade de manutenção.
- Garantia de que a informação esteja em um só lugar.
3. As Formas Normais (FN) 📏
Existem várias formas normais, mas as três primeiras (1FN, 2FN e 3FN) são as mais essenciais no dia a dia.
1ª Forma Normal (1FN) - Atomicidade
- Cada coluna deve conter apenas um valor (valores atômicos).
- Não pode haver grupos repetidos ou listas separadas por vírgula em uma célula.
- Exemplo:
Telefones: (11) 9999, (11) 8888❌ -> Criar tabela separada para telefones ✅.
2ª Forma Normal (2FN) - Dependência Funcional
- Estar na 1FN.
- Toda coluna que não é chave deve depender da chave primária inteira (relevante para chaves compostas).
3ª Forma Normal (3FN) - Dependência Transitiva
- Estar na 2FN.
- As colunas não-chave não podem depender de outras colunas não-chave.
- Exemplo: Tabela
Pedidoscomid_clienteenome_cliente. O nome depende do ID, não do Pedido. Deve sair dali.
4. Especialização e Generalização 🧬
Conceitos herdados da Orientação a Objetos:
* Generalização: Criar uma entidade "Pai" (ex: Pessoa).
* Especialização: Criar entidades "Filhas" com atributos específicos (ex: Pessoa_Fisica e Pessoa_Juridica).
5. Visualização de Estrutura (Mermaid) 📊
Abaixo, um exemplo de banco normalizado:
erDiagram
ALUNO ||--o{ TELEFONE : "possui"
ALUNO {
int id PK
string nome
date data_nascimento
}
TELEFONE {
int id PK
int aluno_id FK
string numero
}
6. Prática: Corrigindo uma Tabela Ruim 💻
Observe esta estrutura mal feita:
Vendas (id_venda, data, cliente_nome, produto_nome, produto_preco)
$ Problemas identificados:
$ 1. Nome do cliente repetido em cada venda (redundância).
$ 2. Se o preço do produto mudar, o histórico das vendas pode se perder.
$
$ Solução Normalizada:
$ - Tabelas separadas para: Clientes, Produtos e Vendas.
7. Exercícios de Fixação 🧠
- Explique a frase: "A 3ª Forma Normal combate a dependência transitiva".
- Quando é aceitável realizar a Desnormalização de um banco de dados?
- O que é um valor Atômico?
Próxima Aula: Vamos colocar a mão na massa com os comandos de DDL - Criação da Estrutura! 🏗️