[SQLD] 관계(Relationship) | PART 1
관계는 엔터티 간 관계를 의미하며, 엔터티 간 어떠한 연관성이 있는지 여러 타입으로 나눌 수 있다. 존재 관계와 행위 관계로 구분할 수 있으며, 각 관계 차수는 1:1, 1:M, N:M으로 나눠진다.
Sep 09, 2024
관계는 엔터티 간 관계를 의미하며, 엔터티 간 어떠한 연관성이 있는지 여러 타입으로 나눌 수 있다. 존재 관계와 행위 관계로 구분할 수 있으며, 각 관계 차수는 1:1, 1:M, N:M으로 나눠진다.
✅ 1. 존재 관계
엄마와 아이처럼 존재 자체로 연관성이 있는 관계를 의미한다.
예를 들면 사원과 부서, 학생과 학과 등 엔터티가 여기에 속한다.
✅ 2. 행위 관계
특정한 행위를 함으로써 연관성이 생기는 관계를 의미한다.
예를 들면 고객과 주문, 학생과 출석부 엔터티가 여기에 속한다.
✅ 3. 표기법
관계명(Membership) | 관계의 이름 |
관계차수(Cardinality) | 관계에 참여하는 수 |
관계선택사양(Optionality) | 필수인지 선택인지의 여부 |
☑️ 1) 관계명
관계명은 반드시 명확한 문장이어야 하고, 현재형이어야 한다.
엔터티 간 어떠한 관계를 맺고 있는지를 나타내준다. 각 엔터티의 관점에서 관계명을 하나씩 가지고 있어, 모든 관계는 두 개의 관계명을 가진다.
바람직하지 않은 관계명 | 바람직한 관계명 |
연관성이 있다. | 주문한다. |
관계가 있다. | 소속된다. |
출석을 했다. | 출석을 한다. |
☑️ 2) 관계 차수
각 엔터티가 가지는 관계의 수를 의미한다. 아래와 같이 3가지로 구분할 수 있다.
1:1 관계
- 완전 1:1 관계
→ 하나의 엔터티에 관계되는 엔터티가 반드시 하나로 존재하는 경우
ex) 사원은 반드시 소속 부서가 있어야 함.
- 선택적 1:1 관계
→ 하나의 엔터티에 관계되는 엔터티가 하나이거나 없을 수 있는 경우
ex) 사원은 하나의 소속 부서가 있거나 아직 발령 전이면 없을 수 있음.
1:M 관계
→ 엔터티에 하나의 행에 다른 엔터티의 값이 여러 개 있는 관계
ex) 고객은 여러 개의 계좌를 보유할 수 있음.
N:M 관계
→ 두 엔터티가 다대다의 연결관계를 가지고 있음
→ 이 경우 조인 시 카테시안 곱이 발생하므로 두 엔터티를 연결하는 연결 엔터티의 추가로 1:N 관계로 해소할 필요가 있다.
ex) 한 학생이 여러 강의를 수강할 수 있고, 한 강의 기준으로도 여러 학생을 보유할 수 있음.
⇒ 중간에 수강이력 엔터티를 두어 해소!
☑️ 3) 관계 선택사양
필수적 관계 | 참여자가 반드시 존재해야 하는 관계 |
선택적 관계 | 참여자가 없을 수도 있는 관계 |
관계 선택사양은 이 관계가 필수요소인지 선택사항인지 나타낸다.
예를 들어, 주문은 반드시 하나 이상의 주문상품이 필요하므로, 필수적 관계이다.
다만 학생과 출석부 엔터티의 관계는 선택적 관계이다.
Share article