소프트웨어 개발자/좋은 API, DB 설계하기

[좋은 DB 설계하기] 테이블 명 설계 비교 (_log, _results, _history)

yubi5050 2024. 6. 30. 17:11

배경

회사나 팀마다 로깅성 혹은 어떤 작업에 대한 변화 히스토리나 결과에 대해서 테이블 화 할 때

 

각자 정한 테이블명 규칙이 있거나

 

라이브러리 등 연동시 기본적으로 생성해주는 테이블명 등

 

혹은 개인적으로 어울린다고 생각하는 테이블 명이 있을 것 이라 생각한다.

 

나름의 기준으로 테이블 명 규칙을 적어보았다.

 

log, result, history

_log

  • 정의 : 시스템 레벨의 정보 저장인 경우, 시간의 흐름에 따른 경우, 일정 시간 후에 삭제 가능 경우
  • 예시
    - request_response_log : 요청/응답 로그
    - web_log : 웹 전반에서 발생하는 로그
    - system_log : 시스템에서 발생하는 로그
    - cron_log : 크론 등에서 발생하는 시스템 성 로그

 

_results 

  • 정의 : 작업(계산, 분석 등)에 대한 결과 / 외부 작업에 대한 처리 결과
  • 예시
    - payment_result : 외부 결제 서비스 처리 결과
    - sms_send_results : 외부 SMS 서비스 처리 결과 
    - django_celery_task_results : 내부 Django Celery 처리 결과
    - cron_results : 내부 크론 처리 결과

 

_history

  • 정의 : 특정 객체에 대한 변화 추적
  • 예시 
    - user_history : 유저라는 테이블의 데이터 변화 과정을 기록한다.
    - product_status_history : 상품의 상태 변경에 대한 히스토리