Event History Model

이벤트 이력 모델은 행동의 정의와 실제로 일어난 행동의 로그를 분리해, 분석용 이력을 정규화하면서도 행동 맥락을 남기는 패턴이다.[1]

기본 모델

테이블 역할 핵심 연결
actions 화면 이동처럼 큰 행동의 정의 action_id
action_logs 사용자가 실제로 수행한 action user_id, action_id
events 버튼 클릭·스크롤 같은 세부 행동의 정의 event_id
event_logs 실제 event 발생 기록 action_log_id, 값

원문은 사용자 마스터와 함께 위 정의 테이블·로그 테이블을 나누고, event log가 action log에 연결되는 구조를 제안한다.[1:1]

맥락을 확장하는 순서

flowchart LR
    A[Action definition] --> AL[Action log]
    E[Event definition] --> EL[Event log]
    AL --> EL
    EL --> M[Key-value metadata]
  1. 화면 전환 맥락은 event_logs에 from_screen·to_screen 컬럼을 추가해 기록하고, event log는 action_log_id로 action log에 연결한다.[1:2]
  2. 고정 열로 표현하기 어려운 view_stack, target_element_id 같은 값은 key-value 메타데이터로 확장한다.[1:3]
  3. event와 action의 연결을 유지해 "어떤 흐름에서 어떤 세부 동작이 일어났는가"를 분석할 수 있게 한다.[1:4]

적용과 절충점

관련

출처


  1. 이벤트 히스토리 설계 — action/event 정의와 로그의 분리, 화면 전환 컨텍스트, key-value 메타데이터, 하이브리드 최종 모델을 제시한다. event_logs 핵심 컬럼 "event_log_id, action_log_id" (L29), "event_logs에 from_screen, to_screen 컬럼 추가" (L37), "타입별 컬럼(value_int 등)은 비정형 정보 저장에 부적합 → NULL 값 증가" (L49), 최종 설계 "정규화된 구조 (정의/로그 분리)", "+ 타입 명시 컬럼 (action_logs)", "+ Key-Value 확장 (event_log_attributes)", "+ 인과관계 추적 (trigger_action_log_id)" (L82-85) ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