관계
개요
Relationship
엔터티 간의 관계를 말한다.
개념
엔터티끼리 상호 연관성이 있는 상태를 말한다.
이것은 엔터티 간의 논리적인 연관성을 의미한다.
존재에 대하여, 속한다는 관계가 있을 수 있고, 행위에 대해 행한다는 관계가 있을 수 있다.
명확하게 인식해야만 하는 것은, 결국 엔터티 안의 인스턴스끼리 관계가 맺어진다는 것이다.
사람은 직업을 가진다는 관계가 있는데, 사실 정확하게는 김동건이 백수라는 직업을 가지는 것이다(null이라 하는 것보다 슬프네?).
이때 관계를 맺는 것을 페어링이라고 따로 표현한다.
ERD를 그릴 때 이것을 잘 정의하는 게 중요하다.
아래에서 볼 두 개념이 같이 들어간 그림.
이후에 볼 식별 개념도 들어갔다.
Cardinality(관계 차수)
이 페어링은 여러 개가 형성될 수 있다.
한 강사는 여러 명의 수강생을 가질 수 있을 것이다.
그러면 수강생 엔터티의 여러 인스턴스와 관계가 맺어질 것이다.
그래서 이를 관계 차수(Cardinality)로 표현한다.
총 세가지 관계가 존재한다.
- 1:1
- 1:M
- N:M
Optionality(관계 선택사양)
관계 선택사양이란 것도 있다.
이것은 필수적인 관련을 맺는지에 대한 여부이다.
사람이 없는 부서가 있을 수도, 부서가 없는 사람이 있을 수도 있다.
이러면 필수적이진 않다.
그런데 생물학적 성별이 없는 사람은 없다.
이건 필수적이라 할 수 있다.
이때 주의할 것은 양쪽으로 서로 필수적이지 아닌지 고민해봐야 한다는 것이다.
이걸로만 따졌을 때 크게는 얘도 3가지의 관계가 나올 것이다.
그러나 이것은 따로 개념화하지는 않고, 표기할 때 주로 고민한다.
읽는 방법
자연스럽게 읽을 줄 아는 것이 중요하다.
하나의 엔터티를 기준 삼고 주어로 읽는다.
그리고 다음 엔터티를 보며 관계를 읽으면 된다.
가령 첫번째 관계에 대해 다음과 같이 읽는 방법이 존재한다.
- '하나의' '부서는' '여러' '사원을' 포함'할 수 있다'
- '각' '사원은' '단 한' '부서를' '소속한다'
그러니 사원이 없는 부서는 존재할 수 있으나, 부서 없는 사원은 있을 수 없다.