ShovelingLife
A Game Programmer
ShovelingLife
전체 방문자
오늘
어제
  • 분류 전체보기 (1066) N
    • 그래픽스 (57)
      • 공통 (19)
      • 수학 물리 (22)
      • OpenGL & Vulkan (1)
      • DirectX (14)
    • 게임엔진 (179) N
      • Unreal (69)
      • Unity (99) N
      • Cocos2D-X (3)
      • 개인 플젝 (8)
    • 코딩테스트 (221)
      • 공통 (7)
      • 프로그래머스 (22)
      • 백준 (162)
      • LeetCode (19)
      • HackerRank (2)
      • 코딩테스트 알고리즘 (8)
    • CS (235)
      • 공통 (21)
      • 네트워크 (44)
      • OS & 하드웨어 (55)
      • 자료구조 & 알고리즘 (98)
      • 디자인패턴 (6)
      • UML (4)
      • 데이터베이스 (7)
    • 프로그래밍 언어 (346)
      • C++ (167)
      • C# (88)
      • Java (9)
      • Python (33)
      • SQL (30)
      • JavaScript (8)
      • React (7)
    • 그 외 (9)
      • Math (5)
      • 일상 (5)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Source Code 좌측 상단에 복사 버튼 추가 완료
  • 언리얼 엔진 C++ 빌드시간 단축 꿀팁
  • 게임 업계 코딩테스트 관련
  • 1인칭 시점으로 써내려가는 글들

인기 글

태그

  • 클래스
  • c#
  • 함수
  • 언리얼
  • 유니티
  • 배열
  • 백준
  • Unity
  • 포인터
  • 프로그래머스
  • C++
  • 티스토리챌린지
  • 파이썬
  • string
  • 오블완
  • 그래픽스
  • 문자열
  • C
  • SQL
  • 알고리즘

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ShovelingLife

A Game Programmer

CS/데이터베이스

데이터 테이블의 종류 및 특성

2024. 8. 11. 18:15

1. 원장성 테이블 (Master Table)

구성 형태

업무의 핵심 개체(Entity)들로서 주로 업무성격의 주체(Subject, Source)에 대한 정보를 담고 있으며, 부속된 많은 자식 테이블(child table)들을 거느리고 있다, 또한 이력 테이블(History table)도 부속되어 있기에 dw 시스템을 구축할 때도 이와 같은 원장성 테이블은 아주 중요한 핵심 테이블(Key table) 역할을 하게 된다.

여기서 주체(Source)란 행위(Behavior)의 주체를 말한다. 쉽게 예를 들어 설명하면 모든 업무의 프로세스(process)는 주체와 행위, 그리고 대상(Target, Object)로 집약될 수 있다. 즉, "홍길동은 카드로 멋진 컴퓨터를 구입했다"라는 내용을 업무 프로세스 관점에서 바라보면 [홍길동]과 [카드]는 주체로서 각각 사람주체와 사물주체를 말하는 것이고, [구입했다]는 행위이며, [컴퓨터]는 대상이 되는 것이다.

 

데이터 성격

현재(가장 최신)의 상태와 속성 정보를 유지, 관리한다. 가령 고객 정보 마스터 테이블을 예로 들면, [홍길동]이란 사람은 많은 속성을 가지고있고 늘 최신의 정보상태를 유지한다. 속성들도 시간이 흘러도 변하지 않는 불변 속성과 시간의 경과에 따라 상태가 변하는 가변 속성이 존재한다. "생년월일", "주민번호", "성별" 등은 불변 속성이기에 처음 올바로 등록했다면 그 값은 절대로 변하지 않는다. "건강상태", "주소", "전화번호" 등은 가변 속성이기에 처음 등록 이후, 계속 변하게 된다, 따라서 최신의 정보를 늘 유지하기 위해 관리되는 항목이며, 이러한 가변 속성들을 관리하기 위해 이력 테이블(History table)이 존재하게 된다.

2. 거래성 테이블 (Transactional Table)

구성 형태

행위 (behavior) 테이블을 마말하는 것으로, "카드 거래 내역 테이블, 입출금 내역 테이블" 등이 해당 된다.

 

데이터 성격

