Pular para o conteúdo principal

Resolvendo relacionamentos

Entidades raramente existem isoladas. Uma pessoa é empregada por uma organização, possui uma apólice, pertence a um domicílio. Uma empresa possui subsidiárias. Relacionamentos tornam esses vínculos dados governados de primeira classe, em vez de algo inferido no momento da consulta.

Relacionamentos versus atributos

A tela de tipos de relacionamento Tipos de relacionamento, cada um com a cardinalidade e a direção que o resolvedor impõe.

A decisão que mais importa ao modelar: a coisa relacionada é algo que você governa?

A coisa relacionada é…Modele comoPor quê
Governada — é uma entidade que você mantémUm relacionamentoA entidade relacionada é dona dos próprios dados. Copiá-los para este registro garante que as cópias divirjam.
Não governada — você não guarda registro delaUm atributoUm contato de emergência que você nunca governa não deveria obrigá-lo a inventar uma entidade pessoa.
Nunca modele o mesmo vínculo das duas formas

Guardar um vínculo tanto como relacionamento quanto como atributo desnormalizado significa duas cópias de um fato, e elas vão divergir. Escolha uma.

O problema da resolução

Sistemas de origem raramente conhecem os identificadores da plataforma. Eles referenciam o outro lado de um relacionamento pelo que têm — um identificador fiscal, um número de conta, um código de registro:

{
"employee": "E-4471",
"employer_tax_id": "12-3456789"
}

Esse identificador precisa se tornar um vínculo com uma organização governada. Fazê-lo ingenuamente falha em duas direções: o empregador pode ainda não ter sido carregado, e o identificador pode corresponder a mais de um candidato.

A plataforma trata isso com asserções. A afirmação de cada origem é registrada como uma asserção por direito próprio, e um resolvedor transforma asserções em arestas canônicas quando — e apenas quando — puderem ser resolvidas sem ambiguidade.

Uma asserção que ainda não pode ser resolvida não é perdida nem chutada. Ela espera, e é reprocessada conforme mais dados chegam.

Estado da asserçãoSignificado
PendenteA entidade referenciada ainda não foi encontrada
ResolvidaExiste uma aresta canônica
AmbíguaA chave natural correspondeu a mais de um candidato — uma pessoa decide
ConflitanteO destino foi encontrado, mas a aresta não pôde ser criada — na maioria das vezes uma regra de cardinalidade a bloqueou

É por isso que relacionamentos sobrevivem a carregamento fora de ordem: asserções registram o que cada origem disse, independentemente de a plataforma ter podido agir sobre isso ainda.

Vigência

Relacionamentos carregam um período de vigência, então um vínculo que termina é encerrado em vez de excluído. Perguntar quem era o proprietário de um ativo em março passado devolve a resposta certa.

Quando um fato muda — um ativo vendido, um vínculo empregatício encerrado — a janela anterior fecha e uma nova abre. O histórico permanece intacto.

Interação com a consolidação

Quando duas entidades se consolidam, relacionamentos que apontam para o registro absorvido passam a apontar para o sobrevivente, com deduplicação onde ambos os lados já compartilhavam uma contraparte. Desfazer restaura o arranjo original.

A seguir


Última verificação no commit d3c2586b (2026-08-03)