Atualizado em 7 de fevereiro de 2022
A diferença entre relates (frequentemente chamados de table relates) e relationship classes é uma fonte de muita confusão, especialmente para novos usuários do ArcGIS. Embora soem semelhantes, os termos referem-se a coisas diferentes. Ambos têm benefícios e há razões para usar cada um. Aqui estão as principais coisas a saber.
- Um relate existe em um mapa ou arquivo de camada.
- Uma relationship class é um objeto em um geodatabase.
- Relates podem ser criados e editados com uma licença ArcGIS Pro ou ArcGIS Desktop Basic, Standard ou Advanced.
- Relationship classes podem ser criadas e editadas com uma licença ArcGIS Pro ou ArcGIS Desktop Standard ou Advanced. Elas são somente leitura com uma licença Basic.
Tudo claro agora? Não? Então vamos continuar.
Desconstruindo a Terminologia
Relates são ótimos porque permitem que você selecione feições em uma camada, e então veja facilmente feições relacionadas em uma camada diferente ou registros relacionados em uma tabela não espacial. Relationship classes são ótimas porque possibilitam "comportamento inteligente." Você pode configurar regras para como as classes de feição ou tabelas participantes se comportam quando algo acontece. Por exemplo, com uma relationship class configurada, se uma feição for excluída, seu registro associado na outra classe de feição ou tabela pode ser automaticamente excluído também.
Tanto relates quanto relationship classes dependem da cardinality, que descreve como registros em duas tabelas diferentes estão relacionados entre si — a cardinalidade pode ser um-para-um, um-para-muitos, muitos-para-um ou muitos-para-muitos.
- Um-para-um: Cada feição tem exatamente um registro relacionado na outra tabela.
- Um-para-muitos: Feições em uma tabela podem ter mais de um registro relacionado na outra tabela.
- Muitos-para-um: Múltiplas feições em uma tabela têm um registro relacionado na outra tabela.
- Muitos-para-muitos: Múltiplas feições em uma tabela têm múltiplos registros na outra tabela.
Relates suportam cardinalidades um-para-muitos e muitos-para-um, enquanto relationship classes suportam todas as cardinalidades. Classes de feição e tabelas que participam de um relate ou de uma relationship class devem ter um campo do mesmo tipo de dado (texto, inteiro curto, inteiro longo, object ID, etc.). Esse campo será o "ponto de conexão" (também conhecido como campo chave) entre os dois.
O Exemplo do Relate
O mapa abaixo contém uma camada de estações de bombeiros e uma tabela não espacial que armazena dados sobre o pessoal do corpo de bombeiros da cidade. Um relate foi criado entre a camada e a tabela não espacial, que possuem cardinalidade um-para-muitos (cada estação de bombeiros tem múltiplos membros do pessoal). O relate é baseado em um campo inteiro curto em ambas as tabelas que armazena o número ID da estação de bombeiros. Os campos têm nomes diferentes, mas isso não importa nada.

Graças ao relate, é fácil descobrir quais membros do pessoal estão designados para qualquer estação de bombeiros. Basta usar a ferramenta Identify e clicar em uma estação no mapa. Na janela Identify, o nome da tabela relacionada aparece abaixo do nome da feição da estação. Expandir a tabela mostra os registros associados àquela estação (a estação Washington neste exemplo, que tem seis membros designados).

Suponha que Brian Butler seja transferido para a estação Adams. Seu registro na tabela FirePersonnel é editado para substituir o número da estação Washington (2) pelo número da estação Adams (202). Quando a edição é salva, os dados mostrados na janela Identify refletirão sua nova designação. Washington agora tem apenas cinco membros designados...

...enquanto a lista de pessoal da estação Adams agora inclui Brian.

O Exemplo da Relationship Class
Table relates são super úteis para visualizar rapidamente dados de feições armazenados em tabelas separadas (para fins eficientes de gerenciamento de dados). Relationship classes dão a você a capacidade de fazer mais do que apenas visualizar dados facilmente. Com uma relationship class, você pode definir regras e propriedades que controlam o que acontece quando os dados em qualquer das tabelas são editados. Você também pode garantir que apenas edições válidas sejam feitas.
Usando o exemplo acima, suponha que uma relationship class chamada StationsPersonnel tenha sido criada entre a classe de feição Fire Stations e a tabela Fire Personnel. Suponha também que a cidade exija que todas as estações tenham no mínimo cinco bombeiros designados e no máximo 15 bombeiros designados. Uma regra foi criada na relationship class para impor esse requisito.

Com a transferência de Brian Butler para a estação Adams, Washington fica com cinco bombeiros designados. Jean Fiorini, entretanto, solicitou transferência, e seu pedido foi aprovado. Um técnico GIS responsável pela manutenção dos dados GIS do corpo de bombeiros atualiza o registro dela na tabela pessoal com o novo número da estação. Ela recebe uma mensagem avisando que a edição violou uma regra.
- Aviso: Dependendo da versão do ArcGIS que você está usando e como a relationship class foi configurada, edições que conflitam com uma regra da relationship class podem não ser aceitas.
A base de dados sabe que sem Jean, Washington terá menos de cinco membros designados. Para cumprir a regra da relationship class, o técnico deve primeiro adicionar um bombeiro à estação Washington e depois editar o registro da Jean para refletir sua nova designação.
Uma relationship class tem como objetivo garantir que todas as edições de dados sejam válidas e que o banco GIS da organização reflita com precisão e apoie as necessidades reais do mundo real. Suponha que quem aprovou a transferência da Jean não percebeu que Washington ficaria com apenas quatro bombeiros. A regra da relationship class revelou essa informação crucial, e assumiremos que o técnico GIS comunica o problema para evitar perda de propriedade ou vidas no futuro devido à falta de pessoal suficiente.
Deseja aprender mais sobre relates e relationship classes? Confira estes tópicos de ajuda:
Para treinamento detalhado e prática prática com relates, relationship classes e outras capacidades do geodatabase que garantem integridade dos dados, faça nossa aula Managing Geospatial Data in ArcGIS.