원칙적으로 거래성 테이블은 등록만 되는 개념이지, 변경되는 개념이 아니다, 즉, "카드 거래 내역 테이블"을 본다면, 카드 승인시에 승인 기록이 저장되고, 이를 정정하기 위해서는 변경이 발생하는 것이 아니라, 취소 기록을 등록하게 된다. 어떠한 경우도 한 번 등록된 내용을 변경하는 경우는 없다, 따라서 이력 테이블은 존재하지 않는다.

3. 양면성 테이블 (Duplicity Table)

구성 형태

예를 들면 카드를 발급받기 위해서는 카드 신청서를 작성하듯 이 프로세스를 전산 시트메에 구축하게 되면 "카드 신청 테이블"이 존재하게 될텐데 신청이라는 행위의 활동이므로 이는 분명 거래성 테이블로 분류될 수 있는데, 온전한 거래성 테이블로 보기 힘든 이유가 신청서를 잘못 ㅏㄱ성했다고 동일한 내용을 수정(update)하는 경우가 발생하기 때문이다, 즉, 신청 시 주소가 틀렸다고 수정하고, 영문 이름이 틀렸다고 수정하고 한다는 것이다, 따라서 이런 특성 때문에 이력 테이블을 거느리는 형태를 띄게 된다. 꼭 이력 테이블이 존재한다는 의미보다는 설계 당시 이력 테이블이 고려되지 않았다면 실제로 이력테이블이 없을 수도 있다.

신청이란 행위의 정보를 저장한다는 측면에서 거래성 테이블(Transactional table)의 성격을 가지고 있고, 변경이 발생하고 이력 테이블을 거느리고 있다는 측면에서 원장성 테이블(Master Table)의 성격을 가지고 있는 것이다, 따라서 업무를 분석할 때, 양면성 테이블인지, 거래성 테이블인지 정확한 파악이 필요하다.

 

데이터 성격

최신의 상태 정보를 유지하고 있다, 다만 거래성 테이블의 특성을 겸하고 있으므로 이 테이블의 키값(key value) 구성은 [신청 번호]가 될 수 밖에 없다.

이력 테이블 (History Table)

구성 형태

이력 테이블은 원장성 테이블 (master table)의 변경된 상태 속성 정보를 보관하는 역할을 한다. 원장성 테이블의 외부에 동일한 구조를 가지고 있는 외부 이력 테이블(Outer History Table) 형태가 있을 수 있고 원장성 테이블의 내부에 상위키(upper key) 속성 칼럼을 포함시켜 내부순환(recursive) 구조를 가진 내부 이력 테이블(Inner History Table) 형태가 있을 수 있으며, 원장성 테이블이 중요 상태 정보만을 이력 관리하는 중요 항목 이력 테이블(Hot-Item History Table) 구조로 구성될 수 있다.

 

데이터 성격

변경된 상태 정보를 시작시점~종료시점의 구간으로 하는 선분 이력(Line History) 형태로 관리될 수 있고 변경 시점을 기준으로 하는 점 이력(Point History) 형태로 이력은 관리될 수 있다. 선분 이력 테이블(Line History Table)은 주로 원장성 테이블에 구축되며 점이력 테이블(Point History Table)은 주로 양면성 테이블에 일반적으로 구축된다.

 

출처

저작자표시 (새창열림)

'CS > 데이터베이스' 카테고리의 다른 글

NOSQL (개념, 특징, 장단점, RDBMS와의 차이점, 모델, 종류)  (0) 2024.08.27
데이터 웨어하우스(DW)란?  (0) 2024.08.16
데이터 모델링의 이해  (0) 2024.08.15
[DB] 데이터 딕셔너리  (0) 2024.08.05
함수적 종속 (Functional Dependency)  (0) 2024.07.25
    'CS/데이터베이스' 카테고리의 다른 글
    • 데이터 웨어하우스(DW)란?
    • 데이터 모델링의 이해
    • [DB] 데이터 딕셔너리
    • 함수적 종속 (Functional Dependency)
    ShovelingLife
    ShovelingLife
    Main skill stack => Unity C# / Unreal C++ Studying Front / BackEnd, Java Python

    티스토리툴바