인덱스/제약조건
Schema Editor에서 PK, FK, Index(Unique 포함)를 관리하는 방법을 안내합니다.
관리 위치
PK, FK, Index, Constraint는 테이블 상세 화면에서 관리합니다. ERD 노드에서 바로 열 수도 있고, 좌측 트리의 테이블 상세 탭에서도 같은 편집기를 사용할 수 있습니다.
| 위치 | 진입 방법 | 사용 목적 |
|---|---|---|
| ERD 하단 상세 패널 | ERD에서 테이블을 선택하면 하단에 Table Columns, Foreign Keys, Indexes, Constraints 섹션이 표시됩니다. | ERD 관계선을 보면서 FK/Index/Constraint를 빠르게 추가하거나 삭제할 때 사용합니다. |
| Schema Editor 상세 탭 | 테이블 선택 후 "상세 탭에서 보기"를 누르거나 좌측 테이블 목록에서 테이블을 엽니다. | 테이블 정보와 컬럼, FK, Index, Constraint를 넓은 화면에서 상세히 편집할 때 사용합니다. |
Primary Key (PK)
테이블의 기본 키를 설정하고 관리합니다.
Schema Editor에서 PK 설정
테이블을 열면 Table Columns 그리드가 표시됩니다. PK로 지정할 컬럼의 "PK" 체크박스를 선택합니다.
복합 PK 설정
여러 컬럼의 PK 체크박스를 선택하면 복합 Primary Key가 설정됩니다.

PK가 설정된 컬럼은 하단 Indexes 섹션에 Type이 "UNIQUE"인 PRIMARY 인덱스로 자동 표시됩니다.
참고: PK로 지정한 컬럼은 자동으로 Not Null이 적용됩니다. PK 변경은 컬럼 하나의 일반 수정이 아니라 테이블의 primaryKeys 변경으로 추적되어 DB 반영 시 PK ALTER DDL에 포함됩니다.
Foreign Key (FK)
테이블 간 참조 관계를 설정하는 외래 키를 관리합니다.
Foreign Keys 섹션 확인
Foreign Keys 섹션에서 현재 테이블이 보유한 FK 목록을 확인합니다. ERD 관계선으로 만든 FK도 이 목록에 표시됩니다.

FK 추가
"+ ADD FOREIGN KEY" 버튼을 클릭하면 FK 추가 모달이 열립니다.
참조 테이블 및 컬럼 매핑
모달에서 참조할 테이블을 선택하면 해당 테이블의 PK 컬럼이 자동으로 표시됩니다. 현재 테이블의 컬럼 중 타입이 호환되는 컬럼을 매핑하거나, "New Column" 스위치를 켜서 새 컬럼을 생성할 수 있습니다.
FK 이름 확인
FK 이름은 fk_{참조테이블}_to_{현재테이블} 형식으로 자동 생성됩니다. 필요시 직접 수정할 수 있습니다.

| FK 목록 컬럼 | 설명 |
|---|---|
| FK Name | 외래 키 이름 |
| FK Column(s) | 현재 테이블의 FK 컬럼 |
| Referenced Table | 참조하는 테이블 |
| Referenced Column(s) | 참조하는 테이블의 컬럼 |
| Actions | FK 삭제 버튼 |
FK 매핑 옵션
| 옵션 | 동작 |
|---|---|
| Referenced Table 선택 | 커넥션의 스키마별 테이블 목록에서 참조 테이블을 선택합니다. 메타데이터가 아직 로드되지 않은 테이블은 선택 시 on-demand로 로드합니다. |
| 기존 컬럼 매핑 | 참조 PK 컬럼과 타입이 호환되고, 삭제되지 않았으며, 이미 다른 FK에 사용되지 않은 컬럼만 선택지로 표시됩니다. 자기참조 FK에서는 자기 PK 컬럼을 FK 컬럼으로 선택하지 않습니다. |
| New Column | 호환 컬럼이 없거나 새 FK 컬럼을 만들고 싶을 때 켭니다. 컬럼명을 입력하고 N/N 옵션으로 새 컬럼의 Not Null 여부를 지정합니다. |
| Deferrable | DBMS가 FK deferrable 제약을 지원하는 경우에만 표시됩니다. DEFERRABLE과 INITIALLY IMMEDIATE/DEFERRED를 선택할 수 있습니다. |
참고: 식별/비식별 관계선으로 FK를 만들 때는 관계 모드에 따라 매핑 가능한 컬럼이 제한될 수 있습니다. 식별 관계는 PK 컬럼, 비식별 관계는 PK가 아닌 컬럼을 우선 사용합니다.
인덱스 관리
쿼리 성능 최적화를 위한 인덱스를 생성하고 관리합니다. Unique 제약조건도 인덱스 추가를 통해 설정합니다.
Indexes 섹션 확인
Indexes 섹션에서 현재 테이블의 인덱스 목록을 확인합니다. PRIMARY 인덱스와 일반/Unique 인덱스가 함께 표시됩니다.

