[SQLD] 1과목 1장 정리 (2)

도지는·2024년 3월 4일

SQLD

목록 보기
3/8

데이터 모델링의 이해

✏️ 엔터티

엔터티의 특징

  • 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야함
  • 유일한 식별자에 의해 식별이 가능해야함
  • 영속적으로 존재하는 인스턴스의 집합(⭐️두 개 이상!!)
  • 업무 프로세스에 의해 이용되어야함
  • 반드시 속성이 있어야함
  • 다른 엔터티와 최소 한 개 이상의 관계가 있어야함

발생 시점에 따른 엔터티 분류

기본, 키 엔터티(Fundamental, Key Entity)

  • 그 업무에 원래 존재하는 정보
  • 다른 엔터티와 관계에 의해 생성되지 않고 독립적으로 생성할 수 있고 자신은 타 엔터티의 부모 역할을 함
  • 주식별자를 상속받지 않고 자신의 고유한 주식별자를 가짐

중심 엔터티(Main Entity)

  • 기본 엔터티로부터 발생하고 그 업무에 있어서 중심적인 역할
  • 데이터의 양이 많고 다른 엔터티와의 관계를 통해 많은 행위 엔터티를 생성

행위 엔터티(Active Entity)

  • 두 개 이상의 부모엔터티로부터 발생
  • 자주 내용이 바뀌거나 데이터양이 증가
  • 분석 초기 단계에서는 잘 나타나지 않음

✏️ 속성

속성의 특성에 따른 분류

  • 기본속성(Basic Attribute): 사원이름, 고용일자 등 일반적인 속성
  • 설계속성: 업무상 필요한 데이터 외에 데이터 모델링을 위해 업무를 규칙화하기 위해 속성을 새로 만들거나 변형하여 정의하는 속성, 부서 번호, 부서 이름 등
  • 파생속성: 다른 속성에 영향을 받아 발생하는 속성(계산된 값), 가급적 적게 정의하는 것이 좋음

명칭 부여

  • 해당 업무에서 사용하는 이름 부여
  • 서술식 속성명은 사용하지 않음
  • 약어 사용 제한
  • 전체 데이터 모델에서 유일성을 확보하는 것이 좋음

도메인

각 속성이 가질 수 있는 값의 범위
엔터티 내에서 속성에 대한 데이터 타입과 크기, 제약사항을 지정하는 것


✏️ 관계

관계의 표현

ERD

  • 존재와 행위 구분 X
  • 단일화된 표기법 사용

UML - 클래스 다이어그램

  • 연관관계: 실선
  • 의존관계: 점선

관계의 표기법

  • 관계명(Membership): 관계의 이름
  • 관계차수(Cardinality): 1:1, 1:M, N:M
  • 관계선택사양(Optionality): 필수/선택 관계

관계 체크

  • 두 엔터티 사이에 관심 있는 연관규칙이 존재하는가?
  • 두 엔터티 사이에 정보의 조합이 발생되는가?
  • 업무기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?
  • 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어 있는가?

✏️ 식별자

식별자 분류

대표성 여부

  • 주식별자(Primary)
    부서번호, 사번, 주문번호 등
  • 보조식별자(Alternate): 인스턴스를 구분할 수 있지만 대표성을 가지지 못해 참조 관계를 연결하지 못함
    주민등록번호(사원 엔티티에서는 주민번호보다 사번이 주식별자로 적합함)

스스로 생성 여부

  • 내부식별자: 엔터티 내부에서 스스로 만들어짐
  • 외부식별자(Foreign): 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
    사원엔터티의 부서번호(사원 엔터티와 부서 엔터티는 부서번호로 관계되어 있음)

속성의 수

  • 단일식별자: 하나의 속성으로 구성된 식별자
  • 복합식별자: 둘 이상의 속성으로 구성된 식별자
    사번과 수강일자 두 속성을 이용해 식별자 역할

대체 여부

  • 본질식별자: 업무에 의해 만들어지는 식별자
    부서번호, 사번 등
  • 인조식별자: 업무적으로 만들어지지는 않았지만 원조식별자가 복잡한 구성을 가지고 있어 인위적으로 만들어짐
    주문번호(사번+주문일자+순번으로 처리하는 것이 복잡 ➡︎ 주문번호를 만들어 처리)

식별자 관계

부모의 주식별자가 자식엔터티의 주식별자로 상속되는 경우
실선 표현

문제점

  • 식별자 관계만으로 연결될 경우 주식별자 속성이 지속적으로 증가하고 복잡성과 오류 가능성이 증가함

식별자 연결을 고려하는 경우

  • 자식 엔터티가 반드시 부모에게 종속되어야할 때
  • 자식 주식별자 구성에 부모 주식별자가 필요할 때
  • 상속받은 주식별자 속성을 타 엔터티에 이전 필요할 때
  • 강한 연결관계를 표현할 때

비식별자 관계

부모로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로 사용하는 경우
점선 표현

문제점

  • 조인이 많아짐
  • 복잡성이 증가하고 성능이 저하됨
    (식별자로 설정한다면 바로 조회조건을 이용하여 조회할 수 있음)

비식별자 연결을 고려하는 경우

  • 약한 종속관계
  • 자식 주식별자 구성을 독립적으로 구성해야할 때
  • 자식 주식별자 구성에 부모 주식별자가 부분적으로 필요할 때
  • 상속받은 주식별자 속성을 타 엔터티에 차단이 필요할 때
  • 부모쪽의 관계참여가 선택 관계일 때
  • 부모 없이 자식 엔터티의 인스턴스가 먼저 생성될 수 있는 경우
  • 부모 인스턴스가 자식 인스턴스보다 먼저 소멸하는 경우
  • 별도의 주식별자를 생성하는 것이 더 유리하다고 판단 되는 경우

🔗 참고

엔터티 - 참고
식별자 - 참고

profile
왕왕

0개의 댓글