SQLD 핵심 이론 강의 2강 정리

고기호·2024년 10월 8일
1

SQLD 자격증

목록 보기
2/2
post-custom-banner


이 글은 이기적 영진닷컴의 SQL 개발자 이론+기출 강의를 정리한 내용입니다.

데이터 모델링의 이해

03. 관계(Relationship) 이해하기


관계(Relationship)란?

  • 엔터티 내의 인스턴스들 간에 서로 논리적인 연관성이 있는 상태이다.
  • 직원의 경우 부서에 소속돼 있고, 부서는 직원을 보유한다.
    • 따라서 직원 엔터티 내부에 부서코드 속성이 존재해야한다.
  • 관계형 데이터 베이스의 특징중 하나이다.

관계의 분류 - 존재/행위

(가볍게 이해만하고 암기하고 넘어가기)

  • 존재에 의한 관계
    • ex) 직원은 부서에 소속되고, 부서는 직원을 보유한다.
  • 행위에 의한 관계
    • ex) 고객은 상품을 주문하고, 상품은 고객에게 주문된다.
  • ERD
    • 존재/행위 등 관계를 위처럼 선으로 표시한다.
  • UML 클래스다이어그램
    • 연관관계(존재)는 실선으로 표기
    • 의존관계(행위)는 점선으로 표시한다.

관계(선)를 표시하는 방법

표기하는 방식에 따라 IE와 Barker 표기법으로 구분된다.

관계명 표시

관계명을 표시한다. 이때 애매한 동사나 과거형은 피한다.

  • ex) 소속되다, 보유하다, 주문하다, 주문되다.
  • 소속될 것이다(X)

관계 차수에 따라 그려보기

  • 관계차수는 1:1, 1:M, M:N같이 엔터티 내 각 인스턴스들이 얼마나 참여하는지를 의미한다.

    위 그림에서 부서는 2명 이상의 직원을 가지고 있고, 직원은 한가지의 부서를 가지고 있기 떄문에 1:M의 관계이다.
    • BARKER 표기 방식의 경우 2개 이상의 인스턴스를 가지는 경우 까치발 모양을 그려준다.

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)가 있는가?

Reference

https://www.youtube.com/watch?v=64c0BgeCLAY&list=PL6i7rGeEmTvpLoDkB-kECcuD1zDt_gaPn&index=2

profile
웹 개발자 고기호입니다.
post-custom-banner

0개의 댓글