# 기본키

## Content

기본키는 데이터 테이블에서 각 레코드를 고유하게 식별하는 필드 또는 필드의 조합입니다. 포건시에서 기본키는 데이터 작업의 정확성과 애플리케이션 성능을 보장하는 데 중요한 역할을 합니다.

***

<br>
### 내장 테이블의 기본키

포건시에서 내장 테이블을 생성하면 시스템이 자동으로 **ID**라는 이름의 정수형 기본 키를 생성합니다. 이 기본 키는 포건시 빌에서 별도의 설정 없이 자동으로 관리됩니다.

* 내장 테이블의 기본키는 포건시 내부에서 자동으로 관리되므로 개발자가 별도로 설정할 필요가 없습니다.
* 내장 테이블은 복합 기본키(조합 기본키) 설정을 직접 지원하지 않습니다. 복합 기본 키가 필요한 경우 내장 테이블을 외부 연결 테이블로 변환한 후 외부 데이터베이스에서 설정하는 것을 권장합니다.


***

<br>
### 외부 연결 테이블의 기본키

SQL Server, MySQL, Oracle 등 외부 데이터베이스의 테이블을 연결할 때, 포건시는 해당 테이블의 기본키 정보를 자동으로 가져옵니다. 외부 연결 테이블이 정상적으로 동작하려면 **대상 테이블에 고유하고 NULL이 아닌 기본키가 하나 이상 설정되어 있어야 합니다.**
**중요 사항:**

* 외부 연결 테이블에 기본키가 이미 정의되어 있으면 포건시가 자동으로 인식하고 빌더의 필드 옆에 "열쇠" 아이콘으로 표시합니다.
* 기본키가 정의되어 있지 않은 경우 포건시는 **고유하고 NULL이 아닌** 필드를 기본키 대체 항목으로 사용합니다.
* 외부 연결 테이블의 기본키는 반드시 **원본 데이터베이스에서 설정**해야 하며, 포건시 빌더 내에서 직접 추가할 수 없습니다.


#### 기본 키 필드 유형 제한

외부 연결 테이블의 기본키 필드를 선택할 때 아래 데이터 유형은 **사용할 수 없습니다.**

| 기본 키로 사용 불가한 데이터 유형 |
| ------------------- |
| text, ntext |
| Binary, Varbinary, image |
| hierarchyid, xml |
| sql\_variant |
| geometry, geography |


#### 외부 연결 뷰의 기본 키 설정

외부 데이터베이스의 뷰(View)에 대해서는 포건시에서 직접 기본키를 지정할 수 있습니다. 뷰를 가져온 후 고유 제약 조건이 있는 필드를 기본키로 수동 설정하면 됩니다.

***

<br>
### 기본키와 포건시 기능의 관계

포건시의 많은 핵심 기능이 기본키를 기반으로 동작합니다.

* **현재 행 메커니즘**: 기본키를 통해 현재 선택된 데이터 행을 식별합니다.
* **페이지 데이터 바인딩**: 기본키를 기준으로 데이터 테이블 필드를 페이지 셀에 바인딩합니다.
* **데이터 수정 및 삭제 작업**: 기본키를 통해 대상 레코드를 정확히 식별합니다.

따라서 기본키를 올바르게 설정하는 것이 이러한 기능들이 정상적으로 동작하기 위한 전제 조건입니다.