← posts/b.log()

blog92@web:~$ cat posts/db-design-03-conceptual-modeling.md

DATABASE4 min read

DB 설계 A to Z 3강 — 개념 모델링 (ER 모델)

엔티티·속성·관계라는 ER 모델의 3요소, 엔티티와 속성의 종류, 카디널리티와 참여도 표기, 이항 관계 셋으로 분해되지 않는 삼항 관계, 재귀 관계까지 개념 설계의 판단 기준을 정리한다.

2강에서 수집한 요구사항을 이제 개념 모델로 옮깁니다.

1. ER 모델의 3요소

Peter Chen(1976)이 제안한 ER 모델은 세 가지로 세상을 표현합니다.

요소의미예시
엔티티(Entity)독립적으로 식별 가능한 대상주문항목, 출고 담당자
속성(Attribute)엔티티나 관계의 성질주문항목 무게, 담당자 이름
관계(Relationship)엔티티 사이의 연관담당자가 처리단계를 수행한다

2. 엔티티의 종류

종류설명예시
강한 엔티티자기 속성만으로 식별 가능주문(주문번호)
약한 엔티티소유 엔티티가 있어야 식별 가능항목처리 차수(항목번호 + 차수)
기본 엔티티업무의 원천주문, 담당자, 처리단계
중심 엔티티기본 엔티티에서 파생된 업무 핵심주문항목, 출고지시
행위 엔티티업무 행위의 기록, 건수가 많고 자주 변경처리 실적, 검수결과

행위 엔티티는 데이터가 가장 많이 쌓이는 곳이므로 물리 설계의 주요 대상이 됩니다.

3. 속성의 종류

종류설명예시논리 설계 시 처리
단순 속성더 나눌 수 없음무게컬럼 1개
복합 속성여러 하위 속성으로 구성주소(시, 구, 도로명)하위 속성별 컬럼
단일값 속성값이 하나생년월일컬럼 1개
다중값 속성값이 여러 개담당자의 취급 자격별도 테이블
유도 속성다른 속성에서 계산처리율, 나이보통 저장하지 않음 (10강에서 예외 논의)
식별 속성엔티티를 식별항목번호PK 후보

다중값 속성을 콤마로 이어 한 컬럼에 넣는 것이 대표적인 안티패턴(Jaywalking)입니다. 개념 모델에서 다중값임을 표시해두면 이 실수를 막을 수 있습니다.

4. 관계의 성질

① 차수(Degree): 참여하는 엔티티 수

  • 단항(재귀): 담당자 ─ 담당자 (조장-조원)
  • 이항: 주문항목 ─ 처리단계
  • 삼항: 담당자 ─ 주문항목 ─ 처리단계 (누가 어느 주문항목의 어느 처리단계를 했는가)

② 카디널리티: 상대 엔티티와 대응하는 최대 수

  • 1:1 — 주문 ─ 결제
  • 1:N — 주문 ─ 주문항목
  • N:M — 주문항목 ─ 처리단계

③ 참여도(Participation): 최소 수

  • 전체 참여(필수): 모든 주문항목은 반드시 주문에 속한다
  • 부분 참여(선택): 모든 담당자가 조장은 아니다

카디널리티와 참여도를 합쳐 (최소, 최대) 로 표기하면 모호함이 사라집니다.

text
주문 (1,1) ─── 소속 ─── (1,N) 주문항목
  → 주문항목은 정확히 1개 주문에 속함
  → 주문은 주문항목이 1개 이상 (항목이 하나도 없는 주문은 성립하지 않음)

5. 삼항 관계는 이항 관계 셋과 다르다

"담당자 A가 주문항목 B의 처리단계 C를 수행했다"를 이항 관계 셋으로 쪼개면:

  • 담당자 ─ 주문항목: A가 B에서 일했다
  • 주문항목 ─ 처리단계: B는 C를 거친다
  • 담당자 ─ 처리단계: A는 C를 할 줄 안다

이 셋을 조합하면 "A가 B의 C를 했다"가 참인지 알 수 없습니다. A가 B의 포장을 했고, B는 출고를 거치고, A가 출고도 할 수 있어도 A가 B의 출고를 한 것은 아닐 수 있습니다. 세 엔티티가 동시에 결합된 사실은 삼항 관계로 모델링해야 합니다. 이 원리는 9강의 5NF와 직결됩니다.

6. 엔티티인가, 속성인가, 관계인가

판단 질문Yes면
그 자체로 다른 속성을 가지는가?엔티티
여러 엔티티가 공유하는가?엔티티
독립적으로 생성·삭제되는가?엔티티
시간에 따라 이력이 필요한가?엔티티 (또는 관계)
두 엔티티 사이에서만 의미가 있는가?관계 또는 관계의 속성

예시: "상품의 포장 색상"

  • 색상 코드와 이름만 있다면 → 상품의 속성
  • 색상마다 포장자재 제조사, 단가, 재고를 관리한다면 → 포장자재 엔티티, 상품과 관계

7. 재귀 관계

text
담당자 (0,1) ─── 조장이다 ─── (0,N) 담당자

같은 엔티티 사이의 관계입니다. 역할 이름(조장, 조원)을 반드시 붙여야 의미가 명확해집니다. 17강 계층 구조 모델링의 출발점입니다.

8. 예제 도메인 개념 모델

text
[셀러] 1 ──보유── N [출고 담당자] ──┐
                          │ (조장)  │ 재귀
                          └─────────┘
[고객] 1 ──발주── N [주문]
[주문] 1 ──소속── N [주문항목]
[상품] 1 ──판매── N [주문항목]   (25강에서 출고 단위로 분해)
[주문항목] N ──적용── M [처리단계]  → 관계 속성: 계획일, 실적일, 차수
[출고 담당자], [주문항목], [처리단계] ── 수행 (삼항) → 관계 속성: 처리일, 투입 시수
[검수자] ──검수── [항목처리]  → 관계 속성: 판정, 검수 일자

마지막 줄은 관계(항목처리)에 대한 관계입니다. 이런 형태가 보이면 해당 관계를 엔티티로 승격(연관 엔티티)시켜야 한다는 신호입니다.

3강 정리

  1. ER 모델은 엔티티·속성·관계로 구성되며, 관계에도 속성이 있다.
  2. 다중값 속성은 별도 테이블 후보이며, 콤마 저장은 안티패턴이다.
  3. 카디널리티(최대)와 참여도(최소)를 함께 표기해야 모호하지 않다.
  4. 삼항 관계는 이항 관계 셋으로 분해할 수 없다.
  5. 관계에 다시 관계가 붙으면 연관 엔티티로 승격한다.
COMMENTS (…)

댓글을 불러오는 중이에요.

NEW COMMENT0 / 1000
⌘↵ 전송

blog92@web:~$ cd ..