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

🕸️ RELACIONAMENTOS E ASSOCIAÇÕES LÓGICAS

Um banco de dados onde as tabelas não se conversam é apenas um conjunto de planilhas isoladas. O verdadeiro poder do Modelo Relacional reside nos Relacionamentos. 🛡️🧩


Objetivo: Compreender a mecânica das associações lógicas e dominar a representação de graus de relacionamento e atributos de ligação.


📗 PASSO 1: O Conceito de Associação

No MER, um relacionamento representa uma associação entre entidades. Graficamente, no nível lógico, utilizamos o erDiagram:

📊 Modelo de Venda Simples

erDiagram
    CLIENTE ||--o{ COMPRA : "realiza"
    PRODUTO ||--o{ COMPRA : "incluído em"
    
    CLIENTE {
        int id_cliente PK
        string nome
    }
    PRODUTO {
        int id_produto PK
        string nome
    }
    COMPRA {
        int id_cliente FK
        int id_produto FK
        date data_venda
    }

📗 PASSO 2: Graus de Relacionamento

O grau é definido pelo número de entidades na associação:

  1. 🔄 Unário (Auto-relacionamento): A entidade se relaciona consigo mesma.
  2. ↔️ Binário: Duas entidades conectadas (o mais comum).
  3. 🔼 Ternário: Envolve três entidades simultaneamente (ex: MÉDICO prescreve EXAME para PACIENTE).

📗 PASSO 3: Atributos em Relacionamentos

Às vezes, um dado não pertence a nenhuma das entidades isoladas, mas sim à ação entre elas.

  • Exemplo: No registro de Notas, o valor pertence ao cruzamento entre ALUNO e DISCIPLINA.

📊 Relacionamento com Atributo (Nota)

erDiagram
    ALUNO ||--o{ MATRICULA : ""
    DISCIPLINA ||--o{ MATRICULA : ""
    ALUNO {
        int id_aluno PK
        string nome
    }
    DISCIPLINA {
        int id_disciplina PK
        string nome
    }
    MATRICULA {
        int id_aluno FK
        int id_disciplina FK
        decimal nota
    }

📗 PASSO 4: Auto-relacionamento na Prática

📊 Hierarquia de Cargos

erDiagram
    FUNCIONARIO {
        int id_func PK
        string nome
        int fk_gerente FK
    }
    FUNCIONARIO ||--o{ FUNCIONARIO : "gerencia"

💡 Dica do Arquiteto: Relacionamentos ternários aumentam muito a complexidade. Tente sempre as decompor em binários antes de decidir pela ternária. 🚀🛡️