snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
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

This commit is contained in:
upstream-mirror
2026-09-17 23:28:13 +05:00
commit e7da97194a
32688 changed files with 4208681 additions and 0 deletions

View File

@@ -0,0 +1,122 @@
---
title: 필드
description: 필드의 역할을 이해하고 관리 방법을 알아보세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 필드 정보
필드는 스프레드시트의 열과 같습니다. 텍스트, 숫자 또는 날짜와 같은 다양한 유형의 데이터를 저장합니다. 필드는 기본 제공 표준 필드 또는 사용자 정의 필드(사용자가 생성한 필드)일 수 있습니다.
### 표준 필드
표준 필드는 일반적인 비즈니스 요구를 처리할 수 있도록 Twenty에 기본 제공됩니다.
예를 들어, `이름` 및 `성`은 `사람` 객체의 표준 필드입니다. 이는 개인 이름에 대한 텍스트 데이터를 저장합니다.
표준 필드를 삭제할 수는 없지만 필요하지 않을 경우 비활성화할 수 있습니다.
또한 표준 `SELECT` 유형 필드의 옵션을 사용자 지정할 수 있습니다. 예를 들어 기회(Opportunities)에서 `Stage` 옵션을 설정할 수 있습니다.
<img src="/images/user-guide/fields/standard-fields.png" style={{width:'100%'}} />
### 사용자 정의 필드
사용자 정의 필드는 모든 객체에 추가할 수 있습니다. 텍스트, 숫자, 날짜, 드롭다운 선택 항목 등을 저장할 수 있습니다. 비즈니스에 특화된 정보를 추적하기 위해 사용자 정의 필드를 사용하세요.
예를 들어, SpaceX의 경우 `로켓 활성 상태`가 사용자 정의 필드가 될 수 있으며, 이는 로켓이 작동 중인지 여부를 나타냅니다.
<img src="/images/user-guide/fields/custom-fields.png" style={{width:'100%'}} />
## 필드 유형
Twenty는 다양한 필드 유형을 지원합니다:
| 유형 | 설명 | 예시 |
| ------- | ---------------------------------- | -------------- |
| 주소 | 거리, 도시, 주/도, 국가, 우편번호가 포함된 구조화된 주소 | 사무실 주소 |
| 배열 | 텍스트 값 목록 | 태그 |
| 부울 | 참/거짓 체크박스 | 활성 여부 |
| 통화 | 통화 코드가 포함된 금액 | 거래 금액(USD) |
| 날짜 | 날짜 값 | 마감일 |
| 날짜 및 시간 | 시간이 포함된 날짜 | 회의 시간 |
| 도메인 | 웹사이트 도메인(회사에 사용) | acme.com |
| 이메일 | 이메일 주소(기본 + 추가) | 연락처 이메일 |
| JSON | 구조화된 JSON 데이터 | 사용자 지정 메타데이터 |
| 링크 | 레이블이 있는 URL(기본 + 보조) | 웹사이트, LinkedIn |
| 긴 텍스트 | 여러 줄 텍스트 | 설명, 메모 |
| 다중 선택 | 미리 정의된 목록에서 여러 항목 선택 | 태그, 카테고리 |
| 숫자 | 숫자 값(정수 또는 소수) | 수량, 점수 |
| 전화 | 국가 코드가 포함된 전화번호 | 업무용 전화 |
| 평점 | 별점(1~5) | 우선순위, 점수 |
| 관계 | 다른 객체의 레코드 링크 | 회사 → 사람 |
| 선택 | 미리 정의된 목록에서 단일 항목 선택 | 단계, 상태 |
| 텍스트 | 한 줄 텍스트 | 이름, 직함 |
## 사용자 정의 필드 생성
모든 객체에 사용자 정의 필드를 추가하려면 다음 단계를 따르세요:
1. 왼쪽 사이드바에서 `설정`으로 이동합니다.
2. `데이터 모델`로 이동한 다음 사용자 지정하려는 객체를 선택합니다.
3. `+ 새 필드`를 클릭하여 계속 진행합니다.
4. 요구 사항에 맞는 필드 이름과 유형을 선택합니다. 더 나은 이해를 위해 필드 설명을 추가하는 것을 고려하세요.
새로 생성된 필드는 애플리케이션의 필드 내에서 사용 가능합니다. 특정 보기에서 표시하려면 옵션 메뉴를 클릭한 다음 `필드`를 선택하세요.
<VimeoEmbed videoId="927628219" title="동영상 시연" />
**빠른 방법:** 모든 객체 테이블의 오른쪽 상단의 **+** 버튼을 클릭한 다음 `필드 사용자 지정`을 선택합니다. 이렇게 하면 바로 데이터 모델 설정으로 이동합니다.
<img src="/images/user-guide/fields/quick-new-field.png" style={{width:'100%'}} />
## 필드 비활성화
데이터를 잃지 않고 앱에서 필드를 숨기려면 필드를 비활성화할 수 있습니다. 삭제 대신 필드를 숨기는 것으로 생각하세요.
다음은 비활성화 방법입니다:
1. 객체 설정에서 비활성화하려는 필드를 찾습니다.
2. 필드 옆에 있는 세 점 `⋮`을 클릭하여 메뉴를 엽니다.
3. 드롭다운에서 `비활성화`를 선택합니다.
<img src="/images/user-guide/fields/deactivate-field.png" style={{width:'100%'}} />
필드를 비활성화하면 어떻게 되나요?
1. **앱 안에서:** 필드가 사라지며 더 이상 새로운 값을 추가할 수 없습니다.
2. **기존 관계:** 관계 필드인 경우 기존 연결은 유지되지만 새 연결을 만들 수 없습니다.
3. **API 액세스:** 여전히 API를 통해 필드와 그 데이터를 액세스할 수 있습니다.
표준 및 사용자 정의 필드를 다시 활성화하거나 영구적으로 삭제할 수 있는 옵션이 있습니다.
## 필드를 고유하게 만들기
동일한 값을 가진 레코드가 없도록 필드를 고유하게 만드세요. 예를 들어, 이메일 주소는 각 사람마다 고유합니다.
고유성을 설정할 때 오류가 발생하면 데이터(삭제된 레코드를 포함하여)에서 중복 값을 확인하세요.
## 인덱스 (고급)
데이터베이스 인덱스는 자동으로 관리되며, 직접 추가해야 하는 경우는 드물고 실수하기 쉽습니다. 고급 모드를 켜면, 필요한 경우를 대비해 각 오브젝트의 `Settings → Data Model → <object>` 아래에 **Indexes** 섹션이 생깁니다.
## 필드 구성 모범 사례
### 명명 규칙 및 제한 사항
* **단수형 및 복수형 이름은 서로 달라야 합니다**: GraphQL API에는 변이를 위한 서로 다른 이름이 필요합니다.
* **보호된 필드 이름**: 일부 이름은 시스템 용도로 예약되어 있습니다(예: `Type`, `Application`)
### 통화 및 전화 필드
* **기본 통화:** 데이터 모델을 통해 구성할 수 있습니다.
* **기본 국가 코드:** 전화 필드를 위해 데이터 모델을 통해 구성할 수 있습니다.
### 선택 필드
* **각 선택 필드에는 기본 옵션을 선택할 수 있습니다**.
### 레코드 텍스트 필드
* **각 객체에는 하나의 메인 디스플레이 필드가 있습니다:** 이 필드는 가장 왼쪽 열에 나타나며 다른 객체와 링크될 때 레코드를 나타냅니다. 텍스트 필드여야 합니다. 예를 들어, 사람은 `이름`을 주요 필드로 사용하기 때문에 사람을 회사에 연결할 때 회사의 보기에서 이름을 볼 수 있습니다.

