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 여부로 구분한다.
- 관계 페어링과 관계의 차이를 안다.