Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

🌿 ATRIBUTOS COMPOSTOS, MULTIVALORADOS E DERIVADOS

Na modelagem de alto nível, nem todo dado é uma simples "string" ou "número". Existem estruturas que exigem um olhar clínico do Arquiteto de Dados para evitar redundância e falhas de projeto. 🛡️🧩


Objetivo: Diferenciar tipos avançados de atributos e dominar as estratégias de decomposição para garantir a atomicidade dos dados e a performance do SGBD.


📗 PASSO 1: Atributo Composto (Hierarquia)

Ocorre quando um atributo pode ser subdividido em partes menores. No banco físico, ele deve ser decomposto em colunas individuais.

📊 Decomposição do Endereço

erDiagram
    CLIENTE {
        int id_cliente PK
        string logradouro
        string numero
        string bairro
        string cep
    }
  • ⚠️ Alerta: Salvar endereço completo em uma única coluna dificulta filtros por bairro ou CEP.

📗 PASSO 2: Atributo Multivalorado (A Lista)

Ocorre quando uma única tupla possui vários valores para o mesmo atributo (ex: Telefone).

📊 Resolução via Tabela Secundária

erDiagram
    CLIENTE ||--o{ TELEFONE : "possui"
    CLIENTE {
        int id_cliente PK
        string nome
    }
    TELEFONE {
        int id_cliente FK
        string numero
        string tipo
    }
  • 💡Dica: Atributos multivalorados geram uma nova tabela no modelo lógico para respeitar a 1FN (Primeira Forma Normal).

📗 PASSO 3: Atributo Derivado (Cálculo)

É aquele cujo valor não precisa ser armazenado fisicamente, pois pode ser calculado a partir de outros dados.

  • 📍 Exemplo: Idade (derivada da Data de Nascimento).
  • 🚀 Dica de Performance: Use Colunas Geradas (Generated Columns):
ALTER TABLE funcionarios 
ADD COLUMN idade INT GENERATED ALWAYS AS (YEAR(CURDATE()) - YEAR(data_nascimento)) VIRTUAL;

📗 PASSO 4: Resumo de Decomposição

Tipo de AtributoAção do Engenheiro de Dados
CompostoQuebrar em múltiplas colunas na mesma tabela.
MultivaloradoCriar uma tabela secundária relacionada (FK).
DerivadoCriar uma View ou Coluna Gerada (não armazenar).

💡 Regra de Ouro (Codd): Para que seu banco seja verdadeiramente "Relacional", cada coluna deve conter apenas valores atômicos (indivisíveis). 🚀🛡️