본문 바로가기

DB/SQLD

[SQLD] 데이터 모델링이란?

데이터 모델링

모델링

현실 세계 단순화해 표현하는 기법

  • 현실 세계 반영
  • 단순화해 설계
  • 관리할 데이터 모델로 설계

특징

  • 추상화
    • 일정한 형식으로 표현, 아이디어나 개념 간략히 표현하는 과정
  • 단순화
    • 정해진 표기법으로 단순히 표현
  • 명확화
    • 불분명함 제거, 명확히 해석 가능하도록 기술

관점

  • 데이터 관점
    • 데이터 위주 모델링
    • 업무 연관성, 데이터 간 관계
  • 프로세스 관점
    • 프로세스 위주 모델링
    • 처리중, 처리 예정인 일 모델링
  • 데이터와 프로세스의 상관 관점
    • 데이터-프로세스 관계 위주
    • 프로세스 흐름에 따른 데이터 영향 모델링

품질 유지

  • 중복
    • 동일 데이터 엔터티 중복 저장 지양
  • 비유연성
    • 데이터 모델과 프로세스 분리 → 유연성 높임
  • 비일관성
    • 데이터 중복 없는 경우에도 발생 가능
    • 연관성 고려 않고 일부 데이터 변경시 발생
    • 데이터 간 연관 관계 명확히 정의

모델링 단계

  • 개념적 데이터 모델링
    • 추상화 레벨 가장 높음
    • 업무 중심적, 포괄적
  • 논리적 데이터 모델링
    • 재사용성 가장 높음
    • DB 모델에 대한 key, 속성, 관계 등 모두 표현
  • 물리적 데이터 모델링
    • 성능, 가용성 등 물리적 성격 고려
    • 실제 DB로 구현 위한 단계

데이터 독립성

3단계 스키마 구조 통한 독립성 보장

3단계 스키마 구조

  • 외부 스키마
    • 사용자 관점, 각 사용자가 보는 DB 스키마 정의
  • 개념 스키마
    • 통합 관점, 모든 사용자가 보는 DB 스키마 통합
    • 전체 DB 표현
  • 내부 스키마
    • 물리적 관점, 물리적 저장 구조 나타냄
    • 실질적 데이터 저장 구조, 칼럼 정의, 인덱스 등 포함

스키마 구조에 의한 독립성

사용자 관점과 물리적 표현 방식 분리

  • 논리적 독립성
    • 개념 스키마가 변경되어도 외부 스키마는 영향받지 않음
  • 물리적 독립성
    • 내부 스키마가 변경되어도 외부/개념 스키마는 영향받지 않음

ERD

Entity Relationship Diagram

표기방식

  • Peter Chen
  • IDEF1X
  • IE/Crow’s Foot
  • Min-Max/ISO
  • UML
  • Case*Method/Barker

ERD 작성 순서

  • 엔터티 도출
  • 엔터티 배치
  • 엔터티 관계 설정
  • 관계명 기입
  • 관계 참여도 기입
  • 관계 필수/선택 여부 기입

엔터티

식별 가능한 객체

특징

  • 업무에서 쓰이는 정보
  • 유니크함 보장하는 식별자 존재
  • 2개 이상의 인스턴스 가짐
  • 속성 가짐
  • 다른 엔터티와 1개 이상의 관계 가짐

분류

  • 유형/무형
    • 유형 엔터티
      • 물리적 형태 존재
    • 개념 엔터티
      • 물리적 형태 없이 개념적으로 존재
    • 사건 엔터티
      • 행위에 의한 발생, 통계 자료로 이용 가능
  • 발생 시점
    • 기본 엔터티
      • 원래 존재하는 정보
      • 독립적 생성, 자식 엔터티 가질 수 있음
    • 중심 엔터티
      • 기본 엔터티로부터 파생
      • 행위 엔터티 생성
      • 업무에 중심적 역할, 데이터의 양 많음
    • 행위 엔터티
      • 2개 이상의 엔터티로부터 파생
      • 데이터의 잦은 변경 및 증가

명명 규칙

  • 업무에 쓰이는 용어
  • 한글은 약어 사용하지 않으며 영문은 대문자로 표기
  • 단수 명사로 표현, 띄어쓰기 하지 않음
  • 다른 엔터티와 의미상 중복될 수 없음
  • 해당 엔터티의 데이터 명확히 표현 가능

속성

  • 사물이나 개념의 특징 설명
  • 의미상 더 쪼개지지 않는 레벨
  • 프로세스에 필요한 항목

속성값

  • 엔터티에 속하는 인스턴스 구체적으로 표현하는 데이터
  • 하나의 속성은 하나의 속성값 가짐

관계

엔터티 $\supset$ 인스턴스 $\supset$ 속성

  • 한 엔터티는 둘 이상의 인스턴스 가짐
  • 한 인스턴스는 둘 이상의 속성 가짐
  • 한 속성은 하나의 속성값 가짐

분류

특성에 따른 분류

  • 기본속성
    • 분석에 의해 바로 정의 가능
  • 설계속성
    • 도출해낸 속성
  • 파생속성
    • 다른 속성의 속성값 계산, 변형
    • 데이터의 빠른 성능 보장

구성방식에 따른 분류

  • Primary Key(PK) 속성
    • 엔터티의 인스턴스 식별 가능한 속성
    • 인스턴스에 유니크함 부여
  • Foreign Key(FK) 속성
    • 다른 엔터티의 속성에서 가져온 속성
    • 다른 엔터티와의 관계 맺는 매개체 역할
  • 일반속성
    • PK, FK 속성 제외한 속성

도메인

속성이 가질 수 있는 속성값의 범위


관계

엔터티 간의 관계

  • 존재 관계
    • 존재 자체로 연관성 있는 관계
  • 행위 관계
    • 행위에 의해 연관성 생기는 관계

표기법

  • 관계명
    • 엔터티 간의 관계 알려주는 문장
    • 각 엔터티의 관점에서 하나씩 관계명 가짐
    • 현재형으로 명확한 표현 사용
  • 관계차수(cadinality)
    • 각 엔터티에서 관계에 참여하는 수
    • 1:1, 1:m, n:m
  • 관계선택사양
    • 관계의 필수/선택 여부
      • 필수적 관계
      • 선택적 관계

식별자

각 인스턴스 구분 가능하게 하는 대표적 속성

주식별자

  • 기본키에 해당하는 속성

조건

  • 유일성
    • 유니크함 부여
  • 최소성
    • 유일성 보장하는 최소 개수의 속성 집합
  • 불변성
    • 속성값은 되도록 불변
  • 존재성
    • 속성값이 NULL일 수 없음

분류

대표성 여부

  • 주식별자
  • 보조식별자
    • 인스턴스 식별 가능하나 주식별자 아님
    • 다른 엔터티와 참조 관계로 연결되지 않음
    • → FK로 쓰일 수 없음

스스로 생성 여부

  • 내부식별자
  • 외부식별자

단일 속성 여부

  • 단일식별자
  • 복합식별자

대체 여부

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

관계

  • 식별자 관계
    • 부모 엔터티의 식별자가 자식 엔터티의 주식별자
    • 부모 엔터티 반드시 존재
    • 1:1, 1:m 관계
  • 비식별자 관계
    • 부모 엔터티의 식별자가 자식 엔터티의 일반 속성
    • → 일반 속성은 NULL 값 가능
    • 부모 엔터티 없는 자식 엔터티 생성 가능
    • 자식 엔터티 존재하는 상황에서 부모 엔터티 삭제 가능

'DB > SQLD' 카테고리의 다른 글

[SQLD] 데이터 모델과 SQL  (0) 2024.01.10