Notações de Modelagem: A Arte de Projetar Dados

// ER, UML e Ferramentas CASE

A modelagem conceitual define o esquema do nível conceitual (ANSI/SPARC), representando dados de forma abstrata antes do mapeamento para o modelo relacional (C.J. Date).

Notações como Peter Chen, Crow’s Foot e UML ajudam a visualizar entidades, relacionamentos e atributos, enquanto ferramentas CASE facilitam a criação e conversão para SQL.

db_design@postgres:~#
-- Exemplo: Esquema conceitual mapeado para SQL
CREATE TABLE projetos (
  jid VARCHAR(10) PRIMARY KEY,
  jname VARCHAR(100) NOT NULL
);
      
Atividade Prática: Identifique uma ferramenta CASE que suporta diagramas ER.

Notação de Peter Chen

// Caixas, Losangos e Círculos

A notação de Peter Chen é altamente conceitual, usando:

O que é o Modelo Entidade‑Relacionamento (ER)?

O modelo ER, proposto por Peter Chen em 1976, é uma técnica de modelagem conceitual de dados que permite representar graficamente a estrutura de um banco de dados antes de implementá‑lo. Ele separa:

  • Entidades (objetos do mundo real)
  • Relacionamentos (conexões entre entidades)
  • Atributos (propriedades de entidades ou relacionamentos)

Símbolos básicos em um diagrama ER

Símbolo Notação típica Uso
Entidade Retângulo Representa uma “tabela” ou conjunto de objetos semelhantes.
Relacionamento Losango ou linha Conecta entidades, descrevendo como elas se associam.
Atributo Elipse Propriedade de uma entidade ou relacionamento.
Cardinalidade Linha simples / Pé‑de‑galinha Indica “1” (linha simples) ou “N” (pé‑de‑galinha) para número de ocorrências.
Participação Barra (obrigatório) / Círculo (opcional) Define se a participação no relacionamento é total ou parcial.
Project Task 1 N
db_design@diagram:~#
-- Diagrama Peter Chen (ASCII)
[Projetos] ---[Atribuição]--- [Funcionários]
  | JID (PK)                 FID (PK) |
  | JNAME                    FNAME   |
      
-- Diagrama Peter Chen (ASCII)
[Projetos] ---[Atribuição]--- [Funcionários]
  | JID (PK)                 FID (PK) |
  | JNAME                    FNAME   |
  
Projetos JID (PK) JNAME Funcionários FID (PK) FNAME Atribuição

Descrição do Diagrama

Este é um diagrama no estilo Peter Chen que mostra duas entidades e o relacionamento entre elas:

  • Entidade Projetos
    • JID (PK): Chave primária, identificador único do projeto.
    • JNAME: Nome do projeto.
  • Entidade Funcionários
    • FID (PK): Chave primária, identificador único do funcionário.
    • FNAME: Nome do funcionário.
  • Relacionamento Atribuição: Conecta projetos e funcionários, indicando em quais projetos cada funcionário está atribuído.

Símbolos Utilizados

  • Colchetes [ ]: Representam entidades.
  • ---[Nome]---: Representa um relacionamento entre as entidades.
  • (PK): Indica o atributo chave primária de cada entidade.
Atividade Prática: Desenhe (em texto) um diagrama Peter Chen para Projetos e Tarefas.

Notação Crow’s Foot

// Compacta e Industrial

Notação Crow’s Foot

Na indústria, usamos símbolos visuais para indicar cardinalidade e participação:

  • (Linha com círculo): Opcional (0)
  • ( Linha dupla): Obrigatória (1)
  • (Pé de galinha): Muitos (N)
db_design@diagram:~#
-- Diagrama Crow’s Foot (ASCII)
[Projetos]--1:N--[Tarefas]
  JID (PK)   ||    TID (PK)
  JNAME      ||    TNAME
             ||    JID (FK)
      

Exemplo Prático: Gestão de Projetos

