4 분 소요

SQLD를 취득하기 위해 공부하는 과정에 작성한 ‘데이터 모델링의 이해’ 관련 정리이다.

데이터 모델링의 이해

데이터 모델의 이해

  • 모델링 (Modeling) : 현실에서 반영할 데이터를 저장할 데이터베이스를 구축하기 위한 분석·설계의 과정
    • 모델링 조건 : 현실 세계를 반영해야 함, 단순화하여 표현해야 함, 관리하고자 하는 데이터를 모델로 설계
  • 모델링 특징 : ‘현실 세계를 추상화, 단순화, 명확화하기 위해 일정한 표기법에 의해 표현하는 기법’
    • 추상화 (Abstraction) : 현실 세계의 아이디어나 개념을 일정한 형식으로 간략하게 표현하는 것
    • 단순화 (Simplification) : 복잡한 현실 세계를 정해진 표기법으로 단순하고 쉽게 표현하는 것
    • 명확화 (Clarify) : 불분명함을 제거하고 명확하게 해석할 수 있도록 기술하는 것
  • 모델링의 3가지 관점 : 데이터 관점 , 프로세스 관점, 데이터·프로세스의 상관 관점
  • 데이터 모델링 유의점 : 중복 (같은 데이터가 여러 엔티티에 중복으로 저장되는 것은 지양되어야), 비유연성 (데이터 모델은 수시로 변경되므로, 데이터 모델과 프로세스를 분리해야), 비일관성 (데이터 간 연관 관계에 대해 명확히 정의해야)
  • 모델링 3단계 : 개념적 데이터 모델링, 논리적 데이터 모델링, 물리적 데이터 모델링
  • 데이터 독립성 : 데이터베이스에 대한 사용자들의 관점과 실제 표현되는 물리적인 방식 분리
  • 3단계 스키마 구조 : 논리적 독립성, 개념적 독립성이 보장
    • 외부 스키마 (External Schema) : 각 사용자가 보는 데이터베이스의 스키마 정의 → 사용자 관점
    • 개념 스키마 (Conceptual Schema) : 모든 사용자가 보는 데이터베이스의 스키마 통합 → 통합 관점
    • 내부 스키마 (Internal Schema) : 물리적 저장 구조를 표현 → 물리적 관점
  • ERD (Entity Relation Diagram) : 시스템에 어떤 엔티티가 존재하고, 그들 간 어떤 관계를 표현하는 다이어그램

엔티티

  • 엔티티 (Entity) : 데이터베이스에서 식별 가능한 객체
    • 엔티티 특징 : 업무에서 쓰이는 정보이면서 업무 프로세스에 의해 이용되어야 함, 유니크함을 보장할 수 있는 식별자가 있어야 함, 영속적으로 존재하는 2개 이상의 인스턴스의 집합이여야 함, 반드시 속성을 가져야 함, 다른 엔티티와 1개 이상의 관계를 가지고 있어야 함
  • 엔티티 분류 : 유형 엔티티 (물리적 형태 존재, 안정적, 지속적), 개념 엔티티 (물리적 형태 없음, 개념적), 사건 엔티티 (행위를 함으로 발생, 빈번함, 통계 자료로 이용 가능)
  • 엔티티 발생 시점 : 기본 엔티티 (업무에 원래 존재하는 정보), 중심 엔티티 (기본 엔티티에서 파새오디어 행위 엔티티 생성), 행위 엔티티 (2개 이상의 엔티티로부터 파생)

속성

  • 속성 (Attribute) : 사람·사물을 정의할 때 사물이나 개념의 특징을 설명해줄 수 있는 항목
    • 속성 특징 : 더 이상 쪼개지지 않는 레벨, 프로세스에 필요한 항목이여야 함
    • 속성값 : 엔티티에 속한 하나의 인스턴스를 구체적으로 나타내주는 데이터
  • 엔티티, 인스턴스, 속성, 속성값의 관계 : 속성 ⊂ 인스턴스 ⊂ 엔티티
    1. 1개의 엔티티는 2개 이상의 인스턴스를 갖는다.
    2. 1개의 인스턴스는 2개 이상의 속성을 갖는다.
    3. 1개의 속성은 1개의 속성값을 갖는다.
  • 특성에 따른 속성 분류 : 기본 속성 (업무 프로세스 분석을 통해 바로 정의 가능한 속성), 설계 속성 (업무에 존재하지 않지만 설계할 때 도출된 속성), 파생 속성 (다른 속성의 속성값을 계산하거나 특정 규칙으로 변환되어 생성한 속성)
  • 구성 방식에 따른 속성 분류 : PK (엔티티의 인스턴스를 식별할 수 있는 속성), FK (다른 엔티티의 속성에서 가져온 속성), 일반 속성 (PK, FK를 제외한 나머지 속성)
  • 도메인 (Domain) : 속성이 가질 수 있는 속성값의 범위
  • 용어사전 : 속성의 이름을 직관적으로 부여하기 위한 업무사전
  • 시스템 카탈로그 : 시스템 자체에 관련이 있는 데이터를 담고 있는 데이터베이스 (읽기 연산만 가능)

