---
title: 객체 간 관계 가져오기
description: CSV를 통해 레코드 간 관계를 가져옵니다.
---

## 개요

Twenty는 CSV 가져오기 시 객체 간 관계 가져오기를 지원합니다. 이를 통해 데이터 마이그레이션의 일부로 레코드를 연결할 수 있습니다(예: 사람을 회사에 연결).

<Note>**현재 가져오기에서 지원됨**: 각 측이 단일 객체 유형을 가리키는 일대다 관계(예: 사람 → 회사). 여러 객체 유형을 가리키는 관계는 아직 가져오기/내보내기를 지원하지 않습니다.</Note>

## Twenty에서 관계가 작동하는 방식

### 일대다 / 다대일

Twenty는 하나의 레코드가 여러 다른 레코드에 연결되는 표준 관계를 지원합니다:

* **하나의 회사 → 여러 사람**: 한 회사에는 여러 직원이 있을 수 있지만, 각 사람은 하나의 회사에 속합니다
* **하나의 회사 → 여러 기회**: 한 회사에는 여러 거래가 있을 수 있지만, 각 기회는 하나의 회사에 속합니다

### 여러 객체 유형을 가리킬 수 있는 관계

일부 관계는 서로 다른 유형의 객체에 연결될 수 있습니다. 이는 두 가지 방식으로 작동합니다:

**패턴 1: 서로 다른 객체 유형의 많은 레코드가 각각 하나의 레코드에 연결**

여러 개의 노트, 작업 또는 활동을 한 번에 여러 객체 유형에 각각 연결할 수 있습니다:

* **노트**는 동시에 한 사람, 한 회사, 한 기회에 연결될 수 있습니다
* **작업**은 동시에 한 사람, 한 회사, 한 기회에 연결될 수 있습니다

여기서 노트/작업은 "many" 쪽에 있습니다. 각각은 객체 유형당 하나의 레코드에 연결됩니다.

<img src="/images/user-guide/fields/many-to-one-morph.png" style={{width:'100%'}} />

**패턴 2: 하나의 레코드가 서로 다른 객체 유형의 많은 레코드로부터 연결을 받는 경우**

프로젝트는 서로 다른 객체 유형의 여러 레코드로부터 연결을 받을 수 있습니다:

* **프로젝트**에는 많은 사람이 연결될 수 있고, 많은 회사가 연결될 수 있으며, 많은 노트가 첨부될 수 있습니다

여기서 프로젝트는 "one" 쪽에 있습니다. 서로 다른 객체의 여러 레코드가 모두 동일한 프로젝트에 연결될 수 있습니다.

<img src="/images/user-guide/fields/one-to-many-morph.png" style={{width:'100%'}} />

<Warning>
  **가져오기/내보내기 제한사항**: 여러 객체 유형을 가리키는 관계(예: 노트 → 사람/회사/기회)는 CSV 가져오기나 내보내기에서 **아직 지원되지 않습니다**.

  * **가져오기**: 각 측이 단일 객체 유형을 가리키는 일대다 관계만 가져올 수 있습니다
  * **내보내기**: 여러 객체 유형을 가리키는 관계의 열은 현재 비워 둡니다

  이는 로드맵에 포함되어 있습니다.
</Warning>

### 현재 지원되지 않는 사항

**다대다 관계**는 아직 제공되지 않습니다. 예를 들어, 현재 다음과 같은 관계는 만들 수 없습니다:

* 여러 사람이 여러 프로젝트에 연결되는 경우

<Note>다대다 관계는 2026년 상반기에 제공될 예정입니다.</Note>

## 가져오기 중 레코드 연결

<Note>**알림**: 각 측이 단일 객체 유형을 가리키는 일대다 관계만 가져올 수 있습니다(예: 사람 → 회사). 여러 객체 유형을 가리키는 관계(예: 노트 → 사람/회사/기회)는 아직 지원되지 않습니다.</Note>

### 1단계: "One"과 "Many" 쪽 식별하기

먼저, 어떤 객체가 관계의 "one" 쪽이고 어떤 객체가 "many" 쪽인지 결정하세요.

