1:N 관계 (일대다)
1:N 관계는 가장 많이 사용하는 관계 타입입니다. 부모 테이블 하나에 자식 행이 여러 개 연결됩니다. 화면에서는 서브테이블(표 안의 표)로 나타나며, 전표(Document) 화면의 핵심입니다.
소개
1:N 관계는 "하나에 여러 개"가 연결되는 관계입니다. 제조업 앱에서 가장 흔한 구조이며, 발주서-발주품목, 작업지시-작업실적, 입고전표-입고품목 등 거의 모든 전표형 업무가 이 관계를 사용합니다.
| 품목 | 수량 | 단가 | 금액 | |
|---|---|---|---|---|
| 볼트 M8 | 500 | 100 | 50,000 | ← 자식 행 1 |
| 너트 M8 | 500 | 80 | 40,000 | ← 자식 행 2 |
| 와셔 M8 | 1,000 | 50 | 50,000 | ← 자식 행 3 |
이렇게 보입니다
캔버스에서의 모습
캔버스에서 1:N 관계는 부모 테이 블에서 자식 테이블로 화살표가 그어지며, "1" 과 "N" 이 표시됩니다.
양식(Form)에서의 모습 - 서브테이블
1:N 관계가 설정된 양식에서, 자식 테이블은 부모 양식 안에 서브테이블(인라인 테이블)로 나타납니다.
이것이 1:N 관계의 핵심 결과물입니다. 부모 양식 안에 자식 데이터를 표 형태로 입력/조회할 수 있습니다.
| # | 품목 | 수량 | 단가 | 금액 |
|---|---|---|---|---|
| 1 | 볼트M8 | 500 | 100 | 50,000 |
| 2 | 너트M8 | 500 | 80 | 40,000 |
| 3 | 와셔M8 | 1000 | 50 | 50,000 |
전표(Document) 화면에서의 모습
전표 화면에서 1:N 관계는 헤더(부모)+라인아이템(자식) 구조로 표현됩니다. 전표의 핵심 구조입니다.
전표 화면은 1:N 관계의 가장 대표적인 활용입니다. 자세한 내용은 전표 화면을 참고하세요.
목록(List)에서의 모습
자식 테이블의 목록에서는 부모를 참조하는 FK 컬럼이 텍스트로 표시됩니다.
자식 테이블(발주품목)의 목록 화면에서 부모(발주서) FK 컬럼은 다음과 같이 표시됩니다:
| 품목코드 | 수량 | 단가 | 금액 | 발주서 |
|---|---|---|---|---|
| 볼트M8 | 500 | 100 | 50,000 | PO-2025-001 |
| 너트M8 | 500 | 80 | 40,000 | PO-2025-001 |
| 와셔M8 | 1,000 | 50 | 50,000 | PO-2025-001 |
설정 방법
1단계: 관계 생성
- 캔버스에서 부모 테이블(발주서)에서 자식 테이블(발주품목)로 드래그합니다
- 관계 속성 패널에서 "1:N" 을 선택합니다
2단계: 표시 컬럼 설정
부모 테이블의 displayColumn을 설정합니다. 이 값이 자식의 FK 드롭다운과 목록에 표시됩니다.
| displayColumn | 표시 예시 |
|---|---|
| 발주번호 | PO-2025-001 |
| 발주번호 + 거래처 | PO-2025-001 (주)A사 |
3단계: 서브테이블 컬럼 설정
자식 테이블에서 서브테이블에 표시할 컬럼을 선택합니다.
| 설정 | 설명 |
|---|---|
| 표시 컬럼 | 서브테이블에 보여줄 컬럼 선택 |
| 컬럼 순서 | 서브테이블 내 컬럼 순서 지정 |
| 컬럼 너비 | 각 컬럼의 너비 조절 |
| 편집 가능 여부 | 서브테이블에서 직접 편집할 수 있는지 설정 |
서브테이블 주요 기능
서브테이블에서 제공하는 편리한 기능들:
| 기능 | 설명 |
|---|---|
| 행 추가 | 하단의 "+" 버튼으로 새 행 추가 |
| 행 삭제 | 행 선택 후 삭제 버튼 또는 Delete 키 |
| 행 이동 | 드래그로 행 순 서 변경 |
| 인라인 편집 | 셀을 클릭하여 바로 값 입력 |
| 합계 행 | 숫자 컬럼의 합계를 자동 표시 |
| 자동 계산 | 수량 x 단가 = 금액 같은 수식 |
| 품목 검색 | FK 컬럼에서 검색으로 품목 선택 |
서브테이블의 수식 설정(lineFormula), 품목 자동채움(itemLookup) 등 상세 기능은 서브테이블 상세 설정에서 자세히 다룹니다.
실무 예시
ERP - 구매 모듈
| 부모 테이블 | 자식 테이블 | 설명 |
|---|---|---|
| 발주서 | 발주품목 | 발주서 1건에 여러 품목 |
| 입고전표 | 입고품목 | 입고 1건에 여러 품목 |
| 거래처 | 발주서 | 거래처 1곳에 여러 발주 |
MES - 생산 모듈
| 부모 테이블 | 자식 테이블 | 설명 |
|---|---|---|
| 작업지시 | 작업실적 | 지시 1건에 여러 실적 기록 |
| 생산계획 | 생산지시 | 계획 1건에 여러 공정 지시 |
| 작업지시 | 자재투입 | 지시 1건에 여러 자재 투입 |
QMS - 품질 모듈
| 부모 테이블 | 자식 테이블 | 설명 |
|---|---|---|
| 수입검사 | 검사항목 | 검사 1건에 여러 검사 항목 |
| 불량보고서 | 불량상세 | 보고서 1건에 여러 불량 상세 |
자주 묻는 질문
Q: 서브테이블에 최대 몇 행까지 입력할 수 있나요? A: 기술적 제한은 없으나, 화면 성능을 위해 1건당 100행 이내를 권장합니다.
Q: 서브테이블의 행을 다른 테이블에서 참조할 수 있나요? A: 네, 자식 테이블도 독립적인 테이블이므로 다른 테이블과 추가 관계를 맺을 수 있습니다.
Q: 1:N에서 자식 테이블 없이 부모만 저장할 수 있나요? A: 네, 서브테이블에 행을 추가하지 않고 부모 데이터만 저장할 수 있습니다.
Q: 자식 행을 삭제하면 어떻게 되나요? A: 서브테이블에서 행을 삭제하고 저장하면 해당 자식 데이터가 삭제됩니다. 삭제 전 확인 대화상자가 나타납니다.
다음 단계
- M:N 관계 - 다대다 관계
- 서브테이블 상세 설정 - lineFormula, itemLookup 등 고급 기능
- 전표 화면 - 1:N 관계를 활용한 전표 화면