관계

  • 관계 (Relation) : 엔티티와 엔티티와의 관계
    • 존재 관계 : 존재 자체로 연관성이 있는 관계
    • 행위 관계 : 특정한 행위를 함으로써 연관성이 생기는 관계
  • 관계 표기법 : 관계명 (엔티티와 엔티티가 어떤 관계를 맺고 있는지 나타내는 문장), 관계차수 (1:1, 1:N, N:N와 같이 각 엔티티에서 관계에 참여하는 수), 관계선택사양 (이 관계가 필수요소인지 선택사항인지 나타내는 말)

식별자

  • 식별자 (Identifier) : 속성 중에 각각의 인스턴스를 구분 가능하게 하는 속성
  • 식별자 분류 : 대표성 여부 (주식별자vs보조 식별자), 소스로 생성되었는지 여부 (내부식별자vs외부식별자), 단일 속성 여부 (단일식별자vs복합식별자), 대체 여부 (원조식별자vs대리식별자)

  • 주식별자 : PK → 하나의 속성이 주식별자가 될 수 있고, 여러 개의 속성이 주식별자가 될 수 있음
  • 주식별자 특징 : 유일성 (각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 함), 최소성 (유일성을 보장하는 최소 개수의 속성이여아 함), 불변성 (속성값이 되도록 변하지 않아아 함), 존재성 (속성값이 NULL일 수 없음)

데이터 모델과 SQL

정규화

  • 정규화 (Normalization) : 데이터 정합성을 위해 엔티티를 작은 단위로 분리하는 과정
    • 제1정규형 : 모든 속성은 반드시 하나의 값만 가져야 함
    • 제2정규형 : 엔티티의 모든 일반속성은 반드시 모든 주식별자에 종속되어야 함
    • 제3졍규형 : 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없음

반정규화

  • 반정규화 (De-Normalization) : 데이터의 조회 성능 향상을 위해 데이터 중복을 허용하거나 데이터를 그룹핑
    • 테이블 반졍규화 : 테이블 병합 (JOIN이 많아 테이블 통합, 1:M은 지양해야), 테이블 분할 (엔티티 일부 속성을 1:1의 엔티티로 만드는 테이블 수직 분할, 엔티티 인스턴스를 특정 기준으로 파티셔닝하는 테이블 수평 분할), 테이블 추가 (별도의 중복된 엔티티를 추가하는 중복 테이블 추가, 통계 테이블·이력 테이블·부분 테이블 추가)
    • 컬럼 반정규화 : 중복 칼럼 추가 (JOIN이 많아 컬럼 통합), 파생 칼럼 추가 (계산값을 미리 컬럼으로 보관), 이력 테이블 컬럼 추가 (조회 기준이 될 컬럼을 미리 추가)
    • 관계 반정규화 : JOIN이 많아 중복 관계 추가

트랜잭션

  • 트랜잭션 (Transaction) : 데이터를 조작하기 위한 하나의 논리 작업 다위
  • 널 (NULL) : 존재하지 않음, 값이 없음

데이터베이스

관계형 테이터베이스

  • 데이터베이스 (Database) : 데이터를 저장하는 공간
    • 관계형 데이터베이스 (RDB; Relational Database) : 관계형 데이터 모델에 기초한 데이터베이스 (모든 데이터를 2차원 테이블 형태로 표현한 뒤 각 테이블 간의 관계를 정의)
    • 테이블 (Table) : 세로 열인 컬럼 (Column)과 가로 행인 로우 (Row)로 구성
  • SQL : 관계형 데이터베이스에서 데이터를 다루기 위해 사용하는 언어

태그:

업데이트: