Atualizado em 7 de fevereiro de 2022
Parece que sempre houve confusão em torno dos termos "relate" e "classe de relacionamento." Neste post, tentaremos esclarecer isso. As capturas de tela do exemplo são do ArcMap, mas os conceitos também se aplicam ao ArcGIS Pro.
O Básico
- Um relate (também chamado de relate de tabela) é uma propriedade de uma camada no ArcGIS Pro ou ArcMap. Você cria um relate de tabela para que possa consultar e selecionar feições em uma camada e ver todas as feições relacionadas em outra camada ou tabela. Um relate de tabela existe apenas em um mapa ou arquivo de camada (.lyr).

- Uma classe de relacionamento é um objeto em um geodatabase que armazena informações sobre um relacionamento entre duas classes de feição, entre uma classe de feição e uma tabela não espacial, ou entre duas tabelas não espaciais. Ambos os participantes em uma classe de relacionamento devem estar armazenados no mesmo geodatabase.
- A cardinalidade controla como relates e classes de relacionamento são configurados. Cardinalidade não é uma medida do fervor de um fã do time de beisebol St. Louis, é uma descrição de como registros em duas tabelas diferentes estão relacionados entre si. Cardinalidade pode ser um-para-um, um-para-muitos, muitos-para-um ou muitos-para-muitos.
- Relates de tabela são criados entre tabelas que têm cardinalidade um-para-muitos ou muitos-para-um. Classes de relacionamento suportam todas as cardinalidades.
- Quando você cria um relate de tabela ou uma classe de relacionamento, você especifica o campo em cada tabela no qual o relacionamento será baseado. Os campos devem ser do mesmo tipo de dado (por exemplo, texto, inteiro curto, inteiro longo, ID do objeto, etc.).
- Relates podem ser criados e editados com licença Básica, Padrão ou Avançada.
- Classes de relacionamento podem ser criadas e editadas com licença Padrão ou Avançada. Elas são somente leitura com licença Básica.
Tudo claro agora? Não? OK, vamos nos aprofundar mais.
O Exemplo

No Índice do mapa acima, você vê uma camada das estações de bombeiros da cidade e uma tabela não espacial que armazena dados sobre o pessoal do departamento de bombeiros da cidade. Um relate de tabela foi criado entre a camada e a tabela não espacial com base em um campo inteiro curto em cada tabela que armazena o número ID da estação de bombeiros.
O que acontece quando uma estação é selecionada no mapa?
Abaixo, você vê a tabela de atributos da camada das estações de bombeiros e a tabela do pessoal dos bombeiros. A opção para mostrar apenas feições selecionadas está sendo usada para ambas as tabelas. Observe que enquanto apenas um registro da estação de bombeiros está selecionado (a estação Washington), seis registros na tabela do pessoal dos bombeiros estão selecionados.

Isto indica que a camada Estações de Bombeiros tem cardinalidade um-para-muitos com a tabela do pessoal dos bombeiros. Para cada estação, múltiplos bombeiros estão associados. Neste caso, seis bombeiros estão designados para a estação Washington. Como as tabelas estão relacionadas, quando você seleciona uma estação pode facilmente descobrir quem trabalha nela. Relates de tabela são bidirecionais, o que significa que você também pode selecionar um registro na tabela do pessoal dos bombeiros e acessar o nome da estação à qual o bombeiro está designado.
Você nem precisa selecionar uma feição ou abrir as tabelas; pode visualizar rapidamente as informações usando a ferramenta Identificar. O nome da tabela relacionada aparece abaixo do nome da feição no lado esquerdo da janela Identificar. Expandir a tabela relacionada revela os registros relacionados. Clicar em um registro relacionado exibe os dados armazenados na tabela relacionada.

Suponha que Brian Butler esteja sendo transferido para a estação Adams. Você vai editar a tabela FirePersonnel para refletir isso. Aqui estão os passos para realizar isso usando nosso exemplo.
- Inicie uma sessão de edição.
- Na tabela Fire Personnel, selecione o registro de Brian Butler.
- No campo Number_, altere o valor para 1714 (o número ID da estação Adams).
- Feche a tabela e salve suas edições.
- Clique na estação Adams com a ferramenta Identificar.
- Brian Butler agora aparece na lista do pessoal associado à estação Adams.

- Clique na estação Washington com a ferramenta Identificar.
- O registro de Brian Butler não aparece mais.

Por Que Usar uma Classe de Relacionamento?
Relates de tabela são úteis para acessar e visualizar rapidamente informações sobre o mundo real que estão realmente armazenadas em duas tabelas diferentes. No entanto, classes de relacionamento oferecem capacidades mais poderosas.
Além de selecionar registros em uma tabela e ver registros relacionados na outra, com uma classe de relacionamento você pode definir regras e propriedades que controlam o que acontece quando dados em qualquer das tabelas são editados, além de garantir que apenas edições válidas sejam feitas. Você pode configurar uma classe de relacionamento para que editar um registro em uma tabela atualize automaticamente os registros relacionados na outra tabela.
Usando o exemplo acima, suponha que uma classe de relacionamento seja criada entre a camada Estações de Bombeiros e a tabela do pessoal dos bombeiros. A cidade tem um requisito que todas as estações tenham no mínimo cinco bombeiros e no máximo 15 bombeiros. Uma regra foi criada para a classe de relacionamento que reflete esse requisito.
No final do exemplo do relate de tabela, a estação Washington tinha cinco bombeiros designados. Agora, com a classe de relacionamento implementada, se um funcionário tentar atribuir um número diferente da estação para um dos bombeiros da estação Washington, aparecerá uma mensagem de erro e ele entenderá que existe uma regra exigindo que todas as estações tenham pelo menos cinco bombeiros designados. Antes de editar o número da estação para um bombeiro existente, ele terá que designar um novo bombeiro para a estação Washington. Depois disso feito, poderá alterar o número da estação para o bombeiro existente refletindo a transferência.
A classe de relacionamento garante que as edições dos dados sejam válidas e apoia o objetivo do departamento de bombeiros para que as designações do pessoal estejam em conformidade com o requisito da cidade.
Lembre-se
- Relates existem apenas em um mapa ou arquivo .lyr.
- Classes de relacionamento existem como objetos discretos em um geodatabase. Se uma das tabelas participantes for excluída do geodatabase, a classe de relacionamento também será excluída.
- Tanto relates quanto classes permitem aos usuários acessar e visualizar informações para feições relacionadas em qualquer das tabelas.
- Classes são frequentemente usadas para garantir integridade dos dados. Elas ajudam a tornar seu geodatabase inteligente.
Muito mais poderia ser dito sobre relates e classes de relacionamento, mas no interesse da simplicidade vamos encerrar o post agora. Esperamos ter dissipado parte da confusão. Para mais informações sobre este tópico, confira este tópico ajuda.