1과목 · 데이터 모델링의 이해·4장
관계 (Relationship)
관계의 종류(존재/행위), 차수, 선택성, 관계 페어링을 다룹니다.
1. 관계란
두 개 이상의 엔터티 인스턴스 사이의 연관 또는 행위. ERD에서 선, 물리에서 외래키(FK)로 구현.
2. 관계의 종류
존재 관계
업무 규칙상 반드시 함께 존재하는 정적 연관. "사원은 하나의 부서에 소속된다".
행위 관계
행위의 발생으로 생기는 동적 연관. "고객이 주문을 한다".
3. 차수 (Cardinality)
| 표기 | 의미 | 예 |
|---|---|---|
| 1:1 | 한쪽 1, 다른 쪽 1 | 사원 ↔ 사원카드 |
| 1:M | 한쪽 1, 다른 쪽 N | 부서 ↔ 사원 |
| M:N | 양쪽 모두 다수 | 학생 ↔ 과목 |
M:N은 교차 엔터티로 분해.
CREATE TABLE enroll (
student_id INT REFERENCES student(student_id),
course_id INT REFERENCES course(course_id),
taken_at DATE NOT NULL,
PRIMARY KEY (student_id, course_id)
);
4. 선택성 (Optionality)
- 필수(mandatory): NOT NULL FK.
- 선택(optional): NULL 허용 FK.
5. 관계 페어링
ERD의 선 = 규칙(클래스), 페어링 = 실제 연결(인스턴스).
6. 관계 읽기
양방향으로 읽힘:
"부서는 여러 사원을 보유한다." "사원은 하나의 부서에 소속된다."
7. 자주 출제되는 포인트
- M:N은 교차 엔터티로.
- 차수와 선택성은 별개.
- 관계명은 동사형, 양방향 가능.
- 존재 관계 vs 행위 관계.
- 차수(Cardinality) ≠ 선택도(Selectivity).
8. 요약 체크리스트
- 존재·행위 관계를 예로 설명한다.
- 1:1, 1:M, M:N의 물리 구현을 안다.
- 필수·선택 관계를 NULL 여부로 구분한다.
- 관계 페어링과 관계의 차이를 안다.