회원 DB를 만들고 있는데..
포인트 관련해서 어떤게 좋을지 헷갈리네요....
기간에 따른 포인트 증감을 확인할 수 있어야 하니까...
획득하거나 잃을때마다 로그성 데이터를 넣어줄 테이블이 필요한데...
정작 사용자의 현재 보유 포인트를 알려면 별도 테이블에 포인트 항목을 만들어줘야 하는게 맞는지...
그렇다면 이력테이블과 현재값테이블 간 데이터 검증을..
DB단에서 해줘야하는지 프로그램에서 해줘야 하는지...ㅠㅠ
조언 부탁드립니다....
1. 회원 테이블
- 회원id(고유)
- 보유포인트
2. 포인트 테이블
- 포인트고유번호(고유)
- 회원id(외래키)
- 포인트증감값(+, -)
- 포인트 사유
- 일시
위와 같이 테이블을 만드는게 맞을 것 같구요...
두 테이블간 값 검증이 걸리더라구요.
생각해본 방법들은...
(1) 저장프로시저(?)를 이용해서 항상 두개의 테이블을 한꺼번에 작업
(2) 트리거를 이용해서 포인트 테이블에 변경이 있을때마다 회원 테이블의 포인트 값을 변경해줌(update)
(3) 프로그램단에서 처리. (1)의 내용을...
(4) 그 외 방법. 회원 테이블에서 보유포인트 값을 관리하지 않고, 별도의 뷰를 만들어서 조회를 할때마다 포인트 테이블에서 회원id로 그룹을 만들어서 sum으로 포인트를 계산해주는 방법.................
-> 생각해보니 이 경우 0 포인트 이하인지 아닌지 체크하려면 또 무언가를 해야되겠군요.
(5) 테이블 구조를 위와 같은 구조가 아닌 다른 방법으로 짜는 경우.
데이터 사용은 회원 1인당, 포인트 조회(1일 수시) > 포인트 차감(1일 수시) > 넘사벽 > 포인트 충전(1주일~한달에 한번) 순으로 많을 것 같습니다.
DB 부하와 값을 검증하는 것 까지 생각한다면 어떻게 짜는게 좋을까요?