Considere o sistema da Aula 4 (Projetos e Tarefas):

db_design@diagram:~#
-- Diagrama Crow’s Foot (ASCII)
[Projetos]--1:N--[Tarefas]
  JID (PK)   ||    TID (PK)
  JNAME      ||    TNAME
             ||    JID (FK)
-- DDL correspondente
CREATE TABLE projetos (
  jid VARCHAR(10) PRIMARY KEY,
  jname VARCHAR(100)
);
CREATE TABLE tarefas (
  tid VARCHAR(10) PRIMARY KEY,
  tname VARCHAR(100),
  jid VARCHAR(10) REFERENCES projetos NOT NULL
);
      
Atividade Prática: Desenhe (em texto) um diagrama Crow’s Foot para Funcionários e Departamentos, indicando cardinalidade e participação.
Atividade Prática: Converta o diagrama Peter Chen do exercício anterior para Crow’s Foot (em texto).

Diagramas de Classe UML

// Classes, Atributos e Associações

Diagramas de classe UML podem modelar bancos de dados, representando:

+ Project – id: Int – name: String + Task – id: Int – desc: String – projectId: Int 1 * project
  • Classes: Entidades (ex.: Projetos).
  • Atributos: Propriedades com tipos (ex.: JNAME: VARCHAR).
  • Associações: Relacionamentos com cardinalidade (ex.: 1..*).

Diagrama de Classes UML

O diagrama de classes UML representa estáticos do sistema:

Projetos JID: INT {PK} JNAME: VARCHAR 1 0..* Funcionários FID: INT {PK} FNAME: VARCHAR
  • Classes: Representam entidades do domínio (ex.: Projetos).
  • Atributos: Propriedades com seus tipos e estereótipos (ex.: JNAME: VARCHAR).
  • Associações: Ligam classes, com multiplicidades (ex.: 1 em Projetos para 0..* em Funcionários).

Multiplicidade UML: 0..*

A notação 0..* significa que, para cada instância da classe à esquerda, existem:

  • 0 – participação opcional (pode não existir nenhuma instância relacionada);
  • * – um número ilimitado de instâncias relacionadas.

Exemplo: Projeto (0..*) Funcionário indica que um projeto pode ter nenhum ou vários funcionários associados.

db_design@diagram:~#
-- Diagrama UML (ASCII)
[Projetos] 1 ---- * [Tarefas]
+jid: VARCHAR       +tid: VARCHAR
+jname: VARCHAR     +tname: VARCHAR
                    +jid: VARCHAR
      
Atividade Prática: Crie um diagrama UML (em texto) para Funcionários e Departamentos.

Ferramentas CASE para Modelagem

// Online, Desktop e Nacionais

Ferramentas CASE

Tipo Ferramentas Características
Online/Colaborativas Draw.io, Lucidchart Colaboração em tempo real, exportação para SQL.
Desktop/Integradas MySQL Workbench, pgAdmin, DBeaver Integração com SGBDs, geração de DDL.
Nacionais brModelo Focado em ER, interface simples.
db_design@postgres:~#
-- DDL gerado por ferramenta CASE
CREATE TABLE funcionarios (
  fid VARCHAR(10) PRIMARY KEY,
  fname VARCHAR(100) NOT NULL,
  did VARCHAR(10) REFERENCES departamentos NOT NULL
);
      
Atividade Prática: Use Draw.io para criar um diagrama ER simples (Projetos-Tarefas).

Laboratório Guiado: Conversão de Notações

// Peter Chen para Crow’s Foot

Laboratório Guiado:
Converta o diagrama ER da Aula 4 (Projetos, Tarefas, Equipes, Funcionários) de Peter Chen para Crow’s Foot usando uma ferramenta CASE (ex.: Draw.io ou MySQL Workbench). Inclua:
1. Entidades e atributos.
2. Relacionamentos com cardinalidade e participação.
3. Gere o DDL correspondente.
db_design@diagram:~#
-- Peter Chen (Aula 4)
[Projetos] ---[Contém]--- [Tarefas]
  JID (PK)               TID (PK)
  JNAME                 TNAME
