소프트웨어 개발자/좋은 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 : 상품의 상태 변경에 대한 히스토리