Files
upstream-twenty/packages/twenty-docs/l/pt/user-guide/data-migration/capabilities/import-relations.mdx
upstream-mirror e7da97194a
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00

149 lines
7.2 KiB
Plaintext

---
title: Importar Relações Entre Objetos
description: Importar relações entre registos via CSV.
---
## Visão Geral
O Twenty suporta a importação de relações entre objetos durante a importação por CSV. Isto permite-lhe ligar registos (por exemplo, associar Pessoas a Empresas) como parte da sua migração de dados.
<Note>**Atualmente suportado para importação**: Relações um-para-muitos que apontam para um único tipo de objeto de cada lado (por exemplo, Pessoas → Empresas). Relações que apontam para vários tipos de objeto ainda não são suportadas na importação/exportação.</Note>
## Como funcionam as relações no Twenty
### Um para Muitos / Muitos para Um
O Twenty suporta relações padrão em que um registo se liga a muitos outros:
* **Uma Empresa → Muitas Pessoas**: Uma empresa pode ter vários colaboradores, mas cada pessoa pertence a uma empresa
* **Uma Empresa → Muitas Oportunidades**: Uma empresa pode ter vários negócios, mas cada oportunidade pertence a uma empresa
### Relações que podem apontar para vários tipos de objeto
Algumas relações podem ligar-se a diferentes tipos de objetos. Isto funciona de duas formas:
**Padrão 1: Muitos registos a ligar-se, cada um, a um registo de diferentes tipos de objeto**
Várias Notas ou Tarefas podem ser anexadas a vários tipos de objeto de uma só vez:
* **Notas** podem ser ligadas a uma Pessoa, uma Empresa e uma Oportunidade em simultâneo
* **Tarefas** podem ser ligadas a uma Pessoa, uma Empresa e uma Oportunidade em simultâneo
Aqui, as Notas/Tarefas estão do lado "muitos". Cada uma liga-se a um registo por tipo de objeto.
<img src="/images/user-guide/fields/many-to-one-morph.png" style={{width:'100%'}} />
**Padrão 2: Um registo a receber ligações de muitos registos de diferentes tipos de objeto**
Um Projeto pode receber ligações de vários registos de diferentes tipos de objeto:
* **Um Projeto** pode ter muitas Pessoas ligadas a ele, muitas Empresas ligadas a ele e muitas Notas anexadas a ele
Aqui, o Projeto está do lado "um". Vários registos de diferentes objetos podem ligar-se todos ao mesmo Projeto.
<img src="/images/user-guide/fields/one-to-many-morph.png" style={{width:'100%'}} />
<Warning>
**Limitação de Importação/Exportação**: Relações que apontam para vários tipos de objeto (como Notas → Pessoas/Empresas/Oportunidades) **ainda não são suportadas** na importação ou exportação por CSV.
* **Importação**: Apenas podem ser importadas relações um-para-muitos que apontem para um único tipo de objeto de cada lado
* **Exportação**: As colunas para relações que apontam para vários tipos de objeto são, atualmente, deixadas em branco
Isto está no nosso roadmap.
</Warning>
### O que não é suportado hoje
**Relações muitos-para-muitos** ainda não estão disponíveis. Por exemplo, atualmente não pode criar uma relação em que:
* Muitas Pessoas estão ligadas a muitos Projetos
<Note>Relações muitos-para-muitos estão planeadas para o 2.º semestre de 2026.</Note>
## Ligar registos durante a importação
<Note>**Lembrete**: Só podem ser importadas relações um-para-muitos que apontem para um único tipo de objeto (por exemplo, Pessoas → Empresas). Relações que apontem para vários tipos de objeto (por exemplo, Notas → Pessoas/Empresas/Oportunidades) ainda não são suportadas.</Note>
### Passo 1: Identificar os lados "Um" e "Muitos"
Primeiro, determine qual o objeto que está do lado "um" e qual está do lado "muitos" da relação.
**Exemplo**:
* **Empresa** é o lado "um" (uma empresa tem muitos colaboradores)
* **Pessoas** é o lado "muitos" (cada pessoa pertence a uma empresa)
### Passo 2: Garanta que existem os registos do lado "Um"
Antes de importar o lado "muitos", os registos do lado "um" já devem existir no Twenty.
* Importe ou crie primeiro os registos do lado "um" (por exemplo, Empresas)
* Valide o seu identificador único. Isto pode ser:
* O `id` (UUID do Twenty)
* Um campo definido como único (por exemplo, `domain` para Empresas, ou um ID externo do seu sistema anterior)
<Warning>A importação falhará se for feita referência a um registo que não existe.</Warning>
### Passo 3: Prepare o seu ficheiro CSV
Adicione uma coluna no seu ficheiro CSV do lado "muitos" que referencia o registo do lado "um".
**Exemplo**: Para um ficheiro CSV de Pessoas ligado a Empresas:
```
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```
**Importante**:
* O valor deve **corresponder exatamente** ao campo único no registo da Empresa
* Para domínios, use o **URL de domínio** (por exemplo, `https://acme.com`), não o rótulo do domínio
* Mapeie apenas **um** identificador único por relação: isto leva a uma importação mais fluida
### Passo 4: Verifique se o campo de relação existe
Antes de carregar o seu ficheiro, garanta que o campo de relação existe entre os seus objetos.
Se não existir:
1. Vá a **Definições → Modelo de Dados**
2. Selecione o seu objeto (por exemplo, Pessoas)
3. Crie um campo de relação que aponte para o objeto de destino (por exemplo, Empresa)
### Passo 5: Carregue e mapeie a relação
1. Carregue o seu ficheiro CSV através da interface de importação
2. No passo de mapeamento de campos, encontre a sua coluna de relação (por exemplo, `companyDomain`)
3. Mapeie-a para o campo de relação (por exemplo, Empresa)
4. O Twenty ligará automaticamente cada registo ao pai correspondente
### Campos únicos disponíveis para relações
| Objeto | Campos únicos disponíveis |
| ------------------------------------------ | -------------------------------------------------- |
| **Empresas** | `id`, `domain`, qualquer campo único personalizado |
| **Pessoas** | `id`, `email`, qualquer campo único personalizado |
| **Membros do Espaço de Trabalho** | `id`, `email` (não o nome) |
| **Outros objetos padrão e personalizados** | `id`, qualquer campo marcado como único |
<Note>**Ligação a Membros do Espaço de Trabalho**: Quando a relação aponta para Membros do Espaço de Trabalho (a sua equipa que inicia sessão no Twenty), refira-os pelo seu **endereço de email**, não pelo nome.</Note>
<Note>Recomendamos usar `domain` para Empresas e `email` para Pessoas, pois são legíveis para humanos e fáceis de manter em folhas de cálculo.</Note>
<Note>**Lembrete**: Registos suavemente eliminados (visíveis em Menu de Comandos → Ver registos eliminados) contam para os critérios de unicidade. Se importar um registo com o mesmo valor único que um registo eliminado, o registo eliminado será restaurado. Veja [Restrições de unicidade](/l/pt/user-guide/data-migration/capabilities/uniqueness-constraints) para mais detalhes.</Note>
## Regra da Ordem de Importação
<Warning>
**Importe sempre primeiro o lado "um"!**
1. **Empresas** primeiro (sem dependências)
2. **Pessoas** em segundo (ligadas a Empresas)
3. **Oportunidades** em terceiro (ligadas a Empresas/Pessoas)
4. **Objetos personalizados** seguindo as suas dependências
O registo pai deve existir antes de o poder referenciar.
</Warning>