-- Crow’s Foot
[Projetos]--1:N--[Tarefas]
  JID (PK)   ||    TID (PK)
  JNAME      ||    TNAME
             ||    JID (FK)
-- DDL Gerado
CREATE TABLE projetos (
  jid VARCHAR(10) PRIMARY KEY,
  jname VARCHAR(100)
);
CREATE TABLE tarefas (
  tid VARCHAR(10) PRIMARY KEY,
  tname VARCHAR(100),
  jid VARCHAR(10) REFERENCES projetos NOT NULL
);
      
Resposta Modelo:
Use Draw.io para desenhar Projetos e Tarefas
em Crow’s Foot:
- Caixas para entidades.
- Linha 1:N com linha dupla (obrigatória).
- Exportar DDL: projetos (JID, JNAME),
  tarefas (TID, TNAME, JID_FK).
      

Laboratório Guiado: Atividade 2

Cliente ClienteID (PK) Nome Pedido PedidoID (PK) Data faz 1 N

Explicação do Diagrama ER

Este diagrama mostra duas entidades e o relacionamento entre elas:

  • Cliente:
    • ClienteID (PK) – chave primária, identifica unicamente cada cliente.
    • Nome – nome do cliente.
  • Pedido:
    • PedidoID (PK) – chave primária, identifica unicamente cada pedido.
    • Data – data em que o pedido foi realizado.
  • Relacionamento faz (losango):
    • Conecta as entidades Cliente e Pedido.
    • Indica que um cliente “faz” um ou vários pedidos.
  • Cardinalidade:
    • 1 junto a Cliente – cada pedido é feito por exatamente um cliente.
    • N junto a Pedido – um cliente pode fazer muitos pedidos.

O que fazer?

  1. Abrir o Draw.io (ou ferramenta semelhante).
  2. Adicionar duas entidades (Cliente e Pedido) como retângulos e inserir seus atributos.
  3. Inserir um losango para o relacionamento faz entre as duas entidades.
  4. Conectar cada entidade ao losango com linhas e anotar as cardinalidades 1 e N nos locais corretos.
  5. Ajustar o layout para que o diagrama fique claro e legível.
  6. Salvar e compartilhar o diagrama finalizado.

Quiz Interativo

// Teste seus conhecimentos sobre notações

Teste de Conhecimento

Responda às perguntas para consolidar o aprendizado sobre notações de modelagem.

1. Qual elemento da notação Peter Chen representa relacionamentos?

a) Caixas
b) Losangos
c) Círculos
d) Linhas duplas
Resposta Correta: b) Losangos. Na notação Peter Chen, relacionamentos são representados por losangos.

2. Como a notação Crow’s Foot indica cardinalidade “muitos”?

a) Círculo
b) Linha dupla
c) Pé de galinha
d) Losango
Resposta Correta: c) Pé de galinha. O símbolo “pé de galinha” indica cardinalidade “muitos” (N).

3. O que representa uma classe em um diagrama UML para banco de dados?

a) Relacionamento
b) Atributo
c) Entidade
d) Chave estrangeira
Resposta Correta: c) Entidade. Classes em UML representam entidades, como tabelas no modelo relacional.

4. Qual ferramenta CASE é colaborativa e online?

a) MySQL Workbench
b) Draw.io
c) pgAdmin
d) DBeaver
Resposta Correta: b) Draw.io. Draw.io é uma ferramenta online e colaborativa para modelagem.

5. Qual notação usa linhas duplas para participação obrigatória?

a) Peter Chen
b) Crow’s Foot
c) UML
d) Nenhuma
Resposta Correta: b) Crow’s Foot. Linhas duplas indicam participação obrigatória na notação Crow’s Foot.
db_quiz_results:~#
RUN notation_quiz_check;
-- Quiz finalizado. Parabéns por explorar as notações!