View File

@@ -0,0 +1,92 @@
---
title: 개체
description: Twenty에서 표준 및 사용자 지정 객체에 대해 알아보세요.
---
import { VimeoEmbed } from '/snippets/vimeo-embed.mdx';
## 표준 개체
표준 객체는 시작을 돕기 위해 워크스페이스에 미리 정의되어 있습니다. Twenty의 모든 사용자가 접근할 수 있는 공유 데이터 모델의 일부입니다. 기본 상태로 사용하거나 사용자 정의하거나 비활성화할 수 있습니다.
<img src="/images/user-guide/objects/standard-objects.png" style={{width:'100%'}} />
### 사람들
`People` 객체는 연락처를 저장합니다. 연락처 정보 및 상호 작용 기록이 포함되어 있어 모든 고객 상호 작용을 한 곳에서 볼 수 있습니다.
### 회사
`Companies` 객체는 비즈니스 계정을 저장합니다. 업종, 규모 및 위치와 같은 세부정보가 포함됩니다. Companies는 `People` 및 `Opportunities` 객체와 연결됩니다.
### 기회
`Opportunities` 객체는 거래 관련 데이터를 저장합니다. 잠재 매출의 진행 상황을 발굴부터 성사까지 추적하며, 단계, 거래 규모, 연결된 계정, 예상 마감일을 기록합니다. 캔반 레이아웃에서 판매 파이프라인을 볼 수 있습니다.
### 노트
`Notes` 객체는 사람, 회사, 영업 기회 및 기타 레코드에 첨부할 수 있는 자유 형식의 메모를 저장합니다. 메모를 사용해 회의 요약, 중요한 세부정보, 기타 맥락 정보를 기록하세요.
### 작업
`Tasks` 객체는 할 일과 실행 항목을 저장합니다. 작업은 사람, 회사, 영업 기회 및 기타 레코드에 연결할 수 있습니다. 마감일, 담당자, 완료 상태를 추적하여 후속 조치를 철저히 관리하세요.
## 사용자 지정 개체
사용자 지정 객체를 사용하면 조직에 고유하며 표준 객체로는 처리할 수 없는 정보를 저장할 수 있습니다. 예를 들어, SpaceX의 경우 로켓 및 발사에 대한 사용자 정의 개체를 만들 수 있습니다.
<img src="/images/user-guide/objects/custom-objects.png" style={{width:'100%'}} />
### 새 사용자 지정 객체 생성
새 사용자 지정 객체를 만들려면:
1. 왼쪽 사이드바에서 설정으로 이동하세요.
2. 워크스페이스에서 데이터 모델로 이동하세요. 여기에서 기존 표준 및 사용자 정의 개체(활성 및 비활성 포함)의 개요를 볼 수 있습니다.
<VimeoEmbed videoId="926288174" title="동영상 시연" />
3. 상단에서 `+ New object`를 클릭하세요. 단수 및 복수 이름을 입력하고 아이콘을 선택한 다음 사용자 정의 객체에 대한 설명을 추가하고 저장(오른쪽 상단)을 누릅니다. 사용자 지정 객체의 예로 Listing을 사용할 경우, 단수형은 "listing", 복수형은 "listings"이며, 설명은 "호스트가 숙소를 홍보하기 위해 생성한 목록"처럼 작성할 수 있습니다.
4. 이제 사용자 지정 객체가 생성되어 사이드바에 표시됩니다. 바로 레코드를 추가할 수 있습니다.
## 객체 관리
### 객체 비활성화
표준 또는 사용자 지정 객체가 필요하지 않은 경우:
1. 설정 → 데이터 모델로 이동하세요
2. 비활성화하려는 객체를 찾아 클릭하세요
3. 객체의 **Settings** 탭으로 이동하세요
4. `Deactivate` 버튼을 클릭하세요
5. 객체는 워크스페이스에서 숨겨지지만 데이터는 유지됩니다
### 객체 재활성화
비활성화된 객체를 다시 사용하려면:
1. 설정 → 데이터 모델로 이동하세요
2. `Deactivated` 필터를 활성화하세요
3. 비활성화된 객체를 찾으세요(이름 옆에 `Deactivated`가 표시됩니다)
4. `⋮`를 클릭한 다음 `Activate`를 클릭해 다시 활성화하세요
5. 객체와 해당 모든 데이터가 복원됩니다
## 모범 사례
### 사용자 지정 객체를 생성해야 할 때
* **고유한 비즈니스 엔터티**: 업계나 프로세스에 특화된 항목
* **복잡한 관계**: 여러 엔터티 간의 연결을 추적해야 할 때
* **확장 가능한 데이터**: 매우 많은 인스턴스가 생길 수 있을 때
### 대신 필드를 사용해야 할 때
* **단순 속성**: 기존 객체를 설명하는 속성
* **카테고리 또는 레이블**: 기존 레코드를 분류하는 방법
* **단일 값**: 별도의 라이프사이클이 필요하지 않은 정보
### 객체 이름
* **명확하고 설명적인 이름을 사용하세요**: 객체가 무엇을 나타내는지 분명하게 하세요
* **규칙을 따르세요**: 객체 이름에는 단수를, 컬렉션에는 복수를 사용하세요
* **팀을 고려하세요**: 모두가 이해할 수 있는 이름을 선택하세요

View File

