# 테이블, 필드 및 레코드

- Human documentation: [https://docs.univer.ai/ko-KR/guides/bases/model/tables-fields-records](https://docs.univer.ai/ko-KR/guides/bases/model/tables-fields-records)

- Agent Markdown: [https://docs.univer.ai/ko-KR/guides/bases/model/tables-fields-records.md](https://docs.univer.ai/ko-KR/guides/bases/model/tables-fields-records.md)

- Requested language: `ko-KR`

- Content language: `ko-KR`

- Documentation version: `1.0.4`

- Source: [bases/model/tables-fields-records.ko-KR.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/bases/model/tables-fields-records.ko-KR.mdx)

---

Base에는 순서가 지정된 테이블이 있습니다. 각 테이블에는 필드 정의, 레코드 값, 선택적 셀 데이터 행렬, 리소스, 뷰, 렌더링 및 조회 로직에 사용되는 인덱스가 포함됩니다.

새 테이블은 레코드 0개로 시작합니다. Facade API 또는 가져오는 스냅샷 데이터로 레코드를 명시적으로 추가하세요.

## 테이블 스냅샷

| 속성             | 유형                                  | 설명                          |
| -------------- | ----------------------------------- | --------------------------- |
| id             | `string`                            | 테이블 ID입니다.                  |
| name           | `string`                            | 테이블 이름입니다.                  |
| fields         | `Record\<string, IFieldSnapshot\>`  | 필드 ID를 키로 사용하는 필드 정의입니다.    |
| fieldOrder     | `string[]`                          | 정렬된 필드 ID 목록입니다.            |
| records        | `Record\<string, IRecordSnapshot\>` | 레코드 ID를 키로 사용하는 레코드 데이터입니다. |
| recordOrder?   | `string[]`                          | 정렬된 레코드 ID 목록입니다.           |
| primaryFieldId | `string`                            | 기본 필드 ID입니다.                |
| views          | `Record\<string, IViewSnapshot\>`   | 뷰 ID를 키로 사용하는 뷰입니다.         |
| viewOrder      | `string[]`                          | 정렬된 뷰 ID 목록입니다.             |
| resources?     | `IBaseResources`                    | 공유 옵션, 구성원, 첨부 파일 리소스입니다.   |

## 필드 스냅샷

| 속성            | 유형                          | 설명                     |
| ------------- | --------------------------- | ---------------------- |
| id            | `string`                    | 필드 ID입니다.              |
| name          | `string`                    | 필드 이름입니다.              |
| description?  | `string`                    | 필드 설명입니다.              |
| type          | `BaseFieldType`             | 필드 유형입니다.              |
| config        | `Record\<string, unknown\>` | 유형별 필드 구성입니다.          |
| defaultValue? | `BaseCellValue`             | 새 레코드의 기본값입니다.         |
| system?       | `boolean`                   | 시스템에서 필드를 관리하는지 여부입니다. |
| readonly?     | `boolean`                   | 값이 읽기 전용인지 여부입니다.      |

## 필드 유형

일반적인 필드 유형으로는 `text`, `number`, `currency`, `progress`, `rating`, `checkbox`, `singleSelect`, `multiSelect`, `person`, `group`, `date`, `attachment`, `formula`, `createdAt`, `updatedAt`, `createdBy`, `updatedBy`가 있습니다.

애플리케이션 코드를 작성할 때는 Facade 열거형을 사용하세요.

```ts
const field = table.addField('Due date', univerAPI.Enum.BaseFieldType.Date)
```

## 레코드 스냅샷

| 속성         | 유형                                | 설명                   |
| ---------- | --------------------------------- | -------------------- |
| id         | `string`                          | 레코드 ID입니다.           |
| values     | `Record\<string, BaseCellValue\>` | 필드 ID를 키로 사용하는 값입니다. |
| orderKey   | `string`                          | 안정적인 정렬 키입니다.        |
| createdAt  | `number`                          | 생성 타임스탬프입니다.         |
| updatedAt  | `number`                          | 업데이트 타임스탬프입니다.       |
| createdBy? | `string`                          | 생성자 ID입니다.           |
| updatedBy? | `string`                          | 마지막 업데이트 사용자 ID입니다.  |

## Facade 예제

```ts
const table = base.insertTable('Tasks', { primaryFieldName: 'Title' })
const title = table.getPrimaryField()
const status = table.addField('Status', univerAPI.Enum.BaseFieldType.SingleSelect)

const record = table.addRecord({
  [title.getId()]: 'Write guide',
  [status.getId()]: 'In progress',
})
```
