[ Computer Science ]/데이터베이스 이론

[Database / SQLD] 데이터 모델링의 이해 (Part1 - Ch01)

HSRyuuu 2024. 4. 19. 15:30
SQLD를 준비하며 개인적으로 조금 외워두면 좋을 것 같은 것들만 적어보았습니다.
참고한 책은 "2024 유선배 SQL개발자(SQLD) 과외노트"입니다.

 

01 데이터 모델의 이해


모델링의 특징

  • 추상화
  • 단순화
  • 명확화
  • 상세화

모델링의 3가지 관점

  • 데이터 관점
  • 프로세스 관점
  • 데이터와 프로세스의 상관 관점 : 관계 위주

데이터의 품질 보장을 위해 유의해야 할 점

  • 중복 : 중복 x
  • 비유연성 : 유연하게 설계
  • 비일관성 : 일관성 있게 설계

모델링의 3가지 단계

  1. 개념적 데이터 모델링 : 추상화 수준이 가장 높음
  2. 논리적 데이터 모델링 : 재사용성이 가장 높음 - key, 속성, 관계 등 모두 표현하는 단계
  3. 물리적 데이터 모델링 : 실제 DB에 구현할 수 있도록 물리적인 성격을 고려

3단계 스키마 구조 - 데이터의 독립성

  • 외부 스키마 : 사용자 관점
  • 개념 스키마 : 데이터 간 관계 관점
  • 내부 스키마 : 물리적인 관점 - 실제 DB에 저장하는 구조 / 저장 구조, 칼럼 정의, 인덱스 등
이로 인해 논리적, 물리적 독립성이 보장된다.
- 논리적 독립성 : 개념 스키마가 변경되어도 외부 스키마는 영향 X
- 물리적 독립성 : 내부 스키마가 변경되어도 외부/개념 스키마는 영향 X

ERD(Entity Relationship Diagram)

IE/Crow's Foot 모델이 가장 많이 사용된다.

https://ppomelo.tistory.com/51

ERD 작성 순서

  • 엔티티를 도출하고 그리기
  • 배치
  • 엔티티 간 관계 설정
  • 관계명 기입
  • 관계 참여도 기입
  • 관계의 필수/선택 여부 기입

02 엔티티(Entity)


엔티티 용어

  • 엔티티 - Table
  • 인스턴스 - Row
  • 속성 - Column

엔티티의 특징

  • 업무에서 실제로 사용
  • Unique Key가 있어야 함
  • 2개 이상의 인스턴스를 갖고 있어야 함 (1개이거나, 앞으로도 쭉 1개일 경우 엔티티 X)
  • 속성(Column)이 있어야 함
  • 다른 엔티티와 1개 이상의 관계를 갖고 있어야 함

엔티티의 종류 - 유/무형에 따른 분류

  • 유형 엔티티 : 물리적 형태, 안정성, 지속성 (회원, 상품  )
  • 개념 엔티티 : 물리적 형태 없음, 개념적(부서, 학과  )
  • 사건 엔티티 : 행위로 발생(주문, 이벤트 응모  )

엔티티의 종류 - 발생 시점에 따른 분류

  • 기본 엔티티 : 업무에 원래 존재하는 정보 (상품, 회원, 사원, 부서 등)
  • 중심 엔티티 : 기본 엔티티로부터 파생, 행위 엔티티 생성(주문, 매출, 계약 등)
  • 행위 엔티티 : 2개 이상의 엔티티로부터 파생, 데이터가 자주 변경되거나 증가 가능 (주문 내역, 이벤트 응모 이력 등)

03 속성(Attribute)


속성의 특징

  • 더 이상 쪼개지지 않는 레벨
  • 프로세스에 필요한 항목
  • 업무상 불필요하면 삭제하는 게 낫다.
  • 속성은 한 개의 값만 가져야 한다. (원자값,  atomic) ==  하나의 속성은 하나의 속성 값만 가진다.
  • 하나의 엔티티는 두 개 이상의 속성을 갖는다.
  • 엔티티의 구체적이고 명확한 정보를 나타낸다.

