관계
관계는 두 엔티티가 업무에서 어떻게 연결되는지 나타냅니다. 방향과 저장 방식, 카디널리티를 정하고 필요한 경우 관계 속성과 실제 데이터를 관리합니다.
영역: 관계 만들기 창에서 저장 방식, 카디널리티, 외래 키 참조 컬럼 또는 구성 관계가 표시된 상태. 실제 모델 이름은 테스트 값만 사용합니다.
관계 만들기
온톨로지 빌더의 캔버스에서 관계를 만듭니다.
- 소스 엔티티의 연결점을 대상 엔티티로 끌어다 놓습니다.
- 관계 만들기 창이 열립니다.
- 이름, 별칭, 설명과 태그를 입력합니다.
- 저장 방식과 카디널리티를 선택합니다.
- 저장 방식에 필요한 참조 컬럼 또는 구성 관계를 지정합니다.
- 링크 테이블을 선택했다면 필요한 관계 속성을 정의합니다.
- 만들기를 선택합니다.

관계를 저장하려면 양 끝 엔티티에 식별 키가 있어야 합니다. 저장 방식은 관계를 만든 뒤 바꿀 수 없습니다.
링크 테이블에 스키마를 추가한 뒤에는 기존 속성의 삭제·이름 변경, 타입·NULL 허용 여부 변경, 식별 키 변경을 지원하지 않습니다. 이 항목을 바꾸려면 관계를 삭제하고 다시 만들어야 합니다. 삭제하기 전에 관계를 참조하는 파이프라인을 확인합니다.
기본 정보
- 소스 엔티티: 관계가 시작되는 주체입니다.
- 대상 엔티티: 관계가 향하는 대상입니다.
- 이름: 관계의 이름입니다. 영문 소문자로 시작하고 소문자·숫자·밑줄만 사용하는
lower_snake_case로 입력합니다. 예:knows,contains. 그래프 조회 언어인 Cypher에서 이 이름을 사용합니다. - 별칭: 화면에 대표로 보여줄 이름입니다.
- 설명: 관계의 용도와 의미를 기록합니다. AI로 설명을 제안받습니다.
- 모델: 관계가 속할 현재 온톨로지 모델입니다.
저장 방식 선택하기
| 저장 방식 | 사용할 때 | 속성·데이터 탭 |
|---|---|---|
| 링크 테이블 | 관계 전용 행과 관계 자체의 속성이 필요합니다. | 관계 스키마와 데이터를 직접 관리합니다. |
| 외래 키 컬럼 | 소스 엔티티의 기존 컬럼이 대상 엔티티의 식별 키를 담고 있습니다. | 자체 관계 테이블과 관계 속성이 없습니다. |
| 중간 엔티티 경유 | 이미 존재하는 두 관계를 이어 파생 관계로 표시합니다. | 데이터는 중간 엔티티와 구성 관계에 있으며 자체 데이터 탭은 사용하지 않습니다. |
링크 테이블
기본 저장 방식입니다. N:N, N:1, 1:N, 1:1 카디널리티를 모두 선택할 수 있고 관계 속성을 함께 저장합니다.
외래 키 컬럼
소스 엔티티에서 대상 엔티티의 식별 키에 대응하는 참조 컬럼을 선택합니다. 각 대상 키와 데이터 타입이 같고 NULL을 허용하는 소스 컬럼만 선택할 수 있습니다.
외래 키 컬럼은 소스 행 하나가 대상 하나를 가리키므로 N:1 또는 1:1만 지원합니다. 관계를 만들면 기존 컬럼 값을 읽어 그래프 연결을 채웁니다. 다음 상태를 관계 상세에서 확인합니다.
- 그래프를 채우는 중입니다: 기존 행에서 연결을 만드는 중입니다.
- 그래프 적재에 실패했습니다: 관계와 원본 데이터는 유지되지만 그래프 반영이 뒤처졌습니다. 다시 시도로 적재를 재실행합니다.
중간 엔티티 경유
첫 번째 관계와 두 번째 관계를 선택합니다. 첫 번째 관계의 대상과 두 번째 관계의 소스가 같은 중간 엔티티여야 하며, 전체 경로의 시작과 끝이 새 관계의 소스·대상과 일치해야 합니다.
카디널리티는 두 구성 관계에서 유도되므로 직접 바꿀 수 없습니다. 캔버스에서 경유 접기를 사용하면 중간 엔티티와 구성 관계를 숨기고 파생 관계를 한 홉으로 확인합니다.
카디널리티 정하기
| 값 | 의미 |
|---|---|
| 다대다 (N:N) | 소스와 대상이 서로 여러 인스턴스와 연결됩니다. |
| 다대일 (N:1) | 소스 인스턴스 하나는 대상 하나와 연결됩니다. |
| 일대다 (1:N) | 대상 인스턴스 하나는 소스 하나와 연결됩니다. |
| 일대일 (1:1) | 양쪽 인스턴스가 각각 반대쪽 하나와 연결됩니다. |
링크 테이블 관계의 카디널리티는 만든 뒤에도 편집합니다. 기존보다 제약을 조이는 변경을 저장하면 먼저 위반 행을 검사합니다. 위반이 없으면 새 제약을 적용합니다. 위반이 있으면 카디널리티를 조일 수 없습니다 창에서 중복 키와 관련 행 수를 확인합니다.
어떤 연결을 남길지는 업무 판단이 필요하므로 D.Hub가 중복 행을 자동 삭제하지 않습니다. 관계 데이터를 정리한 뒤 카디널리티 변경을 다시 저장합니다.
스키마 — 식별 키 / 표시 컬럼
링크 테이블 관계는 엔티티와 마찬가지로 스키마 정보를 함께 가집니다.
- 식별 키: 관계 스키마를 정의한 경우 관계 데이터를 구별할 키 컬럼을 선택합니다. 링크 테이블 관계는 자체 속성이나 식별 키 없이도 만들 수 있습니다. 파이프라인 편집기에서는 관계 노드에 키 경고가 표시될 수 있으므로 입출력으로 사용하기 전에 대상 스키마와 실행 결과를 확인합니다.
- 표시 컬럼: 각 관계를 대표하는 이름으로 표시할 컬럼입니다.
데이터 적재
링크 테이블 관계의 데이터 탭에서 CSV·JSON·Parquet 파일을 올리거나, 파이프라인의 코드 출력을 관계에 연결해 데이터를 적재합니다. 파이프라인은 필드를 자동으로 연결하지 않으므로 코드 출력의 컬럼 이름과 타입을 관계 스키마에 맞춥니다.
외래 키 관계는 소스 엔티티의 참조 컬럼을 수정해 연결을 바꿉니다. 중간 엔티티 경유 관계는 두 구성 관계의 데이터를 사용합니다.
데이터 탭
관계 데이터는 페이지별로 조회합니다. 식별 키, 표시 컬럼, 나머지 속성 순서로 표시하며 새로고침·파일 업로드·다운로드·그래프 탐색기에서 열기·테이블 초기화를 실행합니다. 초기화의 확인 절차를 포함한 자세한 동작은 엔티티 데이터 탭과 같습니다.
관계 편집 및 삭제
- 캔버스에서 연결선을 클릭하면 오른쪽 패널에 상세 정보가 나타납니다.
- 이 패널에서 별칭·설명·태그와 링크 테이블 관계의 카디널리티를 고칩니다. 관계 이름, 소스·대상 엔티티와 저장 방식은 읽기 전용으로 표시됩니다.
- 연결선을 고른 뒤
Delete키를 누르면 관계가 삭제됩니다.
여러 관계를 새로 정의하려면 모델링의 AI 관계 제안에서 현재 컬렉션의 엔티티를 분석하고 소스·관계·대상을 검토해 선택한 제안만 생성합니다. 선택한 컬렉션의 모든 관계·엔티티 타입을 제거하는 작업은 온톨로지 데이터 초기화에서 대상과 진행 상태를 확인한 뒤 실행합니다.