이 글은 이기적 영진닷컴의 SQL 개발자 이론+기출 강의를 정리한 내용입니다.
(가볍게 이해만하고 암기하고 넘어가기)
표기하는 방식에 따라 IE와 Barker 표기법으로 구분된다.
관계명을 표시한다. 이때 애매한 동사나 과거형은 피한다.
1:1 관계
위 그림에서 직원과 직원세부정보는 유일하게 서로를 가지고 있다.
따라서 1:1 관계이다.
IE 표기 방식과 BARKER 표기 방식이 다르니 유의하자
1:M 관계
위 그림에서 직원은 하나의 부서에 소속되고, 부서는 여러명의 직원을 보유한다.
따라서 1:M 관계이다.
N:M 관계
위 그림에서 학생은 여러 과목을 수강할 수 있고, 과목은 여러 학생에게 수강된다.
따라서 N:M 관계이다.
관계의 경우 데이터 베이스 내에서 한쪽의 ID를 반대쪽에 속성으로 빌려주는 방식(FK를 사용해 다른 테이블의 ID를 참조한다.)으로 구현되는데
만약 C001이란 학생이 ID가 D001인 수학 과목을 수강한다 가정하면, C002이란 학생도 수학 과목을 수강해서 ID가 D001인 인스턴스가 두개가 생겨버린다. 그렇게 계속 쌓이다보면 한 엔터티에 같은 ID를 가지는 인스턴스가 여러개 생겨버려 관리하기가 힘들어진다.
따라서 N:M 관계의 경우 1:M 또는 M:1로 쪼개야한다(중간 테이블로 나누기)
N:M 관계 쪼개기
학생과 과목 사이의 엔터티를 생성하는데 이름은 관계 이름으로 설정한다.
IE표기법의 경우
직원은 부서에 속하는데 필수적이므로 O을 표시한다.
BARKER표기법의 경우
부서가 직원을 보유하는데 선택적이므로 점선으로 표시한다.
직원은 부서에 속하는데 필수적이므로 실선으로 표시한다.
엔터티는 관계를 가지고 있어야 정상이지만, 예외적으로 관계가 없어도 되는 엔터티가 존재한다.
바로 코드성, 통계성 엔터티이다.
코드성의 경우 관계가 너무 많아질 가능성이 높아서, 오히려 관계를 지어주지 않는다.
통계성의 경우 예를들어 월매출이 있다고 해보자. 이런경우에는 딱히 관계를 지어줄 필요가 없지만 어쨌든 자체만으로 데이터이니 가만히 놔둔다.
(키워드 정도만 체크하고 넘어가자)
두 엔터티 사이에 관계가 적절한가?
1. 두 엔터티 사이에 관심 있는 연관규칙이 있는가?
2. 두 엔터티 사이에 정보의 조합이 발생하는가?
3. 업무기술서, 장표에 관계연결에 대한 규칙이 서술되었는가?
4. 업무기술서, 장표에 관계연결을 가능케 하는 동사(Verb)가 있는가?
https://www.youtube.com/watch?v=64c0BgeCLAY&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=2