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.
-- Exemplo: Esquema conceitual mapeado para SQL CREATE TABLE projetos ( jid VARCHAR(10) PRIMARY KEY, jname VARCHAR(100) NOT NULL );
Draw.io, Lucidchart, MySQL Workbench, pgAdmin, DBeaver ou brModelo.
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. |
-- 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 |
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.
[Projetos] ---[Contém]--- [Tarefas] | JID (PK) TID (PK) | | JNAME TNAME |
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)
-- 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):
-- 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 );
[Departamentos]--1:N--[Funcionários] DID (PK) || FID (PK) DNAME || FNAME || DID (FK)
[Projetos]--1:N--[Tarefas] JID (PK) || TID (PK) JNAME || TNAME || JID (FK)
Diagramas de Classe UML
// Classes, Atributos e Associações
Diagramas de classe UML podem modelar bancos de dados, representando:
- 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:
- 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 para0..*
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.
-- Diagrama UML (ASCII) [Projetos] 1 ---- * [Tarefas] +jid: VARCHAR +tid: VARCHAR +jname: VARCHAR +tname: VARCHAR +jid: VARCHAR
[Departamentos] 1 ---- * [Funcionários] +did: VARCHAR +fid: VARCHAR +dname: VARCHAR +fname: VARCHAR +did: VARCHAR
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. |
-- 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 );
Em Draw.io, crie caixas para Projetos e Tarefas, conecte com uma linha 1:N, adicione atributos (JID, JNAME, TID, TNAME, JID_FK).
Laboratório Guiado: Conversão de Notações
// Peter Chen para Crow’s Foot
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.
-- 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 );
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).
Em Draw.io, crie caixas para Projetos e Tarefas, use linha 1:N com linha dupla para participação obrigatória, adicione atributos e exporte DDL.
Laboratório Guiado: Atividade 2
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?
- Abrir o Draw.io (ou ferramenta semelhante).
- Adicionar duas entidades (
Cliente
ePedido
) como retângulos e inserir seus atributos. - Inserir um losango para o relacionamento
faz
entre as duas entidades. - Conectar cada entidade ao losango com linhas e anotar as cardinalidades
1
eN
nos locais corretos. - Ajustar o layout para que o diagrama fique claro e legível.
- 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?
2. Como a notação Crow’s Foot indica cardinalidade “muitos”?
3. O que representa uma classe em um diagrama UML para banco de dados?
4. Qual ferramenta CASE é colaborativa e online?
5. Qual notação usa linhas duplas para participação obrigatória?
RUN notation_quiz_check; -- Quiz finalizado. Parabéns por explorar as notações!