테이블 구조
모의 주식 대회 서비스의 자산은 현재 아래 두 테이블을 기준으로 구성되어 있다.
Account (계좌)
- account_id
- user_id
- is_ended
Holdings (보유 주식)
- holding_id
- account_id
- stock_code
- quantity
- final_price
하나의 Account 아래에 여러 Holdings가 존재하는 구조
문제 상황
초기 설계에서는 대회 종료 여부(is_ended)를 나타내는 컬럼이 존재하지 않았다.
그래서 Holdings의 값을 기준으로 대회 종료 여부를 판단하려고 했다.
holdings.final_price != 0 → 대회 종료
문제 인식
이 구조의 흐름은 다음과 같다
대회 종료 → final_price 저장 → 조회 시 final_price로 종료 판단
즉 결과 데이터를 기반으로 상태를 역으로 추론하는 구조였다.
문제가 되는 이유
- final_price는 상태가 아니라 결과값
- 일부 종목만 업데이트되면 종료 여부 판단이 깨질 수 있음
- Holdings는 종목 단위
- 대회 종료는 계좌 단위
해결 방법
대회 종료 여부를 Account에서 직접 저장하도록 변경했다.
account.is_ended = false → 진행 중
account.is_ended = true → 종료
'Project' 카테고리의 다른 글
| Kafka 역직렬화 에러 해결하기 (0) | 2026.05.04 |
|---|---|
| 모의 주식 프로젝트에서 Kafka로 서비스 간 이벤트를 주고받기 (0) | 2026.05.03 |
| 주식 대회 정산 시 가격 조회 캐싱이 필요한가? (0) | 2026.04.28 |
| 테이블 필요성에 대한 설계 고민과 소통 (0) | 2026.04.20 |
| 보유 주식 정보의 서비스 위치에 대한 고민 (0) | 2026.04.18 |