속성의 분류 - 특성에 따른 분류

  • 기본 속성(Basic) : 업무 프로세스를 통해 바로정의 / 가장 많은 비중을 차지한다.
  • 설계 속성(Designed) : 업무에 존재하지는 않지만, 필요하다고 판단해서 도출해 낸 속성 - ex) 학생의 고유 번호
  • 파생 속성(Derived) : 다른 속성의 속성값에 대해 계산된 값 또는 가공된 값 - ex) 재고, 좋아요 수 등
데이터 정합성이 고려되어야 한다.

속성의 분류 - 구성 방식에 따른 분류

  • PK속성 : 인스턴스의 Unique 함을 부여하는 속성
  • FK 속성 : 다른 엔티티와 관계를 맺게 해주는 속성 - FK는 null 값 가능
  • 일반 속성 : PK, FK를 제외한 나머지 속성

도메인(Domain)

  • 속성이 가질 수 있는 속성값의 범위 - ex) 우편 번호는 다섯 자리 숫자라는 범위를 갖고 있다.
용어 사전 : 업무상 Rule을 정하기 위해 업무용 지침을 정하기도 한다.
시스템 카탈로그 : 시스템 관련 DB / 여기 담긴 데이터를 메타데이터라고 하고, SELECT만 가능하다.

04 관계(Relationship)


관계의 종류

  • 존재 관계 : 엄마 - 아기처럼 존재 자체로 연관성이 있는 관계 (직원-부서, 학생-학과 등)
  • 행위 관계 : 행위를 함으로써 연관성이 생기는 관계 (회원-주문, 학생-출석 등)

관계 표기법

  • 관계명 : 엔티티 간에 어떤 관계를 맺고 있는지를 나타내는 문장 - 항상 양쪽에서 하나씩 두 개의 관계명
    -> 명확한 문장 / 현재형
  • 관계 차수 : 각 엔티티에서 관계에 참여하는 수 (1:1 / 1:M / M:N )
  • 관계 선택 사양 : 필수인지, 선택인지의 여부

관계 명 / 관계 차수
관계 선택 사양


05 식별자(Identifiers)


식별자란?

각각의 인스턴스를 구분 가능하게 만들어주는 대표적인 속성

주 식별자(PK)의 속성

PK(Primary Key), 기본키, 주식별자라고 불린다.

하나의 속성이 주 식별자가 될 수도 있고, 여러 개의 속성이 주 식별자가 될 수도 있다.

  • 유일성 : 각 인스턴스에 유니크함을 부여해서 식별이 가능하도록 한다.
  • 최소성 : 유일성을 보장하는 최소 개수의 속성이어야 한다.
  • 불변성 : 속성값이 되도록 변하지 않아야 한다.
  • 존재성 : 속성값이 Null일 수 없다.

식별자의 분류

[대표성 여부]

  • 주 식별자 : 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자 / 다른 엔티티와 참조 관계로 연결
  • 보조 식별자 : 인스턴스를 식별할 수는 있지만, 참조 관계로 연결되지는 않음 / 다른 엔티티와 참조 관계 X

[스스로 생성되었는지 여부]

  • 내부 식별자 : 엔티티 내부에서 스스로 생성된 식별자
  • 외부 식별자 : 다른 엔티티에서 온 생성자, 다른 엔티티와의 연결고리 역할 (FK)

[단일 속성의 여부]

  • 단일 식별자 : 하나의 속성으로 구성된 식별자
  • 복합 식별자 : 두 개 이상의 속성으로 구성된 식별자

[대체여부]

  • 원조 식별자 : 업무 프로세스에 존재하는 식별자 ( 가공되지 않은 원래의 식별자 ) 
  • 대리 식별자 : 주 식별자의 속성이 두 개 이상인 경우, 그 속성들을 하나로 묶어서 사용하는 식별자 (두 개를 묶어서 만들어냄)

식별자 vs 비식별자

식별자 관계

자식 엔티티에 PK가 따로 없고, 다른 엔티티의 PK를 FK로 사용한다. 

부모 엔티티가 있어야 자식 엔티티를 생성할 수 있다. (1:1 또는 1:M)

비식별자 관계

부모 엔티티의 식별자가 자식 엔티티의 일반 속성이 되는 관계이다.

부모 엔티티가 없어도 자식 엔티티를 생성할 수 있고, 부모 엔티티가 삭제되어도 자식 엔티티가 존재할 수 있다.

출처 : https://snnchallenge.tistory.com/190


+ 기타 정리


 

반응형