디비 설계 질문입니다. 0 1 5,046

by 김원현 [DB 모델링/설계] 테이블설계 포인트 차감 적립 [2013.04.04 09:34:46]


포인트를 적립을 받아 그포인트를 사용하고 

적립된 포인트중 60일이 경과된 사용안한 포인트는 일일배치로 

차감하는 프로그램입니다. 

예상설계는 

마스터테이블 
--------- 
유저id(pk) 
잔여포인트수 

======== 

적립테이블 
--------- 
유저id(pk) 
적립seq(pk) 
적립포인트 
일시 

======== 

사용테이블 
------------ 
유저id(pk) 
사용seq(pk) 
사용포인트 
일시 

======== 

이렇게 3개로 구성하려고 합니다. (추가되어도 상관없음) 

그리고 화면에 보여지는 이력은 

2.1일 | 적립 | 30p 
2.2일 | 적립 | 20p 



3.15일 | 사용 | 40p 



4.2일 | 기간경과차감 | 10p 

이런식으로 이력을 남기고 싶고 

다른 테이블이나 마스터 테이블에 

차감예정포인트 컬럼을 두어 배치가 돌때 그컬럼만큼만 

차감 시켜주고 싶습니다. 

그런데 문제는 1일날 20p 적립되었고 2일날 10p 적립되었는데 3일날 25p를 사용했다면 

2일에서 60일이 경과 후 사용하지 않은 5p를 차감해야 한다는것 계산을 해서 넣어줘야되는데 

프로그램적으로 풀기도 애매하고 DB로 풀기도 애매합니다. 
by 마농 [2013.04.04 13:59:26]

적립테이블과 사용테이블사이에 관계를 맺는 차감테이블이 하나 있으면 어떨까요?


적립테이블 ---< 차감테이블 >--- 사용테이블


차감테이블
유저id(pk)
적립seq(pk)
사용seq(pk)
차감포인트


적립
ID Sq1 Point yyyymmdd Contents
01 001 00010 20130101 가입감사포인트접립
01 002 00020 20130102 첫거래감사포인트적립


사용
ID Sq2 Point yyyymmdd Contents
01 001 00025 20130103 배송비사용포인트차감
01 002 00005 20130303 포인트소멸 --> 3/3(1/2 부터 60일 경과) 배치작업 수행시 자동계산 입력


차감
ID Sq1 Sq2 Point
01 001 001 00010 --> 1/3 사용분 발생시 (트리거 또는 어플리케이션 로직)으로 입력
01 002 001 00015 --> 1/3 사용분 발생시 (트리거 또는 어플리케이션 로직)으로 입력
01 002 002 00005 --> 3/3 배치작업 수행시 자동계산 입력

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입