**예시**:

* **회사**는 "one" 쪽입니다(한 회사에는 많은 직원이 있음)
* **사람**은 "many" 쪽입니다(각 사람은 하나의 회사에 속함)

### 2단계: "One" 쪽 레코드가 존재하는지 확인

"many" 쪽을 가져오기 전에, "one" 쪽 레코드는 이미 Twenty에 존재해야 합니다.

* "one" 쪽 레코드를 먼저 가져오거나 생성하세요(예: 회사)
* 해당 고유 식별자를 확인하세요. 이는 다음 중 하나일 수 있습니다:
  * `id`(Twenty의 UUID)
  * 고유로 설정된 필드(예: 회사의 `domain`, 또는 이전 시스템의 외부 ID)

<Warning>존재하지 않는 레코드를 참조하면 가져오기는 실패합니다.</Warning>

### 3단계: CSV 파일 준비

"many" 쪽 CSV 파일에 "one" 쪽 레코드를 참조하는 열을 추가하세요.

**예시**: 회사에 연결되는 사람 CSV 파일의 경우:

```
firstName,lastName,email,companyDomain
John,Smith,john@acme.com,https://acme.com
Jane,Doe,jane@widgets.co,https://widgets.co
```

**중요**:

* 값은 회사 레코드의 고유 필드와 정확히 일치해야 합니다
* 도메인의 경우 도메인 라벨이 아니라 **도메인 URL**(예: `https://acme.com`)을 사용하세요
* 관계당 고유 식별자는 오직 하나만 매핑하세요: 이렇게 하면 가져오기가 원활해집니다

### 4단계: 관계 필드가 존재하는지 확인

파일을 업로드하기 전에 객체 간에 관계 필드가 존재하는지 확인하세요.

존재하지 않는 경우:

1. **설정 → 데이터 모델**로 이동
2. 객체를 선택하세요(예: 사람)
3. 대상 객체(예: 회사)를 가리키는 관계 필드를 생성하세요

### 5단계: 업로드하고 관계 매핑하기

1. 가져오기 UI를 통해 CSV 파일을 업로드하세요
2. 필드 매핑 단계에서 관계 열을 찾으세요(예: `companyDomain`)
3. 이를 관계 필드에 매핑하세요(예: 회사)
4. Twenty가 각 레코드를 일치하는 상위에 자동으로 연결합니다

### 관계를 위한 사용 가능한 고유 필드

| 객체                    | 사용 가능한 고유 필드                     |
| --------------------- | -------------------------------- |
| **회사**                | `id`, `domain`, 임의의 사용자 지정 고유 필드 |
| **사람**                | `id`, `email`, 임의의 사용자 지정 고유 필드  |
| **워크스페이스 구성원**        | `id`, `email`(이름 아님)             |
| **기타 표준 및 사용자 지정 객체** | `id`, 고유로 표시된 모든 필드              |

<Note>**워크스페이스 구성원에 연결**: 관계가 워크스페이스 구성원(Twenty에 로그인하는 팀)을 가리키는 경우, 이름이 아니라 **이메일 주소**로 참조하세요.</Note>

<Note>스프레드시트에서 읽기 쉽고 관리가 간편하므로, 회사에는 `domain`, 사람에는 `email` 사용을 권장합니다.</Note>

<Note>**알림**: 소프트 삭제된 레코드(Command Menu → See deleted records에서 확인 가능)도 고유성 기준에 포함됩니다. 삭제된 레코드와 동일한 고유 값을 가진 레코드를 가져오면, 삭제된 레코드가 복원됩니다. 자세한 내용은 [고유성 제약](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)을 참조하세요.</Note>

## 가져오기 순서 규칙

<Warning>
  **항상 "one" 쪽을 먼저 가져오세요!**

  1. **회사** 먼저(종속성 없음)
  2. **사람** 두 번째(회사에 연결됨)
  3. **기회** 세 번째(회사/사람에 연결됨)
  4. **사용자 지정 객체**는 종속성에 따라 순서대로

  참조하려면 상위 레코드가 먼저 존재해야 합니다.
</Warning>