@@ -0,0 +1,94 @@
---
title: 관계 필드
description: 관계 필드를 사용하여 서로 다른 객체의 레코드를 연결하세요.
---
## 관계 유형
### 일대다
객체 A의 하나의 레코드는 객체 B의 여러 레코드에 연결될 수 있습니다.
**예:** 하나의 회사에는 여러 사람(직원)이 있을 수 있습니다.
### 다대일
객체 A의 여러 레코드는 객체 B의 하나의 레코드에 연결될 수 있습니다.
**예:** 여러 사람이 하나의 회사에 속할 수 있습니다.
### 여러 객체 유형으로의 관계
일부 객체는 관계의 한쪽에서 여러 객체 유형에 연결될 수 있습니다.
**예:** 노트는 동시에 한 사람, 한 회사, 한 기회에 첨부될 수 있습니다. 노트는 "다수" 쪽에 있으며 여러 "하나" 쪽과 연결됩니다.
<img src="/images/user-guide/fields/many-to-one-morph.png" style={{width:'100%'}} />
마찬가지로, 프로젝트("하나" 쪽)는 여러 사람, 여러 회사, 여러 노트로부터 연결을 받을 수 있습니다.
<img src="/images/user-guide/fields/one-to-many-morph.png" style={{width:'100%'}} />
<Warning>
**가져오기/내보내기 제한 사항**: 여러 객체 유형을 가리키는 관계는 CSV 가져오기/내보내기에서 아직 지원되지 않습니다. 이는 로드맵에 포함되어 있습니다.
</Warning>
### 다대다
객체 A의 여러 레코드는 객체 B의 여러 레코드에 연결될 수 있습니다.
**예:** 여러 사람은 여러 프로젝트에 연결될 수 있으며, 그 반대도 가능합니다.
다대다 관계는 **연결 객체** 패턴을 사용합니다: 양쪽을 연결하는 중간 객체. 연결 관계 기능을 사용하면 Twenty는 중간 객체를 UI에서 숨기고 최종 연결된 레코드를 직접 표시합니다.
<Warning>
**베타 기능**: 사용하려면 **Settings → Community → Features**에서 연결 관계를 활성화해야 합니다.
</Warning>
자세한 단계별 가이드는 [다대다 관계 생성 방법](/l/ko/user-guide/data-model/how-tos/create-many-to-many-relations)을 참조하세요.
## 관계 필드 만들기
1. **설정 → 데이터 모델**로 이동
2. 관계를 추가하려는 객체를 선택합니다.
3. **+ 새 필드**를 클릭합니다
4. 필드 유형으로 **관계**를 선택합니다.
5. 연결할 대상 객체를 선택합니다.
6. 관계 설정을 구성합니다:
* **원본 객체의 필드 이름**: 현재 편집 중인 객체에 있는 관계 필드의 이름
* **대상 객체의 필드 이름**: 대상 객체에 표시될 관계 필드의 이름
* 관계 유형(일대다, 다대일)
7. **저장** 클릭
## 표준 관계
Twenty에는 표준 객체 간에 사전 구성된 관계가 제공됩니다:
| 원본 객체 | 대상 객체 | 관계 유형 |
| ----- | ----- | ----- |
| 사람들 | 회사 | 다대일 |
| 기회 | 회사 | 다대일 |
| 기회 | 사람들 | 다대일 |
## 모범 사례
### 관계 계획
* **데이터 모델을 매핑하세요**: 생성하기 전에 관계를 계획합니다
* **방향을 고려하세요**: 어느 객체가 관계를 "소유"하는지 생각하세요
* **순환 의존성을 피하세요**: 데이터 모델을 깔끔하게 유지하세요
### 관계 이름 지정
* **명확한 이름을 사용하세요**: 관계가 무엇을 나타내는지 분명하게 하세요
* **일관성을 유지하세요**: 관계 전반에서 유사한 명명 패턴을 사용하세요
* **양쪽을 고려하세요**: 관계의 양쪽에 적절한 이름을 지정하세요
### 성능
* **과도한 관계 설정은 피하세요**: 관계가 너무 많으면 워크스페이스가 느려질 수 있습니다
## 제한 사항
* **관계를 삭제**하면 링크는 제거되지만 관련 레코드는 삭제되지 않습니다
* **순환 관계**는 데이터 무결성을 위해 피해야 합니다

View File

