관계형데이터모데링노트 요약

[이력데이터 설계 1]

mitomi 2024. 2. 21. 22:28
반응형
SMALL

이력데이터 설계하는  방법

- 엔터티 단위 이력/ 속성 단위 이력/ 속성그룹 단위 이력 설계방법있음

 

1. 엔터티 단위 이력

원천 엔터티인 계좌엔터티에서 속성값이 하나라도 변경되면 변경전의 전체속성을 별도의 이력 엔터티에서 관리하는 방법 ˘ 장점 : 인스턴스의 스냅샷 데이터이기 때문에 저장하시 쉽고 해당 시점에 전체 데이터 즉 변경된 속성값과 변경되지 않으 속성값을 한번에 액세스로 조회하기 쉽다

˘ 단점 : 엔터티를 통째로 이력관리하는방법은  다른 방법에 비해 저장공간 낭비가 심하다. 

             어떤 속성값이 변경됐는지 알기 어려워 변경된 속성값만을 조회하기는 쉽지 않다.

˘  특정시점의 전체속성값을 조회하는 요건이 많을때 사용

 

2. 속성 단위 이력 

변경된 속성의 데이터만을 별도로 관리하는 방법.

˘ 장점 :  저장공간 절약, 변경된 속성만 관리하므로 무엇이 변경되었는지 명확함.

˘ 단점 :  과거특정한 시점에 대해 변경된 속성 값과 변경되지 않은 속성값을 같이 조호하기가 쉽지 않다.

 

3. 속성 그룹 단위 이력 

속성 중 내용(도메인)이 유사하거나 같이 사용될 수 있는 속성을 묶어서 별도의 엔터티에서 이력 데이터를 관리하는 방법.

묶인 속성 중의 하나라도 변경되면 그 시점의 묶인 속성 전체를 이력데이터로 그대로 저장한다. 

ex) 계좌 엔터티에서 계좌비밀번호 속성과 ARS비밀번호 속성을 묶어서 별도의 이력데이터에서 관리하는 것

 엔터티 단위로 관리하는 방법과 개별속성을 관리하는 방법의 장점을 수용한 방식이다.

˘ 장점 :  유사한 성격의 이력데이터가 하나의 엔터티에서 관리되므로 엔터티의 성격이 분명해지는 장점도 있어 요건에 따라 가장 효율적인 방법이다.

 

 

이력 데이터를  관리하는 방법을 한두가지로 획일화 하려는 경향이 있다. 모든이력데이터를 엔터티 또는 속성단위로 관리한다거나, 개별 속성 단위로 관리하는것으로 정하는것은 바람직하지 않다. 엔터티의 성격과 업무요건, 중요도에 맞춰 적절한 방법을 사용해야 한다.

 

1. 이력 데이터를 설계하는 방법

 엔터티 단위로 이력데이터 설계 방법은 두가지로 나눌수 있음(별도 엔터티로 구성/원천과 이력 함께 관리)

 별도의 엔터티에서 관리하는 방법(실체 엔터티, 기준 엔터티, 행위 엔터티로 나눠서 설명)

     

실체 엔터티 : 계좌 엔터티는 원천 엔터티이면서 실체 성격의 엔터티이다.

      원천 데이터는 엔터티 성격을 정의한 엔터티 자체이며, 이력데이터의 틀이 되는 엔터티이다. 원천 데이터를 관리하는 계좌 엔터티는 변경 없이 그대로 존재하며, 이력 데이터는 원천 엔터티와는 별도의 엔터티인 계좌 이력 엔터티에서 관리한다. 이 모델은  두종류의 데이터(원천데이터와 변경데이터)가 같이 사용되는 경우가 거의 없을때 사용. 하위 엔터티가 있을 경우 이 모델은 적합하다.

 

원천엔터티에 대한 이력 모델

 

만약 하위 엔터티가 존재하여 이모델밖에 사용못하는데 만약 원천과 변경 데이터를 조회할 일이 많다면 비효율이 발생한다. 이를 해결학 이해 계좌이력 엔터티에 원천 데이터를 중복 관리할 수 있음.이는 비정규화의 일종인 중복데이터를 사용하는 방법이다. 계좌이력 릴레이션의 첫번째와 두번째 인스턴스는 변경되지 않은 데이터로 계좌 릴레이션의 인스턴스와 같다. 변경되지 않았다는 논리적인 의미로 변경일자를 9999-12-31로한다. 이런 방법은 원천데이터와 변경 데이터를 동시에 조회하는 요건의 중요도에 따라 적용할 수 있지만, 데이터의 중복이 심하게 발생하므로 원칙적으로 사용을 지양해야 한다.