인덱스 추가
"+ ADD INDEX" 버튼을 클릭하면 인덱스 추가 모달이 열립니다.
인덱스 이름 및 옵션 설정
인덱스 이름을 입력하고, Unique Index가 필요하면 "Unique" 체크박스를 선택합니다.
컬럼 선택 및 정렬 순서 설정
왼쪽 "Available Columns" 목록에서 인덱스에 포함할 컬럼을 선택하여 오른쪽 "Selected Columns"로 이동합니다. 드래그 앤 드롭 또는 화살표 버튼으로 컬럼을 이동/정렬할 수 있습니다. 선택된 컬럼의 정렬 순서(ASC/DESC)는 더블클릭으로 전환합니다.

| 인덱스 목록 컬럼 | 설명 |
|---|---|
| Index Name | 인덱스 이름 |
| Type | UNIQUE 또는 INDEX |
| Column(s) | 인덱스에 포함된 컬럼 목록 |
| Index Type | 인덱스 타입 (BTREE 등) |
| Actions | 인덱스 삭제 버튼 |
참고: Unique 인덱스는 Indexes 섹션에서 만들 수 있고, UNIQUE 제약조건은 Constraints 섹션에서도 만들 수 있습니다. 프로젝트에서는 둘 다 DB 반영 시 Unique 성격의 DDL로 처리됩니다.
- Selected Columns의 정렬 순서 칸을 더블클릭하면 ASC/DESC가 전환됩니다. 기본값은 ASC입니다.
- 컬럼은 드래그 앤 드롭으로 이동하거나 가운데/오른쪽 화살표 버튼으로 선택, 제외, 순서 변경할 수 있습니다.
- 인덱스 삭제 버튼을 누르면 확인 창이 표시되고, 확인하면 해당 인덱스 이름의 모든 컬럼 항목이 함께 삭제됩니다.
제약조건 관리
Constraints 섹션은 PK, FK, UNIQUE, CHECK, EXCLUSION 제약조건을 한 목록에서 보여줍니다. PK/FK는 기존 설정에서 파생되어 표시되고, UNIQUE/CHECK/EXCLUSION은 Add Constraint 모달로 추가하거나 수정할 수 있습니다.
Constraints 섹션 확인
Constraints 섹션에서 Name, Type, Definition, Deferrable, Actions를 확인합니다. PRIMARY_KEY와 FOREIGN_KEY는 읽기 전용 파생 행이고, UNIQUE/CHECK/EXCLUSION은 편집할 수 있습니다.
Add Constraint 클릭
"Add Constraint" 버튼을 클릭하고 Type에서 UNIQUE, CHECK, 또는 지원 DBMS의 EXCLUSION을 선택합니다.
이름과 정의 입력
Name을 직접 입력하거나 Auto 버튼으로 자동 생성합니다. UNIQUE는 컬럼을 체크하고, CHECK는 조건식을 입력하며, EXCLUSION은 PostgreSQL EXCLUDE 절 본문을 입력합니다.
Deferrable 및 저장
DBMS가 지원하는 경우 Deferrable 옵션을 설정한 뒤 Add Constraint를 클릭합니다. 추가된 제약조건은 테이블 변경사항으로 저장/DB 반영 대상이 됩니다.
| Type | 입력 항목 | 참고 |
|---|---|---|
| UNIQUE | 컬럼 체크박스 선택. 체크한 순서가 제약조건 컬럼 순서가 됩니다. | 컬럼 조합의 중복을 막는 제약조건입니다. 기존 Unique Index와 목적이 비슷하지만 Constraints 목록에서 별도 관리됩니다. |
| CHECK | 예: age >= 18 같은 CHECK Expression 입력 | DBMS가 CHECK 제약조건을 지원해야 실제 DB 반영 시 정상 적용됩니다. |
| EXCLUSION | 예: USING gist (room WITH =, during WITH &&) 같은 EXCLUDE 절 본문 입력 | PostgreSQL 등 EXCLUSION 제약을 지원하는 DBMS에서만 Type 옵션으로 표시됩니다. |
참고: Constraints 섹션에서 PK와 FK 행은 직접 수정하지 않습니다. PK는 Table Columns의 PK 체크박스로, FK는 Foreign Keys 섹션 또는 ERD 관계선으로 관리합니다.
