--- title: 객체 간 관계 가져오기 description: CSV를 통해 레코드 간 관계를 가져옵니다. --- ## 개요 Twenty는 CSV 가져오기 시 객체 간 관계 가져오기를 지원합니다. 이를 통해 데이터 마이그레이션의 일부로 레코드를 연결할 수 있습니다(예: 사람을 회사에 연결). **현재 가져오기에서 지원됨**: 각 측이 단일 객체 유형을 가리키는 일대다 관계(예: 사람 → 회사). 여러 객체 유형을 가리키는 관계는 아직 가져오기/내보내기를 지원하지 않습니다. ## Twenty에서 관계가 작동하는 방식 ### 일대다 / 다대일 Twenty는 하나의 레코드가 여러 다른 레코드에 연결되는 표준 관계를 지원합니다: * **하나의 회사 → 여러 사람**: 한 회사에는 여러 직원이 있을 수 있지만, 각 사람은 하나의 회사에 속합니다 * **하나의 회사 → 여러 기회**: 한 회사에는 여러 거래가 있을 수 있지만, 각 기회는 하나의 회사에 속합니다 ### 여러 객체 유형을 가리킬 수 있는 관계 일부 관계는 서로 다른 유형의 객체에 연결될 수 있습니다. 이는 두 가지 방식으로 작동합니다: **패턴 1: 서로 다른 객체 유형의 많은 레코드가 각각 하나의 레코드에 연결** 여러 개의 노트, 작업 또는 활동을 한 번에 여러 객체 유형에 각각 연결할 수 있습니다: * **노트**는 동시에 한 사람, 한 회사, 한 기회에 연결될 수 있습니다 * **작업**은 동시에 한 사람, 한 회사, 한 기회에 연결될 수 있습니다 여기서 노트/작업은 "many" 쪽에 있습니다. 각각은 객체 유형당 하나의 레코드에 연결됩니다. **패턴 2: 하나의 레코드가 서로 다른 객체 유형의 많은 레코드로부터 연결을 받는 경우** 프로젝트는 서로 다른 객체 유형의 여러 레코드로부터 연결을 받을 수 있습니다: * **프로젝트**에는 많은 사람이 연결될 수 있고, 많은 회사가 연결될 수 있으며, 많은 노트가 첨부될 수 있습니다 여기서 프로젝트는 "one" 쪽에 있습니다. 서로 다른 객체의 여러 레코드가 모두 동일한 프로젝트에 연결될 수 있습니다. **가져오기/내보내기 제한사항**: 여러 객체 유형을 가리키는 관계(예: 노트 → 사람/회사/기회)는 CSV 가져오기나 내보내기에서 **아직 지원되지 않습니다**. * **가져오기**: 각 측이 단일 객체 유형을 가리키는 일대다 관계만 가져올 수 있습니다 * **내보내기**: 여러 객체 유형을 가리키는 관계의 열은 현재 비워 둡니다 이는 로드맵에 포함되어 있습니다. ### 현재 지원되지 않는 사항 **다대다 관계**는 아직 제공되지 않습니다. 예를 들어, 현재 다음과 같은 관계는 만들 수 없습니다: * 여러 사람이 여러 프로젝트에 연결되는 경우 다대다 관계는 2026년 상반기에 제공될 예정입니다. ## 가져오기 중 레코드 연결 **알림**: 각 측이 단일 객체 유형을 가리키는 일대다 관계만 가져올 수 있습니다(예: 사람 → 회사). 여러 객체 유형을 가리키는 관계(예: 노트 → 사람/회사/기회)는 아직 지원되지 않습니다. ### 1단계: "One"과 "Many" 쪽 식별하기 먼저, 어떤 객체가 관계의 "one" 쪽이고 어떤 객체가 "many" 쪽인지 결정하세요. **예시**: * **회사**는 "one" 쪽입니다(한 회사에는 많은 직원이 있음) * **사람**은 "many" 쪽입니다(각 사람은 하나의 회사에 속함) ### 2단계: "One" 쪽 레코드가 존재하는지 확인 "many" 쪽을 가져오기 전에, "one" 쪽 레코드는 이미 Twenty에 존재해야 합니다. * "one" 쪽 레코드를 먼저 가져오거나 생성하세요(예: 회사) * 해당 고유 식별자를 확인하세요. 이는 다음 중 하나일 수 있습니다: * `id`(Twenty의 UUID) * 고유로 설정된 필드(예: 회사의 `domain`, 또는 이전 시스템의 외부 ID) 존재하지 않는 레코드를 참조하면 가져오기는 실패합니다. ### 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`, 고유로 표시된 모든 필드 | **워크스페이스 구성원에 연결**: 관계가 워크스페이스 구성원(Twenty에 로그인하는 팀)을 가리키는 경우, 이름이 아니라 **이메일 주소**로 참조하세요. 스프레드시트에서 읽기 쉽고 관리가 간편하므로, 회사에는 `domain`, 사람에는 `email` 사용을 권장합니다. **알림**: 소프트 삭제된 레코드(Command Menu → See deleted records에서 확인 가능)도 고유성 기준에 포함됩니다. 삭제된 레코드와 동일한 고유 값을 가진 레코드를 가져오면, 삭제된 레코드가 복원됩니다. 자세한 내용은 [고유성 제약](/l/ko/user-guide/data-migration/capabilities/uniqueness-constraints)을 참조하세요. ## 가져오기 순서 규칙 **항상 "one" 쪽을 먼저 가져오세요!** 1. **회사** 먼저(종속성 없음) 2. **사람** 두 번째(회사에 연결됨) 3. **기회** 세 번째(회사/사람에 연결됨) 4. **사용자 지정 객체**는 종속성에 따라 순서대로 참조하려면 상위 레코드가 먼저 존재해야 합니다.