본문 바로가기

스파르타 코딩클럽/[강의] SQLD 자격증 대비반

[SQLD 자격증 대비반] 챕터 3. 데이터 모델링의 요소

엔터티(Entity)

  • "개체" 라고 표현하며 정보의 세계에서 의미있는 하나의 정보 단위를 뜻함
  • 데이터베이스에서 레코드가 개체에 해당

엔터티와 인스턴스

  • 엔터티는 인스턴스(Instance)의 집합
  • 인스턴스는 데이터베이스 테이블에 저장된 특정한 데이터 내용의 전체 집합 즉, 하나의 행(row)을 의미
  • 하나의 인스턴스가 갖는 각각의 특징을 속성(Attribute)라고 하고 이는 테이블의 열(column)에 해당

 

엔터티의 특징

  • 업무에서 필요로 하는 정보
  • 식별 가능 여부 : 인스턴스가 식별자에 의해 한 개씩만 존재하는지 검증
  • 인스턴스의 집합 : 기본적으로 2개 이상의 인스턴스로 엔터티 구성
  • 업무 프로세스에 의해 활용되어야 함
  • 속성을 포함해야 함 : 주식별자만 존재하고 일반 속성이 없는 경우 엔터티 X
  • 관계의 존재 : 다른 엔터티와의 연관성

 

엔터티의 분류

  • 유/무형에 따른 분류
    • 유형 엔터티
      - 물리적인 형태가 존재
      - 안정적이고 지속적
    • 개념 엔터티
      - 개념적인 정보로 구분
    • 사건 엔터티
      - 특정한 이벤트에 종속
      - 업무 수행에 따라 발생되는 엔터티로 비교적 발생량이 많으며 각종 통계에 이용
  • 발생 시점에 따른 분류
    • 기본/키 엔터티
      - 독립적인 생성 가능
      - 다른 엔터티의 부모 역할 = 고유한 주식별자를 가짐
    • 중심 엔터티
      - 기본 엔터티로부터 발생
      - 처리해야 하는 데이터의 양이 많음
      - 다른 엔터티와의 관계를 통해 많은 행위 엔터티 생성
    • 행위 엔터티
      - 두 개 이상의 부모 엔터티로부터 발생
      - 자주 내용이 바뀌거나 데이터의 양 증가

 

엔터티 네이밍 방식

  • 가능한 업무에서 사용하는 용어 사용
  • 축약어 사용 X
  • 단수 명사 사용하고 띄어쓰기 X
  • 모든 엔터티는 유일한 이름 부여 = 엔터티 이름 중복 X
  • 엔터티 생성 의미대로 이름 부여

 

속성(Attribute)

  • 인스턴스가 가진 어떠한 성질
  • 더이상 분리되지 않는 최소의 데이터 단위

 

엔터티, 인스턴스, 속성, 속성값의 관계

  • 한 개의 엔터티는 두 개 이상의 인스턴스의 집합
  • 한 개의 엔터티는 두 개 이상의 속성으로 구성
  • 한 개의 속성은 한 개의 속성값을 가짐

 

속성의 특징

  • 업무에서 필요로 함
  • 더 이상 분리되지 않는 그 자체로 독립성 유지 ➡️ 가장 작은 단위
  • 엔터티를 설명하고 인스턴스의 구성요소가 됨
  • 정규화 이론에 기반을 두고 정해진 주식별자에 함수적 종속성을 가져야 함
  • 하나의 속성은 한 개의 값만 가짐

 

속성의 분류

  • 특징에 따른 분류
    • 기본 속성
      - 업무로부터 추출된 모든 속성
      - 가장 많은 종류 차지
    • 설계 속성
      - 데이터 모델링, 업무의 규칙화 등을 위해 새로 만들거나 변형하여 정의하는 속성
    • 파생 속성
      - 다른 속성에 영향을 받아 발생하는 속성
      - 데이터 정합성(정확성)을 유지하기 위해서는 가급적 파생적 속성을 적게 정의하는 것이 좋음
  • 엔터티 구성 방식에 따른 분류
    • PK(Primary Key) 속성
      - 엔터티를 식별할 수 있는 속성
      - 주식별자
    • FK(Foreign Key) 속성
      - 다른 엔터티와의 관계에 포함된 속성
    • 일반 속성
      - PK, FK에 포함되지 않는 속성

 

도메인

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

 

속성의 명명

  • 가능한 업무에서 사용하는 용어 사용
  • 축약어 사용 X
  • 서술형보다 명사형 사용
  • 수식어가 많이 붙지 않고 명확하게 의미 파악 > 명시적인 형태
  • 전체 데이터 모델에서 유일하게 작성

 

🌟 관계(Relationshiop)

  • 사전적으로 정의하면 "상호 연관성이 있는 상태"
  • 엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태

 

관계의 종류

  • 존재에 의한 관계 : 소속/포함의 형태
  • 행위에 의한 관계 : 행동/행위의 결과

 

UML(Unified Modeling Language) - 통합 모델링 언어

  • 표준화된 범용 모델링 언어
  • 추상화된 시스템을 특정한 모델로 표현해주는 언어
  • ERD에서는 존재적 관계와 행위에 의한 관계를 구분하지 않고 표현
  • 클래스 다이어그램에서는 이를 구분하여 연관 및 의존 관계로 표현

 

