Controle do Modelo
Criador e editor de diagramas ER via pseudo-comandos e código ER
Selecione um dos modelos conceituais abaixo para carregar instantaneamente no canvas e no editor:
| Símbolo | Nome | Regra de Negócio | Exemplo Prático |
|---|---|---|---|
d |
Disjunta | Mutuamente Exclusiva. Uma entidade pertence a no máximo uma sub-classe. | Funcionario → Mensalista OU Horista |
o |
Sobreposta (Overload) | As sub-classes podem se sobrepor. Pode pertencer a múltiplas sub-classes. | Pessoa → Aluno E Professor |
u |
União / Categoria | A super-classe é uma Categoria composta pela união das sub-classes. | Veiculo → Carro e Moto |
• Linha Dupla (Totalidade): Configurada por "total": true no nó de especialização.
• Atributo Definidor: Opcional, via "definingAttribute": "TipoContrato".
"type" de cada atributo:
"key": Chave Primária (Sublinhado sólido visual)."partial_key": Chave Parcial / Discriminador (Sublinhado tracejado para entidade fraca)."simple": Atributo Simples regular."multivalued": Atributo Multivalorado (Elipse Dupla)."derived": Atributo Derivado (Elipse Tracejada)."participants". Para auto-relacionamentos recursivos (ex: Supervisão de Empregados), inclua duas entradas para a mesma entidade com seus respectivos papéis ("role") e cardinalidades:
{
"name": "supervisao",
"type": "recursive",
"participants": [
{ "entity": "Empregado", "role": "É supervisionado", "cardinality": "1" },
{ "entity": "Empregado", "role": "Supervisiona", "cardinality": "N" }
]
}
{
"entities": [
{
"name": "Funcionario",
"type": "strong",
"attributes": [
{ "name": "CPF", "type": "key" },
{ "name": "Nome", "type": "simple" },
{ "name": "Telefones", "type": "multivalued" }
]
},
{
"name": "Mensalista",
"type": "strong",
"attributes": [{ "name": "SalarioMensal", "type": "simple" }]
},
{
"name": "Horista",
"type": "strong",
"attributes": [{ "name": "ValorHora", "type": "simple" }]
}
],
"specializations": [
{
"type": "d",
"superEntity": "Funcionario",
"subEntities": ["Mensalista", "Horista"],
"total": false,
"definingAttribute": "TipoContrato"
}
]
}
Abaixo estão todos os padrões de pseudo-código suportados pelo **DER Builder**. Você pode copiar qualquer trecho com um clique ou carregá-lo diretamente no editor.
| Símbolo / Sintaxe | Significado | Símbolo / Sintaxe | Significado |
|---|---|---|---|
NomeEntidade { ... } |
Entidade Forte (Retângulo) | entidade fraca Nome { ... } |
Entidade Fraca (Retângulo Duplo) |
*Atributo ou #Atributo |
Chave Primária (Sublinhado Sólido) | _Atributo_ |
Chave Parcial (Sublinhado Tracejado) |
~Atributo |
Atributo Derivado (Elipse Tracejada) | ++Atributo ou Atrib[] |
Multivalorado (Elipse Dupla) |
Nome[Sub1, Sub2] / (Sub1, Sub2) |
Atributo Composto | relacionamento fraco nome(...) |
Relacionamento Fraco (Losango Duplo) |
ObrigNome(...) / obrigatorio ... |
Participação Total / Obrigatoriedade (Linha Dupla) | especializacao d|o (A -> B, C) |
Especialização EER (Círculo d/o/u) |
* (Chave Primária), ~ (Derivado), ++ (Multivalorado), e Nome[Sub1, Sub2] ou Nome(Sub1, Sub2) para Atributos Compostos.
Aluno {
*CPF,
Nome[PrimeiroNome, Sobrenome],
~Idade,
++Telefones
}
_Nome_ (undescores nas pontas) para chave parcial (discriminador).
entidade fraca Dependente {
_NomeDependente_,
Parentesco
}
1:1, 1:N, N:N). Use relacionamento fraco para entidades fracas, ou prefixos como Obrig... / obrigatorio ... para Participação Total (Linha Dupla).
pertence (Curso N : 1 Area) ObrigCompoe (Curso 1 : N Modulo) relacionamento fraco compoe (Curso 1 : N Modulo)
{ }.
matricula (Aluno N : N Curso) {
DataMatricula,
Pago
}
[papel] para diferenciar cada ponta.
integra (Area [integrante] N : 1 Area [integrada])
d (Disjunta), o (Sobreposta) ou u (União/Categoria).total = linha dupla (toda superentidade obriga pertencer a uma subclasse); sem modificador ou parcial = linha simples.[NomeAtrib] opcional ao final — exibido ao lado da linha superclasse→círculo.
especializacao d (Funcionario -> Mensalista, Horista) [TipoContrato]
especializacao total o (Pessoa -> Aluno, Professor)
categoria u (Veiculo -> Carro, Moto)
// ou # são comentários. O console aceita comandos incrementais de uma linha.
// Comentário ignorado criar entidade Departamento adicionar atributo Email em Aluno deletar entidade Curso
Area {
*Sigla,
Nome
}
Curso {
*Sigla,
Nome,
Custo,
~Horas
}
Aluno {
*CPF,
Nome,
PrimeiroNome,
Sobrenome,
Sexo,
DataNascimento
}
Professor {
*CPF,
Nome
}
entidade fraca Modulo {
_Sigla_,
Nome
}
entidade fraca Topico {
_Sigla_,
Nome,
Horas
}
pertence (Curso N : 1 Area)
integra (Area [integrante] N : 1 Area [integrada])
ministra (Professor N : N Curso)
matricula (Aluno N : N Curso) {
DataMatricula,
Pago
}
relacionamento fraco compoe_curso ( N : N Curso)
matricula (Aluno N : N Curso) {
DataMatricula,
Pago
}
relacionamento fraco compoe_curso (Curso 1 : N Modulo)
relacionamento fraco compoe_modulo (Modulo 1 : N Topico)