[SQLD] 데이터 모델링

hwwwa·2022년 6월 1일
0

🍊 SQLD

목록 보기
2/16

데이터 모델링

  • 데이터 모델링 3요소: Entity, Relationship, Attribute
  • 데이터 모델링 단계
    • 개념적 데이터 모델링 (가장 추상적)
      • 추상화 수준이 높고 업무중심적이며 포괄적인 수준의 모델링 진행.
      • 전사적 데이터 모델링
      • EA 수립 시 많이 이용
    • 논리적 데이터 모델링
      • 데이터 모델링이 최종적으로 완료된 상태라고 정의할 수 있음
    • 물리적 데이터 모델링 (가장 구체적)
      • 외래키는 물리 모델에서 반드시 구현되지는 않음
  • 데이터 모델링 목적
    • 시스템 구현과 업무 분석 및 업무 형상화
    • 일정한 표기법으로 업무 내용의 정확한 분석과 실제 DB 생성으로 개발 및 데이터 관리를 위함
  • 데이터 모델링 유의사항: 중복, 비유연성, 비일관성
  • 절차
    1. 정규화
    2. DB 용량 산정
    3. DB에 발생하는 트랜잭션 유형 파악
    4. 용량과 트랜잭션 유형에 따라 반정규화
    5. 이력 모델 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등
    6. 성능 관점에서 데이터 모델 검증

엔티티

  • 독립 엔티티: 현실세계에 존재하는 엔티티
  • 업무중심 엔티티: 트랜잭션이 실행되면서 발생하는 엔티티
  • 종속 엔티티: 주로 1차 정규화로 인해 관련 중심 엔티티로부터 분리된 엔티티
  • 교차 엔티티: M:N 관계 해소 목적
  • 유무형에 따른 분류
    • 유형 엔티티: 업무에서 도출되며 지속적으로 사용됨. 물리적 형태 있음
    • 개념 엔티티: 개념적으로 사용. 물리적 형태 없음
    • 사건 엔티티: 비즈니스 프로세스를 실행하며 생성되는 엔티티
  • 발생 시점에 따른 분류
    • 기본 엔티티(키 엔티티): 업무에 원래 존재하는 정보. 다른 엔티티와의 관계에서 생성되지 않고 독립적으로 생성됨. 타 엔티티의 부모 역할을 함. 고유한 주식별자
    • 중심 엔티티: 기본 엔티티와 행위 엔티티 중간에 있는 엔티티. 기본 엔티티로부터 발생되고 행위 엔티티를 생성함
    • 행위 엔티티: 2개 이상의 엔티티로부터 발생하는 엔티티. 지속적으로 정보가 추가되고 변경됨
  • 엔티티 특징
    • 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 함
    • 유일한 식별자에 의해 식별 가능해야 함
    • 영속적으로 존재하는 두 개 이상의 인스턴스 집합이어야 함
    • 업무 프로세스에 의해 이용되어야 함
    • 반드시 두 개 이상의 속성이 있어야 함
    • 다른 엔티티와의 최소 한 개 이상의 관계 (단, 통계성, 코드성은 생략 가능)
  • 엔티티 명명 방법
    • 현업에서 사용하는 용어 사용
    • 가능한 약어 사용 지양
    • 단수 명사 사용
    • 모든 엔티티를 통틀어 유일한 이름 부여
    • 생성의미대로 이름 부여

속성

  • 인스턴스의 특성들. 속성은 인스턴스들의 집합임
  • 분류
    • 기본속성
    • 파생속성: 조회시 빠른 성능을 위해 원래 속성의 값을 계산해 저장. ex) 근무기간
    • 설계속성: 원래는 존재하지 않지만 필요에 따라 설계자가 추가. ex) 주문번호
  • 도메인
    • 엔티티의 속성에 대해 어떤 유형의 값이 들어가는 지 정의
    • 데이터 유형, 크기, 제약조건 등 값의 범위
    • check, primary key, ...

관계

  • 존재적 관계와 행위에 의한 관계가 있음
  • UML은 연관 관계와 의존 관계의 표기법이 다름(실선과 점선)
  • 관계 표기법
    • 관계 명 (Relationship Membership)
      • 엔티티간 관계에 맺어진 형태. 관계시작점과 관계끝점
    • 관계 차수 (Relationship Degree/Cardinality)
      • 두 엔티티 간 관계에서 수행되는 경우의 수
    • 관계 선택 사양 (Relationship Optionality)
      • 관계에서 항상 참여하는지 아니면 참여할 수도 있는지를 나타내는 방법따라 필수참여 관계(Mandatory), 선택참여 관계(Optional)로 나뉨
  • 관계 도출 시 체크 사항
    • 업무 기술서, 장표에 관계 연결을 가능하게 하는 동사(Verb)가 있는가?
    • 업무 기술서, 장표에 관계 연결에 대한 규칙이 서술되어 있는가?
    • 두 엔티티 사이에 관심있는 연관 규칙이 존재하는가?
    • 두 엔티티 사이에 정보의 조합이 발생되는가?
  • 식별자
    • 인조 식별자: 시스템적으로 부여됨. 업무적 생성이 아님. ex) 주문번호 (= 구매자ID + 주문일자 + 순번)
    • 본질 식별자: 인스턴스 탄생과 함께 업무적으로 부여되는 본질적인 속성. ex) 사번

성능 데이터 모델링

  • 아키텍처 모델링: 데이터 구조 변경. 파티션, 테이블, 정규화, 반정규화. 가장 효과적
  • SQL 명령문 튜닝: 조인 수행 원리, 옵티마이저, 실행계획

슈퍼/서브타입

  • 용량이 적은 경우: one to one 사용. 트랜잭션이 개별로 들어감
  • 용량이 큰 경우: 트랜잭션 유형으로 분류
    • 트랜잭션 유형에 따라 처리 가능
      • 공통/차이점에 따라 별개로 트랜잭션이 들어옴: 슈퍼 서브라는 plus 타입 사용
      • 전체 통합 트랜잭션: 싱글 타입. 하나의 통합된 테이블

0개의 댓글