[SQLD] 데이터 모델링의 이해 (SQLD, D-14)

Updated:

Categories:

Tags: ,

📌 개인적인 공간으로 공부를 기록하고 복습하기 위해 사용하는 블로그입니다.
정확하지 않은 정보가 있을 수 있으니 참고바랍니다 :😸
[틀린 내용은 댓글로 남겨주시면 복받으실거에요]

Chapter 1 데이터 모델링의 이해 요약

데이터 모델링

데이터 모델링 단계

모델링 단계 추상화 수준 Description
개념적 데이터 모델링 높다 가장 먼저 수행하는 데이터 모델링
업무와 개념 중심으로 모델링을 수행    
논리적 데이터 모델링 중간 개념적 모델링을 기본으로 하여 키, 속성, 관계 등을 정의하며 정규화를 통한 중복 저장의 최소화, 식별자의 확정 등을 수행
물리적 데이터 모델링 낮다 데이터베이스를 실제로 구축하고 성능, 보안, 저장 등 물리적인 수준에서 모델링 수행
반정규화를 통한 성능최적화 최적화 작업을 수행    

데이터 모델링의 관점

  • 데이터 관점 (대상, what)
    • 업무를 구성하는 데이터에 집중하여 어떤 데이터들이 서로 관계를 맺고 사용되는지를 모델링
    • 정적분석, 구조분석을 기반
  • 프로세스 관점 (처리방법, how)
    • 업무의 흐름에 집중
    • 동적 분석, 도메인 분석
  • 데이터와 프로세스의 상관관점 (대상과 처리방법의 상관관계, Interaction)
    • 데이터와 프로세스가 어떻게 관계를 맺고 영향을 주는지 모델링
    • CRUD 분석을 기반으로 함

ANSI-SPARC에서 정의한 3단계 스키마 구조

  1. 외부스키마 : 사용자 관점 (다중 사용자 뷰)
  2. 개념스키마 : 설계자 관점 (통합 뷰)
  3. 내부스키마 : 개발자 관점 (물리적 뷰)
  4. 3단계 스키마 구조를 통해 보장되는 데이터 독립성
    • 논리적 데이터 독립성 : 외부스키마와 개념스키마간의 독립성, 개념스키마가 변경되어도 외부스키마는 영향을 받지 않는다.
    • 물리적 데이터 독립성 : 개념 스키마와 내부스키마 간의 독립성, 내부스키마가 변경되어도 개념스키마나 외부스키마는 영향을 받지 않는다.

ERD 작성 순서

엔티티 도출 → 엔티티 배치 → 관계도출 → 관계명, 관계차수, 관계선택사양 기술

Entity

엔티티의 분류

  1. 발생 시점/ 상속 관계에 따른 분류
    • 기본 엔티티 : 주식별자를 가지는 독립적으로 생성되는 엔티티
    • 중심 엔티티 : 기본엔티티로부터 주식별자를 상속받아 생성되며 업무의 중심역할을 하는 엔티티
    • 행위 엔티티 : 두 개 이상의 엔티티를 상속받아 생성되는 엔티티, 자주 변경되거나 데이터 양이 계속 증가된다.
  2. 물리적 형태의 존재여부에 따른 분류
    • 유형 엔티티: 물리적 형태가 존재하는 엔티티 (ex. 학생, 상품)
    • 개념 엔티티 : 물리적 형태 없이 개념적으로 정의되는 엔티티 (ex. 부서, 상품분류)
    • 사건 엔티티 : 업무를 수행하면 서 발생하는 행위나 이벤트를 나타내는 엔티티 (ex. 주문, 대여, 수강)

엔티티 명명법

  • 엔티티 생성 의미대로 이름을 부여하고 간결하고 명확하게 표현한다
  • 약어 사용하지 않지만 , 너무 길어지면 약어를 표준화하여 사용할 수 있다.
  • 영문의 경우 대문자를 사용하고 단수 명사를 사용한다.
  • 협업의 업무 용어를 사용하여 업무상의 의미를 분명하게 한다.
  • 모든 엔티티의 이름은 서로 구별할 수 있도록 유일해야 한다.
  • 의미상 중복이 없어야 한다.

속성

도메인

  • 속성이 가질 수 있는 값의 범위
  • 도메인이 지정된 속성은 해당 도메인의 데이터 타입, 크기, 제약사항을 따른다.

식별자

주식별자

주식별자는 해당 엔티티 인스턴스를 유일하게 구별해주는 식별자로서 네가지 성질을 만족해야 함

  • 유일성 : 엔티티의 인스턴스를 유일하게 구별할 수 있어야 한다.
  • 최소성 : 최소 개수의 속성이 되어야 한다.
  • 불변성 : 최초 생성 시 부여된 값에서 변경되지 않고 유지되어야 한다.
  • 존재성 : Not Null

식별자의 분류

  1. 대표성의 여부
    • 주식별자 (PK) : 해당 엔티티 인스턴스를 유일하게 구별할 수 있는 식별자로 유일성, 최소성, 불변성, 존재성을 만족하고 다른 엔티티와 참조관계를 연결할 수 있는 식별자
    • 보조식별자 (AK): 엔티티를 유일하게 구별할 수 있는 식별자 이기는 하나 대표성을 가지지 못하며 다른 엔티티와 참조관계를 연결할 수 없는 식별자
  2. 스스로 생성 여부
    • 내부 식별자 : 엔티티 내부에서 스스로 만들어지는 식별자
    • 외부 식별자(FK) : 관계를 통해 다른 엔티티로 받아오는 식별자
  3. 속성의 수
    • 단일 식별자 : 식별자를 구성하는 속성이 하나인 식별자
    • 복합 식별자 : 식별자를 구성하는 속성이 둘 이상인 식별자
  4. 대체 여부
    • 본질 식별자: 업무에 존재하는 본래의 식별자, 비즈니스 프로세스에 의해 만들어지는 식별자
    • 인조 식별자 (=대리식별자): 업무에 존재하지 않으나 원조 식별자가 너무 복잡하게 구성되어 있어 인위적으로 만든 식별자

후보키 : 유일성과 최소성을 만족하는 속성으로 주식별자, 보조식별자 모두 해당

식별자/ 비식별자 관계

  1. 식별자
    • 엔티티간의 강한 연결관계
    • 실선으로 표현
    • 부모와 자식간의 같은 생명주기
  2. 비식별자
    • 약한 연결관계
    • 점선으로 표현
    • 부모와 자식간의 다른 생명주기

갑자기 프로젝트하면서 엔티티 명명법이 헷갈렸었는데 api는 복수여야하는데 엔티티는 또 단수여야하니까 헷갈렸던 것 같다. 수업때는 엔티티 간의 관계 (여기서는 카디널리티 라고 하는 듯)에만 초점이 맞춰져 있어서 알지만 생소한 용어가 많았다. 그래도 정처기 필기 공부할 때 보던 단어들이라서,, 식별자 비식별자, 후보키 이런거 대충 느낌만 알았는데 조금 더 자세히 공부할 수 있었다






Database 카테고리 내 다른 글 보러가기

Leave a comment