149 lines
7.3 KiB
Plaintext
149 lines
7.3 KiB
Plaintext
---
|
|
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>
|