Bem-vindo à documentação oficial do DER Builder. Este documento é a Especificação Técnica e Referência Definitiva da aplicação, cobrindo a teoria dos modelos ER (Entidade-Relacionamento) e EER (ER Estendido), a notação gráfica formal proposta por Peter Chen (1976), a Sintaxe do Editor e o conjunto rigoroso de Regras de Validação implementadas pelo software.
- Visão Geral do Modelo ER / EER
- Notação Oficial de Peter Chen vs. Sintaxe do DER Builder
- Entidades
- Atributos
- Relacionamentos
- Restrições Estruturais (Cardinalidade e Participação)
- Modelo ER Estendido (EER)
- Sintaxe e Convenções do DER Builder
- Regras de Validação Estrutural do Software
- Regras de Modelagem Conceitual (Entidade Associativa vs. Relacionamento)
- Exemplos Práticos e Scripts Completos
- Casos Inválidos e Erros Frequentes
- Tabela de Compatibilidade com a Notação de Peter Chen
- Limitações Conhecidas do DER Builder
O Modelo Entidade-Relacionamento (DER) foi introduzido por Peter Pin-Shan Chen em seu artigo seminal de 1976 ("The Entity-Relationship Model — Toward a Unified View of Data"). Trata-se de uma modelagem de nível conceitual alta, independente de implementação em bancos de dados relacionais ou NoSQL.
- ER Clássico de Chen: Foca nos conceitos primitivos universais: Entidades (fortes e fracas), Atributos (simples, chave, multivalorados, derivados, compostos), Relacionamentos (binários, n-ários, identificadores), Cardinalidade e Participação.
- EER (Extended Entity-Relationship): Expansão desenvolvida na década de 1980 para incorporar abstrações de Orientação a Objetos: Especialização, Generalização, Herança de Atributos/Relacionamentos, Restrições de Disjunção/Completude e Categorias (Uniões).
É fundamental distinguir os símbolos gráficos formais da notação Chen das palavras-chave e prefixos textuais criados pelo DER Builder para permitir a geração de diagramas via código.
| Conceito | Notação Gráfica Oficial de Chen | Sintaxe Textual do DER Builder |
|---|---|---|
| Entidade Forte | Retângulo Simples | Funcionario { ... } |
| Entidade Fraca | Retângulo de Borda Dupla | entidade fraca Dependente { ... } |
| Atributo Simples | Elipse Simples | Nome |
| Atributo Chave | Elipse com texto sublinhado sólido | *CPF ou #CPF |
| Chave Parcial | Elipse com texto sublinhado tracejado | _Nome_dependente_ |
| Multivalorado | Elipse de Borda Dupla | ++Telefones ou Telefones[] |
| Derivado | Elipse de Borda Tracejada | ~Idade |
| Relacionamento Forte | Losango Simples | trabalha (Funcionario 1:N Departamento) |
| Relacionamento Fraco | Losango de Borda Dupla | relacionamento fraco possui (Funcionario 1:N Dependente) |
| Participação Total | Linha Dupla | Checkbox no Inspetor / automático em relacionamentos fracos |
| Papel (Role Name) | Rótulo textual sobre a linha | Professor [supervisor] |
| Especialização | Círculo com d, o ou u |
especializacao d (Pessoa -> Aluno, Professor) |
Uma entidade forte possui existência própria e autônoma no minimundo. É identificada por uma chave primária própria.
- Gráfico: Retângulo Simples.
- Sintaxe:
Aluno { *Matricula, Nome }
Uma entidade fraca não pode ser identificada apenas por seus próprios atributos e sua existência depende de uma entidade forte (entidade identificadora).
- Gráfico: Retângulo de Borda Dupla.
- Sintaxe:
entidade fraca Dependente { _Nome_dependente_, Parentesco }
- Chave Primária Simples: Um único atributo exclusivo (
*CPF). - Chave Primária Composta: Formada pelo conjunto de dois ou mais atributos que, juntos, garantem a unicidade da entidade.
- Sintaxe:
ItemPedido { *NumeroPedido, *CodigoProduto, Quantidade }
- Sintaxe:
Propriedade que não pode ser dividida em partes menores (ex: Nome, Preco). Representado por uma elipse simples.
Atributo que pode ser desmembrado em subatributos componentes.
- Gráfico: Elipse do atributo pai conectada diretamente a elipses filhas dos subatributos.
- Exemplo Multinível:
Endereco→Rua,Numero,CEP,Localizacao(Latitude,Longitude). - Uso no Builder: Ferramenta Conectar ligando o Atributo pai ao Atributo filho.
Pode conter um conjunto de valores para a mesma instância (ex: Telefones, Emails).
- Gráfico: Elipse de Borda Dupla.
- Sintaxe:
++TelefonesouTelefones[].
Atributo cujo valor é calculado ou inferido a partir de outros atributos ou entidades (ex: Idade calculada pela DataNascimento).
- Gráfico: Elipse de Borda Tracejada (
stroke-dasharray: 5 4). - Sintaxe:
~Idade.
Atributos que pertencem diretamente a uma associação entre entidades, e não a nenhuma das entidades isoladamente. Extremamente comuns em relacionamentos N:N.
- Gráfico: Elipse conectada diretamente ao losango do relacionamento.
- Sintaxe:
matricula (Aluno N : N Curso) { DataMatricula, NotaFinal }
Associação entre exatamente duas entidades (ex: Aluno cursa Curso).
Associação de uma entidade com ela mesma. Nesses casos, os Nomes de Papel (Role Names) são fundamentais para explicitar a função de cada participante.
- Gráfico: Duas linhas saindo da mesma entidade para o mesmo losango, com rótulos
[papel]nas conexões. - Sintaxe:
supervisiona (Professor [supervisor] 1 : N Professor [orientando])
Associação simultânea entre 3 ou mais entidades.
- Conceito: Um relacionamento ternário
A-B-Cnão é equivalente a três relacionamentos bináriosA-B,B-CeA-C. Ele representa uma combinação indivisível das 3 instâncias. - Exemplo:
fornece (Fornecedor N : Produto N : Projeto N)
Em um relacionamento N-ário, a cardinalidade atribuída a uma entidade representa o número de instâncias que podem se associar à combinação única das demais entidades.
- Exemplo:
Fornecedor N : Produto N : Projeto 1significa que para cada combinação de (Fornecedor, Produto), existe no máximo 1 Projeto associado.
Conectam uma Entidade Fraca à sua Entidade Forte Identificadora.
- Gráfico: Losango de Borda Dupla.
- Sintaxe:
relacionamento fraco possui (Funcionario 1 : N Dependente)
Especifica a proporção máxima de mapeamento entre instâncias (1:1, 1:N, N:N).
- Participação Parcial (
min = 0): A existência da entidade não depende do relacionamento (Linha Simples). - Participação Total (
min = 1): A existência de toda instância da entidade exige participação no relacionamento (Linha Dupla).
Representação estruturada de limites exatos:
(0,1): Opcional, no máximo um.(1,1): Obrigatório, exatamente um.(0,N): Opcional, vários.(1,N): Obrigatório, pelo menos um.
A participação é avaliada individualmente por ponta:
- Exemplo
FUNCIONARIO ═══ trabalha ─── DEPARTAMENTO:- Lado
FUNCIONARIO: Participação Total (linha dupla) — todo funcionário deve estar alocado a um departamento. - Lado
DEPARTAMENTO: Participação Parcial (linha simples) — pode existir um departamento novo sem funcionários ainda.
- Lado
- Especialização: Processo top-down. Define subclasses a partir de uma superclasse com base em características distintas.
- Generalização: Processo bottom-up. Sintetiza entidades com características comuns em uma superclasse generalizada.
Toda subclasse herda automaticamente todos os atributos e relacionamentos de sua superclasse, além de possuir seus próprios atributos específicos.
- Disjunta (
d): Uma instância da superclasse pode pertencer a no máximo uma subclasse. - Sobreposta (
o): Uma instância da superclasse pode pertencer simultaneamente a múltiplas subclasses.
- Completude Total: Toda instância da superclasse DEVE pertencer a pelo menos uma subclasse.
- Completude Parcial: Uma instância da superclasse pode existir sem pertencer a nenhuma subclasse.
Uma subclasse (categoria) que representa a união de superclasses com tipos totalmente distintos.
- Símbolo: Círculo com a letra
u. - Sintaxe:
categoria u (Proprietario -> Pessoa, Empresa)
*ou#→ Atributo Chave Primária._nome_→ Atributo Chave Parcial.++ou[]→ Atributo Multivalorado.~→ Atributo Derivado.entidade fraca Nome { ... }→ Entidade Fraca.relacionamento fraco Nome (...)→ Relacionamento Identificador.especializacao d/o/u (Super -> Sub1, Sub2)→ Herança EER.[papel]→ Nome de função no relacionamento.
O módulo DERValidator aplica as seguintes regras automáticas:
- Entidade:
- Deve possuir um nome válido.
- Deve possuir pelo menos um atributo identificador (Chave Primária ou Parcial).
- Entidade Fraca:
- Deve estar vinculada a um Relacionamento Identificador (Losango Duplo) ou possuir uma Chave Parcial.
- Relacionamento:
- Deve estar conectado a pelo menos duas entidades.
- Não pode ter o mesmo nome de uma Entidade no mesmo escopo.
- Atributos:
- Atributos não podem possuir cardinalidades.
- Atributos órfãos (sem pai) são sinalizados com alerta.
Uma Entidade Associativa não é um símbolo primitivo extra de Chen, mas uma técnica conceitual para transformar um relacionamento N:N em uma entidade quando esse relacionamento precisa se conectar a outras entidades ou possui um ciclo de vida complexo.
Funcionario {
*CPF,
Nome,
~Idade,
++Telefones
}
entidade fraca Dependente {
_Nome_dependente_,
Parentesco
}
relacionamento fraco possui (Funcionario 1:N Dependente)
especializacao d (Pessoa -> Aluno, Professor)
matricula (Aluno N : N Curso) {
DataMatricula,
NotaFinal
}
- ❌ Conectar duas entidades diretamente com uma linha sem usar losango.
- ❌ Atribuir cardinalidade
1:Na um atributo. - ❌ Criar entidade fraca sem chave parcial nem relacionamento fraco.
- ❌ Usar nomes idênticos para uma entidade e um relacionamento no mesmo projeto.
- Entidade Forte (Retângulo Simples): 100% Suportado
- Entidade Fraca (Retângulo Duplo): 100% Suportado
- Atributo Chave (Sublinhado Sólido): 100% Suportado
- Chave Parcial (Sublinhado Tracejado): 100% Suportado
- Multivalorado (Borda Dupla): 100% Suportado
- Derivado (Borda Tracejada): 100% Suportado
- Atributo Composto (Atributo ↔ Atributo): 100% Suportado
- Atributo de Relacionamento: 100% Suportado
- Relacionamento Identificador (Losango Duplo): 100% Suportado
- Participação Total (Linha Dupla): 100% Suportado
- Role Names (
[papel]): 100% Suportado - Especialização EER (
d,o,u): 100% Suportado - Exportação Acadêmica (PNG / SVG): 100% Suportado (Gera saída em vetor/imagem no padrão acadêmico oficial de Peter Chen: fundo branco, contornos pretos, preenchimento cinza neutro e tipografia serifada Times New Roman em alta resolução 3x).
- Parser Determinístico Inteligente: Suporta comentários (
//e#), especializações multinível, relacionamentos n-ários, papéis em auto-relacionamentos e atributos compostos. - Exportação Acadêmica Formal: Os botões de exportação PNG/SVG geram automaticamente o diagrama na notação visual acadêmica de Peter Chen em preto e branco, pronto para inclusão em monografias, artigos e TCCs.
- Persistência Local e Histórico: Suporta undo/redo global (
Ctrl+Z/Ctrl+Y), salvamento local no navegador vialocalStoragee exportação/importação em formato JSON.
DER Builder — Especificação Técnica de Referência.