관계
쉽게 말하면
관계는 두 엔터티가 서로 어떻게 이어져 있는지를 나타내요. 부서와 사원처럼 원래부터 소속으로 이어진 관계도 있고, 고객이 주문을 하는 것처럼 행동으로 생기는 관계도 있어요. 관계를 그릴 때는 이름, 몇 대 몇인지(1:1, 1:M, M:N), 꼭 있어야 하는지(필수·선택)를 함께 적어요.
시험용 정의
관계(Relationship)는 두 엔터티의 인스턴스 사이에 맺어지는 의미 있는 연결이다. 부서와 사원처럼 존재 자체로 연결되는 존재 관계와, 고객이 주문을 하듯 어떤 행위로 연결되는 행위 관계가 있다. 관계는 관계명, 관계 차수(1:1, 1:M, M:N), 관계 선택성(필수·선택)으로 표현한다.
비유로 이해하기
결혼 관계로 보면 관계명은 '배우자이다', 차수는 1:1(한 사람에 한 배우자), 선택성은 '반드시 있어야 하나?'(미혼도 있으니 선택)다.
자세히
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| 차수(Cardinality) | 한 엔터티의 인스턴스 하나가 상대 엔터티의 인스턴스 몇 개와 연결되는지. 1:1, 1:M, M:N |
| 선택성(Optionality) | 관계가 반드시 있어야 하는지(필수) 없어도 되는지(선택) |
| 외래키(FK) | 다른 테이블의 기본키를 가리키는 열. 관계는 테이블에서 외래키로 구현된다 |
| UML | 소프트웨어 설계에 쓰는 표준 모델링 언어. 클래스 다이어그램에서 관계를 연관(실선)·의존(점선)으로 그린다 |
존재 관계와 행위 관계
| 종류 | 뜻 | 예 | UML 대응 |
|---|---|---|---|
| 존재에 의한 관계 | 한쪽이 존재하는 것만으로 연결된다 | 부서 ― 사원 (사원은 부서에 소속) | 연관 관계 (실선) |
| 행위에 의한 관계 | 어떤 행위가 있어야 연결이 생긴다 | 고객 ― 주문 (고객이 주문을 한다) | 의존 관계 (점선) |
IE 표기법 읽기
| 기호 | 뜻 |
|---|---|
| | (세로 막대) | 필수, 하나 (Mandatory, One) |
| O (동그라미) | 선택, 없을 수 있음 (Optional) |
| 까마귀발 (세 갈래) | 여러 개 (Many) |
| || 또는 +| | 반드시 하나 |
| O< | 없거나 여러 개 (0 이상) |
관계를 읽는 법
기준 엔터티에서 대상 엔터티 쪽으로 "각각의(Each) [기준 엔터티]는 [하나의 / 하나 이상의] [대상 엔터티]를 [항상 / 때때로] [관계명]" 순서로 읽는다.
예: "각각의 고객은 여러 주문을 때때로 한다" (고객 쪽에서 주문은 선택), "각각의 주문은 한 고객에 의해 항상 접수된다" (주문 쪽에서 고객은 필수).
관계를 정의할 때 확인할 것
- 두 엔터티 사이에 관심 있는 연관 규칙이 있는가
- 두 엔터티 사이에 정보의 조합이 생기는가
- 업무 기술서나 장표에 관계 연결 규칙이 서술되어 있는가
- 업무 기술서에 관계를 나타내는 동사가 있는가
관계명은 애매한 동사("관계가 있다", "관련된다")를 피하고 현재형으로 쓴다.
시험에 이렇게 나와요
- 존재 관계(부서-사원) vs 행위 관계(고객-주문), UML 연관(실선)·의존(점선)
- 관계 구성: 관계명·관계 차수·관계 선택성
- IE 표기법 기호 해석 (O 선택, | 필수, 까마귀발 Many)
- 관계 읽기 순서와 관계 체크 사항 4가지
출제 범위·공식 안내 기반
확인 문제
Q1. IE 표기법에서 관계선 끝의 동그라미(O)는 무엇을 뜻할까요?
- 식별 관계
- 관계가 없어도 됨(선택)
- 관계가 반드시 있어야 함(필수)
- 여러 개(Many)
정답 보기
2번 관계가 없어도 됨(선택)
IE(까마귀발) 표기법에서 O는 선택(없을 수도 있음), |는 필수(반드시 있음), 까마귀발은 여러 개(Many)를 뜻한다.
Q2. 고객이 주문을 해야 비로소 연결이 생기는 관계는?
- 식별 관계
- 행위에 의한 관계
- 재귀 관계
- 존재에 의한 관계
정답 보기
2번 행위에 의한 관계
주문이라는 행위로 생기는 관계다. 부서-사원은 존재에 의한 관계다.
Q3. 관계를 표현하는 요소가 아닌 것은?
- 관계 선택성
- 관계 도메인
- 관계명
- 관계 차수
정답 보기
2번 관계 도메인
관계는 관계명·차수(Cardinality)·선택성(Optionality)으로 표현한다. 도메인은 속성의 값 범위다.
Q4. 관계를 정의할 때 확인할 사항으로 거리가 먼 것은?
- 두 엔터티의 속성 개수가 같은가
- 두 엔터티 사이에 정보의 조합이 발생하는가
- 두 엔터티 사이에 관심 있는 연관 규칙이 있는가
- 업무 기술서에 관계를 나타내는 동사가 있는가
정답 보기
1번 두 엔터티의 속성 개수가 같은가
'두 엔터티의 속성 개수가 같은가'는 관계와 상관없다. 관계는 연관 규칙이 있는지, 정보의 조합이 생기는지, 업무 기술서에 관계를 나타내는 동사가 있는지로 찾는다.
Q5. IE 표기법에서 까마귀발 기호의 뜻은?
- 정확히 하나
- 필수
- 선택
- 여러 개(Many)
정답 보기
4번 여러 개(Many)
O는 선택, |는 필수, 까마귀발은 Many.
Q6. 한 학생이 여러 과목을 듣고, 한 과목을 여러 학생이 듣는 관계의 차수는?
- M:N
- 1:M
- 1:1
- 0:1
정답 보기
1번 M:N
M:N 관계는 보통 수강 같은 교차 엔터티로 풀어낸다.
헷갈리기 쉬운 O·X
UML 클래스 다이어그램에서 존재 관계는 점선, 행위 관계는 실선으로 그린다.
정답 보기
X 반대다. 존재(연관) 관계는 실선, 행위(의존) 관계는 점선이다.
관계명은 "관련이 있다"처럼 포괄적인 말로 쓰는 것이 좋다.
정답 보기
X 애매한 동사는 피하고 구체적인 현재형 동사로 쓴다.
M:N 관계는 교차 엔터티를 두어 1:M 관계 두 개로 바꿔 구현한다.
정답 보기
O 학생-과목 사이에 수강 엔터티를 둔다.