콘텐츠데이터모델
관계
데이터모델 간의 관계를 설정하세요.
왜 관계가 필요한가?
데이터 간의 연결이 없으면 중복과 불일치 문제가 발생합니다.
관계 없이 관리하는 경우
| 주문 ID | 고객명 | 고객 이메일 | 고객 전화번호 | 상품명 |
|---|---|---|---|---|
| 001 | 김철수 | [email protected] | 010-1234-5678 | 노트북 |
| 002 | 김철수 | [email protected] | 010-1234-5678 | 마우스 |
| 003 | 김철수 | [email protected] | 010-1234-0000 | 키보드 |
❌ 문제점:
- 고객 정보가 중복 입력됨
- 이메일/전화번호가 불일치함
- 고객 정보 수정 시 모든 행을 수정해야 함
관계로 관리하는 경우
고객 데이터모델
| 고객 ID | 고객명 | 이메일 | 전화번호 |
|---|---|---|---|
| C001 | 김철수 | [email protected] | 010-1234-5678 |
주문 데이터모델
| 주문 ID | 고객 (관계) | 상품명 |
|---|---|---|
| 001 | → 김철수 | 노트북 |
| 002 | → 김철수 | 마우스 |
| 003 | → 김철수 | 키보드 |
✅ 장점:
- 고객 정보 한 곳에서 관리
- 항상 일관된 정보 표시
- 수정 시 한 번만 변경
관계 타입
슈츠는 네 가지 관계 타입을 지원합니다.
일대일 (One-to-One)
하나의 항목이 정확히 하나의 항목과 연결됩니다.
사용자 ←→ 프로필
│ │
A ─────── A의 프로필
B ─────── B의 프로필예시:
- 사용자 ↔ 프로필
- 직원 ↔ 급여 정보
- 주문 ↔ 배송 정보
일대다 (One-to-Many)
하나의 항목이 여러 항목과 연결됩니다.
프로젝트 ──→ 태스크
│
A ────┬── 태스크 1
├── 태스크 2
└── 태스크 3예시:
- 고객 → 주문 (한 고객이 여러 주문)
- 프로젝트 → 태스크 (한 프로젝트에 여러 태스크)
- 부서 → 직원 (한 부서에 여러 직원)
- 카테고리 → 상품 (한 카테고리에 여러 상품)
다대일 (Many-to-One)
여러 항목이 하나의 항목과 연결됩니다. (일대다의 역방향)
태스크 ──→ 프로젝트
│
태스크 1 ──┐
태스크 2 ──┼── 프로젝트 A
태스크 3 ──┘예시:
- 주문 → 고객 (여러 주문이 한 고객)
- 태스크 → 프로젝트 (여러 태스크가 한 프로젝트)
- 직원 → 부서 (여러 직원이 한 부서)
다대다 (Many-to-Many)
여러 항목이 여러 항목과 연결됩니다.
태스크 ←→ 태그
│ │
태스크1 ─┬─ 긴급
├─ 버그
태스크2 ─┼─ 긴급
└─ 개선예시:
- 태스크 ↔ 담당자 (한 태스크에 여러 담당자, 한 담당자가 여러 태스크)
- 상품 ↔ 태그 (한 상품에 여러 태그, 한 태그에 여러 상품)
- 학생 ↔ 수업 (한 학생이 여러 수업, 한 수업에 여러 학생)
관계 설정하기
1단계: 관계 속성 추가
- 데이터모델에서 + 속성 추가 클릭
- 속성 타입에서 관계(Relation) 선택
- 속성 이름 입력 (예: "담당 프로젝트", "주문 고객")
2단계: 연결할 데이터모델 선택
드롭다운에서 연결할 대상 데이터모델을 선택합니다.
3단계: 관계 타입 설정
| 설정 | 설명 |
|---|---|
| 단일 선택 | 하나의 항목만 연결 (다대일, 일대일) |
| 다중 선택 | 여러 항목 연결 가능 (다대다, 일대다) |
4단계: 양방향 관계 설정 (선택)
역방향 관계 속성 생성을 체크하면 연결된 데이터모델에도 자동으로 관계 속성이 생성됩니다.
태스크 ──→ 프로젝트 (태스크에서 프로젝트 선택)
↓
프로젝트 ──→ 태스크들 (프로젝트에서 관련 태스크 목록 표시)양방향 관계를 설정하면 양쪽 데이터모델에서 모두 관련 데이터를 확인할 수 있어 편리합니다.
관계 속성 사용하기
데이터 연결
관계 속성 셀을 클릭하면 연결할 수 있는 항목 목록이 표시됩니다.
- 셀 클릭
- 검색하거나 목록에서 선택
- 연결 완료
연결된 데이터 보기
관계 셀을 클릭하면 연결된 항목의 미리보기가 표시됩니다. 클릭하여 상세 페이지로 이동할 수 있습니다.
표시 속성 설정
관계 셀에 표시할 대상 데이터모델의 속성을 선택할 수 있습니다.
- 관계 속성 설정 열기
- 표시 속성 선택
- 셀에 표시할 속성 체크 (예: 이름, 상태)
롤업
**롤업(Rollup)**은 관계된 데이터의 값을 집계하여 표시하는 속성입니다.
롤업 함수
| 함수 | 설명 | 예시 |
|---|---|---|
| COUNT | 연결된 항목 수 | 주문 수: 5 |
| SUM | 숫자 속성의 합 | 총 주문 금액: ₩500만 |
| AVERAGE | 숫자 속성의 평균 | 평균 주문 금액: ₩100만 |
| MIN | 최소값 | 최소 주문 금액: ₩50만 |
| MAX | 최대값 | 최대 주문 금액: ₩200만 |
| MEDIAN | 중앙값 | 중앙 주문 금액: ₩100만 |
롤업 설정하기
- + 속성 추가 → 롤업(Rollup) 선택
- 관계 속성 선택: 집계할 관계 속성
- 대상 속성 선택: 집계할 속성 (숫자 타입)
- 집계 함수 선택: COUNT, SUM, AVERAGE 등
롤업 예시
고객 데이터모델
| 고객명 | 주문 (관계) | 총 주문 금액 (롤업) | 주문 건수 (롤업) |
|---|---|---|---|
| 김철수 | 주문1, 주문2, 주문3 | ₩450만 | 3 |
| 이영희 | 주문4, 주문5 | ₩280만 | 2 |
설정:
- 총 주문 금액: 관계=주문, 속성=금액, 함수=SUM
- 주문 건수: 관계=주문, 속성=-, 함수=COUNT
활용 패턴
CRM (고객 관계 관리)
고객사 ─────────────< 담당자
│ │
├───────────────< 영업기회
│ │
└───────────────< 미팅기록| 데이터모델 | 관계 | 롤업 |
|---|---|---|
| 고객사 | 담당자들, 영업기회들 | 총 예상 매출(SUM), 진행중 딜 수(COUNT) |
| 담당자 | 소속 고객사 | - |
| 영업기회 | 고객사, 담당자 | - |
| 미팅기록 | 고객사, 영업기회 | - |
프로젝트 관리
프로젝트 ─────────< 마일스톤
│ │
│ ├────────< 태스크
│ │
└─────────────────┘
태스크 ←────────→ 담당자 (다대다)| 데이터모델 | 관계 | 롤업 |
|---|---|---|
| 프로젝트 | 마일스톤들 | 완료율(COUNT 완료/COUNT 전체) |
| 마일스톤 | 소속 프로젝트, 태스크들 | 태스크 완료율 |
| 태스크 | 마일스톤, 담당자들 | - |
인사 관리
부서 ─────────────< 직원
│ │
└──────────────< 프로젝트 (부서별)
│
└───────→ 직원 (프로젝트 멤버, 다대다)| 데이터모델 | 관계 | 롤업 |
|---|---|---|
| 부서 | 소속 직원들 | 직원 수, 평균 연봉 |
| 직원 | 소속 부서, 참여 프로젝트 | 참여 프로젝트 수 |
| 프로젝트 | 주관 부서, 멤버들 | 멤버 수 |
재고 관리
카테고리 ─────────< 상품
│
입출고 >─────────────┘| 데이터모델 | 관계 | 롤업 |
|---|---|---|
| 카테고리 | 상품들 | 상품 수, 총 재고 가치 |
| 상품 | 카테고리, 입출고 내역 | 현재 재고(입고SUM - 출고SUM) |
| 입출고 | 상품 | - |
관계 설계 팁
1. 중복 데이터 피하기
같은 정보가 여러 곳에 입력되면 관계로 분리하세요.
❌ 잘못된 예:
주문: 고객명, 고객이메일, 고객전화, 상품명, 상품가격...
✅ 좋은 예:
주문 → 고객 (관계)
주문 → 상품 (관계)2. 양방향 관계 활용
단방향보다 양방향 관계를 설정하면 양쪽에서 모두 데이터를 확인할 수 있습니다.
3. 롤업으로 집계 자동화
수동으로 합계를 계산하는 대신 롤업을 사용하세요. 데이터가 변경되면 자동으로 업데이트됩니다.
4. 명확한 관계명 사용
관계 속성 이름은 의미가 명확해야 합니다.
❌ 모호한 예: "관련 데이터", "링크"
✅ 명확한 예: "담당 프로젝트", "주문 고객", "할당된 태스크"테일러로 관계 설정하기
테일러에게 전체 시스템을 요청하면 관계까지 자동으로 설정됩니다.
B2B 영업팀을 위한 CRM 시스템을 만들어줘.
고객사, 담당자, 영업기회, 미팅기록을 관리하고 싶어.
각 고객사에는 여러 담당자가 있고,
영업기회는 특정 고객사와 연결되어야 해.테일러가 생성하는 결과:
- 고객사 데이터모델 (담당자, 영업기회 관계 포함)
- 담당자 데이터모델 (소속 고객사 관계)
- 영업기회 데이터모델 (고객사, 담당자 관계)
- 미팅기록 데이터모델 (고객사, 영업기회 관계)