선분 이력

Taeha Kim·2020년 10월 3일
1

Database

목록 보기
6/8
post-thumbnail

이력 관리

이력이란 데이터베이스에서 변경된 데이터를 관리해야할 필요가 있을때 이력관리를 하게됩니다.
(예를들어서 환률의 변화에 대해서 분석하고자 할때 변경된 데이터를 관리하는것)

점 이력 VS 선분 이력

점 이력

  • 데이터의 변경이 발생한 시각만을 관리하며, 특정 시점에 대해서 데이터를 조회할때 정보를 찾을수 없게 됩니다.

예를 들어서 아래와 같은 회원 등급을 관리하는 테이블이 있다고 하면 2020년 07월 30일에는 회원 등급이 어떻게 되는지 찾을 수가 없습니다.

# 회원번호# 등록일자회원 등급
12020-07-203
12020-08-101
12020-09-302

선분 이력

  • 데이터의 변경이 시작한 시점(유효시작일자)부터 다시 데이터의 변경이 발생하기까지의 시점(유효종료일자)을 관리합니다.

데이터를 선분 이력으로 관리하게 되면, 점 이력과는 다르게 특정 시점에 대한 데이터를 조회할 수 있습니다. 2020년 07월 20일 부터 2020년 08월 01일까지 회원등급이 3등급이므로 2020년 07월 30일과 같은 특정 시점의 회원등급을 알 수있습니다. (2020년 07월 30일의 회원등급은 3등급)

# 회원번호# 유효시작일자유효종료일자회원 등급
12020-07-202020-08-013
12020-08-022020-09-291
12020-09-309999-12-312

선분 이력 관리 대상 선정

  • 변경 내역을 감시할 필요가 있는가?
  • 시간의 경과에 따라 데이터가 변할 수 있는가?
  • 시간의 경과에 따라 관계가 변할 수 있는가?
  • 과거의 데이터를 조회할 필요가 있는가?
  • 과거 버전을 보관할 필요가 있는가?

주의점

선분 이력 종료점에 NULL을 사용하면 안된다.

  • NULL을 사용하면 비교를 할 수 없기에 사용하면 안됩니다.
  • 인덱스를 사용하지 못하므로 성능이슈가 발생하게 됩니다.

선분 이력 종료 시점에는 최대치를 부여

  • 선분 이력이 종료되지 않았으면 계속 관리되는 중인것을 표시하기 위해서 최대치를 부여합니다.
    예를 들어서 날짜라면 9999-12-31을 부여하고, 이 값을 종료점의 디폴트 제약( Default constraints)으로 설정해줍니다.
profile
함께 성장하는 개발자가 되고 싶습니다.

0개의 댓글