@@ -0,0 +1,72 @@
---
title: 사용자 정의 필드 생성
description: 모든 객체에 사용자 정의 필드를 추가하는 단계별 가이드.
---
사용자 정의 필드를 사용하면 비즈니스에 특화된 정보를 수집할 수 있습니다. 표준이든 사용자 정의이든 모든 객체에 추가할 수 있습니다.
## 단계
1. **설정 → 데이터 모델**로 이동
2. 필드를 추가하려는 객체를 선택합니다.
3. **+ 새 필드**를 클릭합니다
4. **필드 유형**을 선택합니다(모든 유형은 [필드](/l/ko/user-guide/data-model/capabilities/fields)에서 확인하세요)
5. **필드 이름**과 선택적 설명을 입력합니다
6. 필드별 설정을 구성합니다(아래 참조)
7. **저장** 클릭
**빠른 방법:** 어떤 테이블 뷰에서든 열 헤더 끝의 \*\*+\*\*를 클릭 → **필드 사용자 지정**.
## 뷰에서 필드 표시
새 필드는 자동으로 표시되지 않습니다. 표시하려면:
1. 객체의 테이블 뷰를 엽니다
2. **옵션 → 필드**를 클릭합니다
3. 해당 필드 옆의 **눈 아이콘**을 클릭하여 표시합니다
4. 드래그하여 순서를 변경합니다
## 구성 옵션
### 선택/다중 선택의 경우
1. 옵션을 만들려면 **+ 옵션 추가**를 클릭합니다
2. 원한다면 **기본 옵션**을 설정합니다
3. 드래그하여 옵션 순서를 변경합니다
<Note>
**가져오기에는 API 이름을 사용하세요.** API 이름을 보려면 설정에서 **고급 모드**를 활성화하세요. [필드 매핑](/l/ko/user-guide/data-migration/capabilities/field-mapping)을 참조하세요.
</Note>
### 통화 필드의 경우
**기본 통화**(USD, EUR 등)를 새 레코드에 대해 설정합니다
### 전화 필드의 경우
새 전화번호에 미리 입력될 **기본 국가 코드**를 설정합니다.
### 필드를 고유하게 만들기
레코드 전체에서 중복 값을 방지하려면 **고유**를 전환합니다.
<Note>
중복이 존재하면(삭제된 레코드를 포함) 오류가 발생합니다. 먼저 중복을 정리하세요.
</Note>
### 기본값 설정
선택 필드의 경우 새 레코드에서 미리 선택될 옵션을 지정할 수 있습니다. 체크박스 필드의 경우 기본으로 선택됨 또는 선택 해제 상태를 설정합니다.
## 필드 비활성화
1. **설정 → 데이터 모델**로 이동
2. 필드를 찾습니다
3. **⋮ → 비활성화**를 클릭합니다
데이터는 보존됩니다. 나중에 다시 활성화하거나 영구적으로 삭제할 수 있습니다.
## 관련 항목
* [필드](/l/ko/user-guide/data-model/capabilities/fields) — 모든 필드 유형 설명
* [데이터 모델 FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — 자주 묻는 질문

View File

@@ -0,0 +1,51 @@
---
title: 사용자 정의 객체 생성
description: Twenty에서 사용자 정의 객체를 생성하는 단계별 가이드.
---
사용자 정의 객체를 사용하면 표준 객체에서 다루지 않는, 비즈니스에 고유한 정보를 저장할 수 있습니다. 예: 프로젝트, 제품, 티켓 또는 리스팅.
<Note>
**객체가 필요한지 필드가 필요한지 확신이 없나요?** 자세한 내용은 [데이터 모델 이해](/l/ko/user-guide/data-model/overview)를 참조하세요.
</Note>
## 단계
1. **설정 → 데이터 모델**로 이동
2. **+ 객체 추가**를 클릭합니다
3. 다음을 입력하세요:
* **단수 이름**(예: "Listing")
* **복수 이름**(예: "Listings")
* **아이콘**
* **설명** (선택 사항)
4. **저장** 클릭
객체가 즉시 사이드바에 표시됩니다.
## 다음: 필드 추가
새 객체는 기본 필드로 시작합니다. 필요한 데이터를 수집할 수 있도록 사용자 정의 필드를 추가하세요:
1. **설정 → 데이터 모델**에서 객체를 선택합니다
2. **+ 새 필드**를 클릭합니다
3. 필드 유형을 선택하고 구성한 뒤 저장합니다
필드 유형과 구성에 대한 자세한 내용은 [사용자 정의 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields)을 참조하세요.
## 다른 객체와 연결하기
객체를 사람, 회사 또는 다른 객체와 연결하려면 관계 필드를 생성하세요. [관계 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-relation-fields)을 참조하세요.
## 객체 비활성화
객체가 더 이상 필요하지 않은 경우:
1. **설정 → 데이터 모델 → 원하는 오브젝트 → 설정**으로 이동합니다
2. **비활성화** 버튼을 클릭합니다
객체는 숨겨지지만 데이터는 보존됩니다. 나중에 다시 활성화하거나 영구적으로 삭제할 수 있습니다.
## 관련 항목
* [객체](/l/ko/user-guide/data-model/capabilities/objects) — 표준 객체 vs 사용자 정의 객체
* [데이터 모델 FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — 자주 묻는 질문

View File

@@ -0,0 +1,175 @@
---
title: 다대다 관계 만들기
description: 정션 오브젝트를 사용하여 양쪽에서 여러 항목이 서로 연결될 수 있는 레코드를 연결합니다.
---
다대다 관계를 사용하면 양쪽에서 여러 레코드를 연결할 수 있습니다. 예: 여러 사람은 여러 프로젝트에서 작업할 수 있으며, 각 프로젝트에는 많은 사람이 포함될 수 있습니다.
<Warning>
**베타 기능**: 정션 관계는 현재 베타 단계입니다. 이 가이드를 따르기 전에 **Settings → Community → Features**에서 이를 활성화하세요.
</Warning>
<Note>
이 기능을 사용하려면 **Advanced mode**도 활성화되어 있어야 합니다(설정 사이드바 왼쪽 하단의 토글).
</Note>
## 다대다 관계를 사용할 때
관계의 양쪽 모두에 여러 연결이 있을 수 있을 때 다대다를 사용하세요:
| 관계 | 예시 |
| --------- | ---------------------------------------------------- |
| 사람 ↔ 프로젝트 | 한 사람은 여러 프로젝트에서 작업하고, 하나의 프로젝트에는 여러 팀원이 있습니다. |
| 회사 ↔ 태그 | 하나의 회사에는 여러 태그가 있을 수 있으며, 하나의 태그는 여러 회사에 적용될 수 있습니다. |
| 제품 ↔ 주문 | 하나의 제품은 여러 주문에 포함될 수 있으며, 하나의 주문에는 여러 제품이 포함됩니다. |
## 작동 방식
Twenty는 다대다 관계에 **정션 오브젝트** 패턴을 사용합니다. 정션 오브젝트는 두 객체 사이에 위치하여 연결을 보관합니다:
```
People ←→ Project Assignments ←→ Projects
```
**Project Assignments** 오브젝트(정션)에는 다음이 있습니다:
* 사람에 대한 관계(다대일)
* 프로젝트에 대한 관계(다대일)
정션 관계 토글을 활성화하면, Twenty는 중간 정션 레코드를 표시하지 않고 연결된 레코드를 직접 표시합니다.
## 사전 준비
1. **베타 기능에서 Junction Relations 활성화**: **Settings → Community → Features**로 이동하여 **Junction Relations**를 활성화하세요
2. **Advanced mode 활성화**: 설정 사이드바 왼쪽 하단에서 **Advanced mode**를 켭니다
3. 데이터 모델을 계획하세요:
* 어떤 두 오브젝트를 연결하나요?
* 정션 오브젝트의 이름은 무엇으로 할까요?
## 1단계: 정션 오브젝트 만들기
먼저, 연결을 보관할 중간 오브젝트를 만드세요.
1. **설정 → 데이터 모델**로 이동
2. **+ 객체 추가**를 클릭합니다
3. 설명을 담은 이름을 지정하세요(예: "Project Assignment", "Team Member", "Product Order")
4. "이름 필드 생성을 건너뛰기"를 켭니다
<img src="/images/user-guide/fields/new-pivot-object.png" alt="새 피벗 오브젝트" />
5. **저장**을 클릭합니다
<Tip>
**명명 규칙**: "Project Assignment" 또는 "Team Membership"처럼 관계를 설명하는 이름을 사용하세요. 이렇게 하면 데이터 모델을 더 쉽게 이해할 수 있습니다.
</Tip>
## 2단계: 오브젝트와 정션 간 관계 만들기
두 개의 오브젝트 각각에서 정션 오브젝트로 관계 필드를 추가합니다.
### 첫 번째 관계(오브젝트 A → 정션)
1. **Settings → Data Model**에서 첫 번째 오브젝트를 선택하세요
2. **+ 관계 추가**를 클릭합니다
3. 정션 오브젝트를 선택하세요(예: "Project Assignments")
4. 관계 유형을 **One-To-Many**로 설정합니다(한 사람이 여러 할당에 연결될 수 있음)
5. 필드 이름 지정:
* People의 필드: 예: "Project Assignments"
* 정션의 필드: 예: "Person"
6. **저장**을 클릭합니다
### 두 번째 관계(오브젝트 B → 정션)
1. **Settings → Data Model**에서 두 번째 오브젝트를 선택하세요
2. **+ 관계 추가**를 클릭합니다
3. 정션 오브젝트를 선택하세요(예: "Project Assignments")
4. 관계 유형을 **One-To-Many**로 설정합니다(하나의 프로젝트가 여러 할당에 연결될 수 있음)
5. \*\*"This is a relation to a Junction Object"\*\*를 활성화하세요
<img src="/images/user-guide/fields/junction-relation-toggle.png" style={{width:'100%'}} />
6. 필드 이름 지정:
* 정션의 필드: 예: "Project"
* Projects의 필드: 예: "Team Members"
7. **저장**을 클릭합니다
## 3단계: 정션 관계 표시 구성
이제 중간 정션 오브젝트를 건너뛰고 연결된 레코드를 직접 표시하도록 소스 오브젝트를 구성하세요.
1. **설정 → 데이터 모델**로 이동
2. 첫 번째 오브젝트를 선택하세요(예: "People")
3. 정션 오브젝트를 가리키는 관계 필드(예: "Project Assignments")를 찾으세요
4. 클릭하여 필드를 편집하세요
5. \*\*"This is a relation to a Junction Object"\*\*를 활성화하세요
6. **Target relation**을 선택하세요(예: "Project" — 반대편을 가리키는 정션의 필드)
7. **저장**을 클릭합니다
## 결과
구성 후:
* **Person** 레코드에서는 "Project Assignments" 필드가 할당 레코드가 아니라 **Projects**를 직접 표시합니다
* **Project** 레코드에서는 "Team Members" 필드가 **People**를 직접 표시합니다
정션 오브젝트는 여전히 존재하며 연결을 저장하지만, UI는 더 깔끔한 다대다 보기를 제공합니다.
## 예: People ↔ Projects
전체 단계별 안내는 다음과 같습니다:
### 정션 오브젝트 만들기
* 이름: **Project Assignment**
* 설명: "사람을 작업 중인 프로젝트에 연결합니다"
### 관계 추가
1. **People → Project Assignment**
* 유형: One-to-Many
* People의 필드: "Project Assignments"
* Assignment의 필드: "Person"
2. **Projects → Project Assignment**
* 유형: One-to-Many
* Projects의 필드: "Team Members"
* Assignment의 필드: "Project"
### 정션 표시 구성
1. **People** 오브젝트에서:
* "Project Assignments" 필드를 편집하세요
* 정션 토글을 활성화하세요
* 대상: "Project"
2. **Projects** 오브젝트에서:
* "Team Members" 필드를 편집하세요
* 정션 토글을 활성화하세요
* 대상: "Person"
### 사용하기
* Person 레코드를 열면 → 해당 Projects를 바로 확인할 수 있습니다
* Project 레코드를 열면 → 팀원을 바로 확인할 수 있습니다
* 양쪽 어디에서든 새 연결을 만들 수 있습니다
## 연결에 추가 데이터 추가하기
정션 오브젝트는 실제 오브젝트이므로, 관계에 대한 정보를 저장할 사용자 정의 필드를 추가할 수 있습니다:
* **역할**: "Developer", "Designer", "Manager"
* **시작일**: 해당 인원이 프로젝트에 참여한 시점
* **할당 시간**: 이 프로젝트의 주간 시간
이 데이터를 확인하려면 정션 오브젝트로 직접 이동하거나 API를 통해 조회하세요.
## 제한 사항
* **CSV 가져오기/내보내기**: 다대다 관계를 직접 가져오기는 지원되지 않습니다. 대신 정션 오브젝트로 레코드를 가져오세요.
* **필터**: 다대다 관계로 필터링하는 경우 옵션이 제한될 수 있습니다.
## 관련 항목
* [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields) — 관계 유형 설명
* [사용자 정의 오브젝트 만들기](/l/ko/user-guide/data-model/how-tos/create-custom-objects) — 오브젝트 생성 방법
* [관계 필드 만들기](/l/ko/user-guide/data-model/how-tos/create-relation-fields) — 기본 관계 설정

View File

@@ -0,0 +1,70 @@
---
title: 관계 필드 만들기
description: 관계 필드를 사용하여 객체를 연결하는 단계별 가이드.
---
관계 필드는 서로 다른 객체의 레코드를 연결합니다—예: 사람을 회사에 연결.
<Note>
**관계 이름은 생성 후 변경할 수 없습니다** (API에 영향을 줍니다). 이름을 신중하게 계획하세요.
</Note>
## 시작하기 전에
다음을 결정하세요:
* 어떤 객체를 연결하나요? (예: 사람 → 회사)
* 어느 쪽이 "일(1)" 측인가요? (예: 회사)
* 어느 쪽이 "다수" 측인가요? (예: 사람 — 많은 사람이 한 회사에서 근무합니다)
* 각 측의 필드 이름을 무엇으로 지정할까요?
관계 유형에 대한 설명은 [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields)를 참고하세요.
## 단계
1. **설정 → 데이터 모델**로 이동
2. 관계를 만들 객체(보통 "다수" 측)를 선택합니다.
3. **+ 새 필드**를 클릭합니다
4. 필드 유형으로 **관계**를 선택합니다.
5. **대상 객체**를 선택합니다.
6. **일대다** 또는 **다대일**을 선택합니다.
7. 관계의 **양쪽**에 대한 필드 이름을 입력합니다.
8. **저장** 클릭
## 예: 사람 → 회사
* **설정 → 데이터 모델 → 사람**으로 이동
* 관계 필드를 추가합니다.
* 대상: **회사**
* 유형: **다대일**
* 사람 측의 필드: **회사**
* 회사 측의 필드: **직원**
이제 각 사람을 회사에 연결할 수 있고, 각 회사에는 연결된 사람들이 표시됩니다.
## 관계 비활성화
1. **설정 → 데이터 모델 → 원하는 오브젝트**로 이동
2. 관계 필드를 찾아 클릭합니다
3. **비활성화** 버튼을 클릭합니다
연결은 유지되지만 숨겨집니다. 복원하려면 다시 활성화하세요.
<Note>
**관계를 비활성화해도 레코드는 삭제되지 않습니다.** 둘 사이의 연결만 제거됩니다.
</Note>
## 관계 삭제
1. **설정 → 데이터 모델 → 원하는 오브젝트**로 이동
2. 관계 필드를 찾아 클릭합니다
3. **삭제** 버튼을 클릭합니다
<Note>
사용자 지정 관계에만 적용됩니다. 표준 관계는 비활성화만 할 수 있습니다.
</Note>
## 관련 항목
* [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields) — 유형과 제한사항
* [관계 가져오기 방법](/l/ko/user-guide/data-migration/how-tos/import-relations-between-objects-via-csv) — 연결된 레코드를 대량으로 가져오기

View File

@@ -0,0 +1,22 @@
---
title: 데이터 모델 사용자 정의하기
description: 데이터 모델 사용자 정의 옵션 개요.
---
Twenty의 데이터 모델은 완전히 사용자 정의할 수 있습니다. 비즈니스에 맞게 객체, 필드, 관계를 생성하세요.
## 빠른 링크
| 원하는 작업... | 가이드 |
| --------- | ----------------------------------------------------------------------- |
| 새 객체 생성 | [사용자 정의 객체 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-objects) |
| 객체에 필드 추가 | [사용자 정의 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields) |
| 객체를 서로 연결 | [관계 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-relation-fields) |
## 자세히 알아보기
* [데이터 모델 이해하기](/l/ko/user-guide/data-model/overview) — 핵심 개념과 계획 팁
* [객체](/l/ko/user-guide/data-model/capabilities/objects) — 표준 객체와 사용자 정의 객체
* [필드](/l/ko/user-guide/data-model/capabilities/fields) — 모든 필드 유형
* [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields) — 객체 연결
* [데이터 모델 FAQ](/l/ko/user-guide/data-model/how-tos/data-model-faq) — 자주 묻는 질문

View File

@@ -0,0 +1,157 @@
---
title: 데이터 모델 FAQ
description: Twenty의 데이터 모델에 대한 자주 묻는 질문입니다.
---
## 객체 관리
<AccordionGroup>
<Accordion title="사용자 정의 객체를 삭제할 수 있나요?">
예, 사용자 정의 객체는 삭제할 수 있습니다. 먼저 비활성화할 수도 있습니다. 이렇게 하면 데이터는 보존하면서 객체와 그 데이터를 인터페이스에서 숨깁니다.
</Accordion>
<Accordion title="표준 객체(사람, 회사 등)를 삭제할 수 있습니까?">
아니요, 표준 객체는 삭제할 수 없습니다. 비활성화만 할 수 있으며, 인터페이스에서는 숨겨지지만 데이터는 보존됩니다.
</Accordion>
<Accordion title="사용자 정의 객체는 몇 개까지 만들 수 있나요?">
필요한 만큼 사용자 정의 객체와 필드를 만들 수 있으며, 가격은 변동하지 않습니다.
</Accordion>
<Accordion title="표준 객체의 이름을 바꿀 수 있나요?">
표준 객체(사람, 회사, 기회)의 레이블은 변경할 수 있지만, API 이름은 변경할 수 없습니다. 모든 Twenty 워크스페이스에서의 일관성을 위해 API 이름은 고정되어 있습니다.
</Accordion>
<Accordion title="객체의 아이콘을 변경할 수 있나요?">
예, **설정 → 데이터 모델**에서 표준 객체와 사용자 정의 객체 모두의 아이콘을 변경할 수 있습니다.
</Accordion>
<Accordion title="왼쪽 탐색 모음에서 객체 순서를 변경할 수 있습니까?">
아직 안 됩니다. 탐색의 객체 순서는 현재 고정되어 있으며, 이 기능은 향후 릴리스에 계획되어 있습니다.
</Accordion>
<Accordion title="왼쪽 탐색 모음에서 객체를 숨길 수 있습니까?">
모든 활성 객체는 탐색에 나타납니다. **설정 → 데이터 모델**에서 필요 없는 객체를 비활성화할 수 있습니다.
</Accordion>
</AccordionGroup>
## 필드 기능
<AccordionGroup>
<Accordion title="생성 후에 필드 유형을 변경할 수 있나요?">
아니요, 생성 후에는 필드 유형을 변경할 수 없습니다. 다른 유형이 필요하다면 올바른 유형의 새 필드를 만들고 데이터를 마이그레이션한 다음 이전 필드를 비활성화하세요.
</Accordion>
<Accordion title="단수 및 복수 이름이 필요한 이유는 무엇입니까?">
우리의 GraphQL API는 다양한 작업에서 두 형식을 모두 사용합니다:
* 단일 기록 작업을 위한 `createPerson` (단수)
* 대량 작업을 위한 `createPeople` (복수)
단수 및 복수 형식이 동일할 때 제한이 있지만, 개발자 경험을 향상시킵니다.
</Accordion>
<Accordion title="왜 일부 필드 이름은 보호됩니까?">
`Type` 또는 `Application`과 같은 특정 필드 이름은 시스템 사용을 위해 예약되어 있습니다. 대신 `Category` 또는 `Classification`과 같은 대체 이름을 선택하세요.
</Accordion>
<Accordion title="필드를 비활성화하면 어떻게 되나요?">
* 필드는 인터페이스에서 숨겨집니다
* 기존 데이터는 보존됩니다
* API를 통해 해당 필드에 계속 액세스할 수 있습니다
* 기존 관계는 유지되지만 새 관계를 생성할 수는 없습니다
* 필드는 나중에 다시 활성화할 수 있습니다
</Accordion>
<Accordion title="필드를 필수로 설정할 수 있나요?">
현재는 사용자 정의 필드를 필수로 설정할 수 없습니다. 모든 필드는 빈 값을 허용합니다. 필드가 비어 있을 때 알림을 보내거나 동작을 차단하는 워크플로우를 사용해 필수 필드를 강제할 수 있습니다.
</Accordion>
<Accordion title="고유와 필수의 차이는 무엇인가요?">
* **고유**: 두 레코드가 이 필드에 동일한 값을 가질 수 없습니다
* **필수**: 필드에 값이 있어야 합니다(현재 사용자 정의 필드에서는 지원되지 않음)
</Accordion>
<Accordion title="수식 필드를 만들 수 있습니까?">
수식 필드는 **2026년 하반기**에 제공될 예정입니다. 현재는 워크플로를 사용하여 필드 값을 자동으로 계산하고 업데이트할 수 있습니다.
</Accordion>
<Accordion title="내 객체에 중첩 필드를 가질 수 있습니까?">
중첩 필드는 **2026년 하반기**에 제공될 예정입니다. 현재로서는 관련 객체의 필드 값을 가져오려면 워크플로를 사용할 수 있습니다. 예를 들어, 회사의 산업을 사람 기록에 표시하려면 사람에 대한 사용자 정의 필드를 만들고 워크플로를 사용하여 값을 동기화하세요.
</Accordion>
<Accordion title="객체 내에서 필드를 정렬할 수 있습니까?">
예, Settings → Data model → 원하는 객체 → Layout으로 이동한 다음 **Customize record page**를 클릭하세요. 이 버튼이 비활성화되어 있다면, 레코드를 하나 생성해야 합니다.
</Accordion>
</AccordionGroup>
## 관계
<AccordionGroup>
<Accordion title="같은 객체를 가리키는 관계를 만들 수 있나요?">
예! 자기 참조 관계가 지원되며, 계정 계층 구조와 같은 사용 사례에 권장됩니다. 예를 들어, 상위/하위 계정을 추적하기 위해 회사에서 회사로의 관계를 생성하세요.
</Accordion>
<Accordion title="다대다 관계를 만들 수 있습니까?">
다대다 관계는 **2026년 하반기**에 제공될 예정입니다. 현재는 우회 방법으로 두 개의 1대다 관계를 가진 중간 객체를 만드세요.
예를 들어 People과 Projects를 연결(다대다)하려면 "Project Assignments" 객체를 만들고 다음을 포함하세요:
* People에 대한 관계(여러 할당 → 한 사람)
* Projects에 대한 관계(여러 할당 → 한 프로젝트)
</Accordion>
<Accordion title="여러 객체 유형에 대한 관계(Morph 관계)란 무엇인가요?">
이는 하나의 필드를 통해 하나의 객체가 여러 서로 다른 객체 유형과 관계를 맺을 수 있도록 합니다. 예를 들어, 노트는 동시에 사람, 회사, 기회에 첨부될 수 있습니다.
각 노트는 동시에 한 사람, 한 회사, 한 기회에 연결됩니다.
자세한 내용은 [관계 필드](/l/ko/user-guide/data-model/capabilities/relation-fields)에서 확인하세요.
</Accordion>
<Accordion title="동일한 두 객체 간에 여러 관계를 만들 수 있나요?">
예, 동일한 두 객체 간에 여러 관계를 생성할 수 있습니다. 예를 들어, 회사는 사람에 대해 "Primary Contact"와 "Billing Contact" 관계를 모두 가질 수 있습니다.
</Accordion>
<Accordion title="레코드를 삭제하면 관계는 어떻게 되나요?">
레코드를 삭제하면 관련 레코드에서 관계 링크가 제거됩니다. 관련 레코드 자체는 삭제되지 않습니다.
</Accordion>
<Accordion title="순환 관계를 만들 수 있나요?">
기술적으로는 가능하지만, 순환 관계(A → B → C → A)는 혼란을 초래하고 성능 문제를 일으킬 수 있으므로 피하는 것이 좋습니다.
</Accordion>
</AccordionGroup>
## 접속 및 권한
<AccordionGroup>
<Accordion title="내 데이터 모델을 어디서 보고 편집할 수 있습니까?">
**설정 → 데이터 모델**로 이동하여 모든 객체와 필드를 보고 편집하세요.
</Accordion>
<Accordion title="왜 설정에서 데이터 모델을 볼 수 없습니까?">
워크스페이스 관리자에게 문의하세요. 데이터 모델 접근은 보통 관리자에게만 제한됩니다.
</Accordion>
</AccordionGroup>
## 데이터 관리
<AccordionGroup>
<Accordion title="보유할 수 있는 레코드 수에 제한이 있나요?">
레코드 수에 대한 하드 제한은 없습니다. 하지만 매우 큰 데이터 세트는 일부 보기에서 성능에 영향을 줄 수 있습니다. 필터와 보기를 사용해 대규모 데이터 세트를 효과적으로 관리하세요.
</Accordion>
<Accordion title="사용자 정의 객체로 데이터를 가져올 수 있나요?">
예, 사용자 정의 객체를 포함한 모든 객체에 CSV 데이터를 가져올 수 있습니다. 가져오기 프로세스는 사용자 정의 필드에 대한 필드 매핑을 지원합니다. 자세한 내용은 [CSV 파일 준비 방법](/l/ko/user-guide/data-migration/how-tos/prepare-your-csv-files)을 참조하세요.
</Accordion>
<Accordion title="내 데이터 모델 구성 정보를 내보낼 수 있나요?">
현재 데이터 모델 구성에 대한 내장된 내보내기 기능은 없습니다. 워크스페이스 간에 데이터 모델을 마이그레이션해야 하는 경우 지원팀에 문의하세요.
</Accordion>
<Accordion title="하나의 객체는 필드를 최대 몇 개까지 가질 수 있나요?">
하나의 객체가 가질 수 있는 필드 수의 최대값은 Postgres 제한에 따라 기존 필드와 삭제된 필드를 모두 포함해 1600개입니다. 1600개 필드 한도에 도달하면 이는 당사의 공정 사용(Fair Usage) 정책에 해당하므로 Twenty에서는 워크스페이스를 수정해 주지 않는다는 점에 유의하세요.
</Accordion>
</AccordionGroup>
## 추가 도움이 필요하십니까?
복잡한 데이터 모델 설계를 지원받으려면 [구현 서비스](/l/ko/user-guide/getting-started/capabilities/implementation-services)를 확인하세요.

View File

@@ -0,0 +1,177 @@
---
title: 데이터 모델
description: 데이터 모델이 무엇이며 귀사의 비즈니스에 맞는 모델을 설계하는 방법을 알아보세요.
---
## 데이터 모델이란 무엇입니까?
데이터 모델은 CRM에서 정보가 조직되는 방식을 정의하는 구조입니다. 고객 데이터의 **청사진**이라고 생각하세요 — 한 번 설계한 다음 실제 데이터로 채웁니다.
## 핵심 개념
### 개체
**개체**는 CRM에서 데이터의 주요 범주입니다. 각 개체는 추적하려는 항목의 유형을 나타냅니다.
Twenty에는 표준 개체가 기본으로 제공됩니다:
* **People** — 개인(연락처, 리드, 파트너)
* **Companies** — 조직
* **Opportunities** — 거래 또는 판매
* **Notes** — 기록에 첨부된 노트
* **Tasks** — 기록에 연결된 할 일
비즈니스에 특화된 항목에 대해 **사용자 지정 개체**를 생성할 수도 있습니다(예: Projects, Subscriptions, Events).
### 필드
**필드**는 각 개체를 설명하는 속성 또는 특성입니다. 실제 정보를 저장합니다.
예를 들어, **People** 개체에는 다음과 같은 필드가 있습니다:
* 이름
* 이메일
* 전화
* 직책
* Company (Companies 개체에 대한 관계)
필드에는 다양한 **유형**이 있습니다: 텍스트, 숫자, 날짜, 선택, 다중 선택, 관계 등. 어떤 개체에도 사용자 지정 필드를 추가할 수 있습니다.
### 기록
**기록**은 개체 내의 개별 항목으로, 사용자가 생성하고 관리하는 실제 데이터입니다.
예를 들어:
* "John Smith"는 People 개체의 **기록**입니다
* "Acme Corp"는 Companies 개체의 **기록**입니다
**비유:**
| 데이터 모델 개념 | 현실 세계 비유 |
| --------- | ---------------- |
| **개체** | 책의 섹션(범주) |
| **필드** | 스프레드시트의 열(속성) |
| **기록** | 스프레드시트의 행(실제 항목) |
데이터 모델(개체 + 필드)을 한 번 설계한 후, 그 구조 내에서 많은 기록을 생성합니다.
## 왜 데이터 모델을 사용자 정의하나요?
모든 비즈니스는 다르게 작동합니다. 데이터 모델을 사용자 정의하면 경직된 시스템에 프로세스를 억지로 맞추는 대신, **귀하의** 프로세스에 맞춰 Twenty를 구성할 수 있습니다.
Twenty는 완전한 유연성을 제공합니다:
* 필요한 만큼 사용자 지정 개체를 생성하세요
* 무제한의 사용자 지정 필드를 추가하세요
* 사용자 정의 여부와 상관없이 가격은 변하지 않습니다
## 데이터 모델 설계 팁
### 1. 핵심 개체부터 시작하세요
업무에 사용하는 핵심 개념을 식별하세요. Twenty에서 이미 제공하는 항목:
* **People** — 귀하의 연락처
* **Companies** — 귀하의 조직
* **Opportunities** — 귀하의 거래
추가로 필요한 것이 무엇인지 생각해 보세요:
* Stripe에는 `Subscriptions` 개체가 필요합니다
* Airbnb에는 `Trips` 개체가 필요합니다
* 엑셀러레이터에는 `Batches` 개체가 필요합니다
### 2. 새 개체 대신 변형에는 필드를 사용하세요
어떤 것이 기존 개체의 특성에 불과하다면 **필드**로 만드세요.
**다음의 경우 필드를 사용하세요:**
* 카테고리와 레이블(예: Companies의 `Industry`)
* 상태 값(예: Opportunities의 `Stage`)
* 속성과 특성
### 3. 독립적으로 존재한다면 개체를 만드세요
그 개념에 자체 수명주기, 속성 또는 관계가 있다면 개체로 만들어야 합니다.
**다음의 경우 개체를 만드세요:**
* **Projects** — 기한, 소유자 및 작업이 있음
* **Subscriptions** — 회사, 제품 및 인보이스를 연결함
* **Events** — 참가자와 후속 조치를 포함함
이들은 자신의 데이터와 관계를 가지고 있기 때문에 단일 필드를 초과합니다.
### 4. 기록의 개수가 정해져 있지 않은 경우 개체를 만드세요
어떤 항목이 여러 번 연결될 수 있고 몇 개인지 알 수 없다면, 개체를 사용하세요.
**나쁜 접근법:**
`Product 1`, `Product 2`, `Product 3` 같은 필드 만들기...
**좋은 접근법:**
`Products` 개체를 만들고 레코드와 연결하세요. 이렇게 하면 모델을 변경하지 않고도 하나, 두 개, 또는 백 개의 제품을 지원할 수 있습니다.
### 5. 먼저 단순하게 유지하세요
필드부터 시작하세요. 한계를 느낄 때에만 새 객체로 전환하세요:
* 하나의 객체에 필드가 너무 많음
* 분리되어야 할 레코드가 반복됨
* 모델에 잘 맞지 않는 관계
## 사람, 회사 및 기회에 대한 특별 참고 사항
<Warning>
**이메일 및 캘린더 동기화는 사람, 회사 및 기회에서만 작동합니다.**
메일함/캘린더에서 동기화된 이메일과 미팅에 액세스할 수 있는 유일한 객체입니다. 가능한 한 많이 사용할 것을 권장합니다.
</Warning>
**모범 사례:**
* 사람 카테고리가 필요하다면 새 객체가 아닌 필드를 사용하세요
* 예: 별도의 객체를 만드는 대신 값이 "Prospect"와 "Partner"인 `Person Type` 필드를 사용하세요
* 필터링을 위해 서로 다른 **뷰**를 만드세요: 하나는 파트너를, 다른 하나는 잠재 고객을 표시합니다
**모든 레코드에 적용되지 않는 필드가 있어도 괜찮습니다.** 예: `Person Type = Partner`일 때만 적용되는 사람 객체의 `Referral Link` 필드. 관련 없는 뷰에서는 이 필드를 숨기세요.
## 선택을 안내하는 질문들
자문해 보십시오:
<Check>이것이 이미 보유한 것의 단순한 속성인가요, 아니면 자체 속성이 필요한가요?</Check>
<Check>레코드당 이것을 여러 개 추적해야 하는데, 그 개수를 미리 알 수 없을 때가 있나요?</Check>
<Check>이 개념이 하나가 아닌 여러 다른 객체와 연결되나요?</Check>
<Check>자체 라이프사이클(단계, 시작/종료 날짜)이 있나요?</Check>
이 중 하나 이상에 "예"라고 답했다면, 아마도 새 객체가 필요할 때입니다.
## 데이터 모델에 액세스하기
1. 왼쪽 사이드바에서 **설정**으로 이동하세요
2. **데이터 모델**을 클릭하세요
3. 모든 객체(표준 및 사용자 지정)를 확인하세요
4. 임의의 객체를 클릭하여 해당 필드를 보고 편집하세요
<Note>
**설정에서 데이터 모델이 보이지 않나요?**
데이터 모델에 대한 액세스는 보통 관리자에게만 제한됩니다. 액세스가 필요하면 워크스페이스 관리자에게 문의하세요.
</Note>
## 다음 단계
데이터 모델을 계획한 후:
* [사용자 지정 객체 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-objects)
* [사용자 지정 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-custom-fields)
* [관계 필드 생성 방법](/l/ko/user-guide/data-model/how-tos/create-relation-fields)
## 도움이 필요하신가요?
<Tip>
데이터 모델 설계를 도와드릴까요? 오브젝트, 필드, 그리고 관계를 설계하고 구축해 줄 [공인 Twenty 파트너를 찾아보세요](https://twenty.com/partners/list?categories=SOLUTIONING\&ref=docs-data-model).
</Tip>