1:1 관계 (일대일)
1:1 관계는 하나에 하나가 대응하는 관계입니다. 화면에서는 FK 드롭다운으로 나타나며, 참조 대상을 목록에서 선택할 수 있습니다.
소개
1:1 관계는 두 테이블의 데이터가 정확히 하나씩 대응하는 관계입니다. 실무에서는 테이블을 분리하여 관리할 때 주로 사용합니다.
예시: 직원 테이블과 사원증 테이블
- 직원 1명에 사원증 1개
- 사원증 1개는 직원 1명에게만 귀속
이렇게 보입니다
캔버스에서의 모습
캔버스에서 1:1 관계는 두 테이블 사이에 직선으로 표시됩니다. 양쪽 끝에 "1"이 표시됩니다.
양식(Form)에서의 모습
1:1 관계가 설정되면 양식에서 FK 드롭다운이 나타납니다. 클릭하면 참조 대상 목록이 펼쳐집니다.
양식에서 FK(외래키) 컬럼은 드롭다운 선택 형태로 나타납니다:
드롭다운을 클릭하면 직원 목록이 나타나고, 원하는 직원을 선택할 수 있습니다.
목록(List)에서의 모습
목록에서는 FK 컬럼에 참조 대상의 표시 컬럼(displayColumn) 값이 텍스트로 나타납니다.
| 카드번호 | 직원 | 발급일 | 만료일 |
|---|---|---|---|
| EMP-001-2025 | 홍길동 | 2025-01-15 | 2027-01-15 |
| EMP-002-2025 | 김영희 | 2025-02-01 | 2027-02-01 |
설정 방법
1단계: 관계 생성
- 캔버스에서 한 테이블 노드에서 다른 테이블 노드로 드래그합니다
- 관계 속성 패널에서 "1:1" 을 선택합니다
2단계: displayColumn 설정
displayColumn은 FK 드롭다운에 어떤 값을 표시할지 결정합니다.
| displayColumn 설정 | 드롭다운에 표시되는 값 |
|---|---|
| 이름 | 홍길동, 김영희 |
| 사번 | EMP001, EMP002 |
| 사번 + 이름 | EMP001 홍길동, EMP002 김영희 |
displayColumn은 사용자가 한눈에 식별할 수 있는 컬럼으로 설정하세요. 보통 이름이나 코드+이름 조합을 사용합니다.
3단계: 배포 및 확인
- 배포 버튼을 클릭합니다
- FK가 있는 테이블의 양식 화면을 확인합니다
- FK 드롭다운이 제대로 표시되는지 확인합니다
실무 예시
직원 - 사원증
| 테이블 | 컬럼 | 역할 |
|---|---|---|
| 직원 | 사번, 이름, 부서, 입사일 | 부모 테이블 |
| 사원증 | 카드번호, 직원(FK), 발급일, 만료일 | 자식 테이블 |
설비 - 설비 상세정보
| 테이블 | 컬럼 | 역할 |
|---|---|---|
| 설비 | 설비코드, 설비명, 위치 | 부모 테이블 |
| 설비상세 | 제조사, 모델명, 구매일, 설비(FK) | 자식 테이블 |
1:1 관계에서는 이미 다른 행에서 참조 중인 대상은 드롭다운에서 선택할 수 없습니다. 예를 들어 직원 A에게 이미 사원증이 발급되었다면, 다른 사원증에서 직원 A를 선택할 수 없습니다.
1:1 vs 1:N 구분
헷갈리기 쉬운 1:1과 1:N의 차이:
| 질문 | 1:1 | 1:N |
|---|---|---|
| A 하나에 B가 몇 개? | 최대 1개 | 여러 개 |
| 화면 모습 | FK 드롭다운 (단일 선택) | 서브테이블 (여러 행) |
| 예시 | 직원-사원증 | 발주서-발주품목 |
자주 묻는 질문
Q: 1:1 관계에서 FK가 어느 쪽 테이블에 생기나요? A: 관계를 만들 때 드래그 방향에 따라 결정됩니다. 보통 "종속되는 쪽" 테이블에 FK가 생깁니다. (사원증 테이블에 직원 FK가 생김)
Q: displayColumn을 여러 개 설정할 수 있나요? A: 기본적으로 하나의 컬럼을 선택하지만, 코드+이름 조합 등 복합 표시가 가능합니다.
Q: 1:1 관계를 나중에 1:N으로 변경할 수 있나요? A: 배포 전이라면 변경 가능합니다. 배포 후에는 데이터 구조 영향이 있으므로 주의가 필요합니다.