이력 엔터티에 원천 데이터를 중복으로 관리하는 릴레이션

 

이 모델은 두종류의 데이터(원천데이터와 변경데이터)가 같이 사용될 일이 드물 때 사용한다. 원천과 변경 데이터가 같이 사용되면 두번째 방법을 사용하는 것이 좋다.

 

기준엔터티

환률 엔터티는 기준 엔터티이며 원천 데이터다. 이 엔터티는 기준일자 속성까지 포함해서 환율을 관리한다. 환율 데이터를 일자별로 관리하는 요건의의해서 환율 데이터가 매일 추가된다. 아래와 같이  원천데이터를 설계했다면 현재도 살아있는 원천 데이터이다. 입력된 날짜인 기준일자(2028-01-01)에 해당하는 환율은 여전히 그대로다. 과거 데이터라고 원천데이터가 아닌것은 아니다. 주식별자인 기준일자에 생성된 원천데이터이다.

원천 엔터티인 기준 엔터티 및 이력데이터

 

  이 데이터가 변경되고 이에 대한 이력 데이터를 설계했다면 위와 같이 설계할 것이다.

환율 엔터티에 현재의 환율과 과거의 환율데이터가 존재하고 환율이력 엔터티에는 변경된 환율데이터가 존재한다. 오늘 환율이든 예전 환율이든 변경된 데이터를 관리하는 엔터티다. 하지만 과거의 환율이 변경되는 경우는 거의 없을 것이며, 일자를 기준으로 오늘 환율이 변경되지 않을 것이다.

 

환율 데이터에 대한 원천 엔터티 설계방법은 현재의 환율만 관리하도록 설계하는 것이다.

 

현재 환율만 관리하는 원천데이터 및 이력모델

이모델을 사용하면 원천 엔터티인 환율엔터티는 현재 환율만 관리하도록 설계했기 때문에 현재데이터만 존재하고, 환율이력 엔터티는 현재환율이 변경된 데이터가 존재 즉 과거 데이터만 존재한다.

 

행위 엔터티

행위 엔터티 중 종속관계 모델과 종속관계 이력데이터

-주문 엔터티 속성이 변경되면 주문이력 엔터치만 이력 데이터를 생성하고, 주문상품 엔터티의 속성만 변경되면 주문상품이력 엔터티 뿐 아니라 주문이력 엔터티에도 이력데이터를 생성해야 한다, 원천 엔터티가 종속관계 모델이면 이력엔터티도 종속관계모델이어야 한다.

 

원천데이터와 변경데이터를 별도의 엔터티에서 관리하는 방법의 장점은 이력데이터를 생성하는 게 다른 방법에 비해 쉽다는 점.  변경 데이터 때문에 모델 구조가 어려울수 있는데 이방법은 변경데이터를 별도로 관리하기 때문에 원천데이터를 관리하기 수월하다, 하위 엔터티에 미치는 영향도 차단했기 때문에 모델이 안정적이다.!!!

단점 원천엔터티와 거의 동일하게 유지해야 하는 점은 부담이다. 계좌엔터티에 속성이 추가되면 계좌이력엔터티도 속성을 같이 추가해줘야 함. 엔터티가 늘어는 것도 부담. 데이터 중복이 심해 데이터 저장공간이 많이 소비

이력 데이터를 인스턴스단위로 관리하므로 데이터가 변경된 속성이 무엇인지 알기 어렵다는 단점

만약 변경된 속성값만을 알아야 한다면 이방법은 사용할 수 없고, 다른방법을 사용해야 함.

 

실무에서는 이력데이터를 별도로 관리하는 방법을 가장 많이 사용한다. 만약 하위 엔터티가 존재한다면 이방법을 사용해야함.

728x90

'관계형데이터모데링노트 요약' 카테고리의 다른 글

코드속성  (0) 2024.08.26
공공데이터베이스 표준화  (0) 2024.02.23
관계 명  (0) 2024.02.01
관계비  (0) 2024.01.24
식별 관계와 비식별 관계  (0) 2023.12.30