관계 표기법

  • 관계명(Membership)
    • 엔터티가 관계에 참여하는 형태 지칭
    • 관계시작점 - 관계끝점

  • 관계 표기법
  • 관계차수(Degree/Cardinality) 🌟
    • 1:1(ONE TO ONE) 관계 표시
      - 관계에 참여하는 각 엔터티는 관계를 맺는 다른 엔터티에 대해 하나의 관계로 연결
    • 1:M(ONE TO MANY) 관계 표시
      - 관계에 참여하는 각 엔터티는 관계를 맺는 다른 엔터티에 대해 하나 혹은 그 이상의 관계로 연결
      - 이 방향은 한쪽 방향에만 해당
    • M:M(MANY TO MANY) 관계 표시
      - 1:M 관계가 양방향에서 모두 발생하는 경우

 

관계선택사양(Optionality)

  • 데이터 모델 관계에서는 '선택참여관계(Optional)'가 핵심
  • 필수 조건
    • 필수 사항은 실선으로 표시
    • 상대 Entity에 대한 해당 조건을 만족하는 Entity가 반드시 존재할 경우 표시
    • | 로 표현 (IE)
  • 선택 조건
    • 선택 사항은 점선으로 표시
    • 상대 Entity에 대한 해당 조건을 만족하는 Entity가 존재할 수도 혹은 아닐 수도 있는 경우 표시
    • o 로 표현 (IE)

 

관계 정의 시 체크 사항

  • 두 엔터티 사이에 관심 있는 연관 규칙 존재 여부
  • 두 개의 엔터티 사이에 정보의 조합 발생 여부
  • 업무 기술서, 장표에 관계 연결 규칙 존재 여부
  • 업무 기술서, 장표에 관계 연결을 가능하게 하는 동사(Verb) 존재 여부

 

식별자(Identifier)

  • 집합체를 구분할 수 있는 구분자
  • 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에서 엔터티를 대표할 수 있는 속성
  • 하나의 엔터니는 반드시 하나의 유일한 식별자가 존재

 

주식별자(PK) 특징

  • 유일성
    - 주식별자에 의해 엔터티 내에서 모든 인스턴스들을 유일하게 구분
  • 최소성
    - 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수
  • 불변성
    - 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함
  • 존재성
    - 주식별자가 지정되면 반드시 데이터 값이 존재 ➡️ NULL 값 허용 X

 

식별자 분류

  • 대표성 여부
    • 주식별자
      - 엔터티 내에서 각 인스턴스를 구분할 수 있는 구분자
      - 다른 엔터티와 참조 관계 연결 O
    • 보조 식별자
      - 엔터티 내에서 각 인스턴스를 구분할 수 있는 구분자
      - 대표성을 갖지 못해 참조 관계 연결 X
  • 스스로 생성 여부
    • 내부 식별자
      - 엔터티 내부에서 정의
    • 외부 식별자
      - 다른 엔터티와의 관계를 통해 다른 엔터티로부터 받아옴
  • 속성의 수
    • 단일 식별자
    • 복합 식별자
  • 대체 여부
    • 본질 식별자
      - 업무에 의해 만들어지는 식별자
    • 인조 식별자
      - 원조 식별자가 복잡한 구성을 갖고 있기 때문에 인위적으로 만든 식별자

 

식별자 표기법

 

주식별자 도출 기준

  • 해당 업무에서 자주 이용되는 속성
  • 명칭, 내역 등과 같이 특정한 이름으로 기술되는 것은 가능하면 주식별자로 사용 X
  • 복합으로 주식별자를 구성하는 경우 너무 많은 속성 포함 X
    ➡️ 주식별자 속성이 너무 많을 경우 인조식별자를 통해 단순화

 

식별자 관계

  • 부모로부터 받은 식별자를 자식 엔터티의 주식별자로 이용하는 경우 NULL 값 없어야 함
  • 자식 엔터티의 주식별자로 부모 주식별자가 상속되는 경우

 

비식별자 관계

  • 부모 엔터티로부터 속성을 받았지만 자식 엔터티의 주식별자로 사용하지 않고 일반 속성으로만 사용
  • 받은 속성이 필수가 아니어도 무방하기 때문에 부모 식별자가 없는 자식 식별자로 생성되는 경우
  • 엔터티 별로 데이터 생명 주기를 다르게 관리할 경우
  • 여러 개의 엔터티가 하나로 통합되어 표현되었는데, 각 엔터티가 별도의 관계를 갖는 경우
  • 자식 엔터티에서 별도의 주식별자를 생성하는 것이 더 유리하다고 판단할 경우

 

식별자 관계와 비식별자 관계의 모델링

  • 식별자 관계 선택 프로세스

  • 식별자와 비식별자의 관계 비교
분류 식별자 관계 비식별자 관계
목적 강한 연결관계 표현 약한 연결관계 표현
자식 주식별자 영향 자식 엔터티의 주식별자 구성에 포함 자식 엔터티의 일반 속성에 포함
표기법 실선(IE) / 버티컬바 | (Barker) 점선(IE)
연결 고려사항 - 반드시 부모 엔터티에 종속
- 자식 주식별자 구성에 부모 엔터티 주식별자 속성이 필요한 경우 사용
- 상속받은 주식별자 속성을 타 엔터티에 이전 필요
- 자식 주식별자 구성을 독립적으로 구성할 경우 사용
- 자식 주식별자 구성에 부모 주식별자 부분 필요
- 상속 받은 주식별자 속성을 다른 엔터티에 차단 필요
- 부모 쪽의 관계 참여가 선택 관계