2016-06-25 2 views
-1

개인과 주간 지불이있는 상황이 있습니다.
각 사람이 일정 금액을 지불해야한다고 가정 해 보겠습니다.
그가 100,000에 도달하지 못하면 다음 주까지 계속됩니다.
그가 100,000을 통과하면 다음 주에 전달 된 잔액만큼 금액이 감소합니다.
토요일에 주 시작합니다.

나는 이와 같은 디자인을 생각하고있었습니다. 나는 그것이 틀렸다는 것을 안다. 그래서
는 또한 나는이 사용자가이 주에 대한 자신의 회비를 지불 한 경우 표시해야이

my rough designMySQL 데이터를 매주 삽입하십시오.

업데이트에 나에게 도움이됩니다. 그러므로 지켜야 할 지위가 있습니다.
나는 어쩌면 내가 있어요 내가 시작 계수 날짜를 사용할 수 있다는 뜻이

SELECT ROUND(DATEDIFF(CURRENT_DATE, "2010-01-04")/7, 0) AS weeksout 

를 사용하여 구현할 수 있습니다 실현하기 위해 온 그 같은 지불 테이블에 내 인덱스입니다.

-->id 
-->week_no 
-->start_date 
-->end_date 

결제

-->id 
-->person_id 
-->week_no 
-->amount 
-->date 

-->person_id 
-->week_no 
-->status 
-->balance 
-->carry 
,617,451 PAYMENT_STATUS


Payment_status를 사용하여 주급 상태 (유료, 미납, 부분 유료)를 추적 할 수 있습니다. 나는 아직도 이것에 익숙하지 않다, 나는 왜 모른다.

+0

stmts 만 삽입하십시오. 업데이트가 없습니다. 이 것은 Sarbanes Oxley 준수 afterall해야합니다 : p – Drew

+0

당신이 말하는 것을 이해하지 못합니다 –

+0

그것의 유효한 n 번째 정규화 된 구조. 날짜 계산에 의존하는 경우 주 테이블없이 작업을 수행 할 수 있습니다. 내 추측으로는 분기 별 또는 연간 균형 등을 보는 것과 같이 일주일을 넘는 다른 용도가있을 수 있기 때문에 날짜 디멘션을 고려해야 할 것입니다. – Matt

답변

0

나는 당신이 그 것이다 PERSON 자신의 목표를 완료 할 수 없습니다 경우 해당 WEEK 기간 동안 지불 표 의 모든 PERSON에 대한 항목이 각 주에 테이블 구조

PERSON (ID,NAME,...,weekly_payment_amount) 
PAYMENT (YEAR,MONTH,WEEK,PERSON_ID,AMOUNT); 

다음과 같이 GO 수 있다고 생각 당신의 INSERTING 새 항목 WAY는 다음의 IT 작업을 수행 할 때 그 일부를 처리해야 IT가 추가 PART

있는 항목을 추가 할 것입니다 다가오는 주 동안 추가 금액을 COMPLETE 경우 0 그 주에 대한 금액 완성 금액은 NEXT WEEK 에 추가됩니다 논리 형식 코드 수준

$AMOUNT = WORKED AMOUNT FOR THIS WEEK 

CHECK IF ANY VALUE AVALABLE FOR THAT WEEK 

$AMOUNT_EXP= SELECT weekly_payment_amount FROM PERSON WHERE PERSON_ID =""; 
$AMOUNT_ADD= SELECT IFNULL(AMOUNT,0) AS FROM PAYMENT WHERE YEAR="" AND MONTH="" AND WEEK="" AND PERSON_ID =""; 

IF ($AMOUNT_ADD>0) THEN { 
    IF $AMOUNT_EXP> $AMOUNT_ADD+ $AMOUNT THEN { 

     UPDATE PAYMENT SET AMOUNT= 0 WHERE YEAR="", MONTH="", WEEK="", PERSON_ID =""; 
     INSERT INTO PAYMENT(YEAR,MONTH,WEEK,PERSON_ID,AMOUNT) VALUES (<YEAR,MONTH,WEEK FOR NEXT WEEK>,$AMOUNT_ADD+ $AMOUNT); 
    } 
    ELSE { 
     UPDATE PAYMENT SET AMOUNT=$AMOUNT_EXP WHERE YEAR="", MONTH="", WEEK="", PERSON_ID =""; 
     INSERT INTO PAYMENT(YEAR,MONTH,WEEK,PERSON_ID,AMOUNT) VALUES (<YEAR,MONTH,WEEK FOR NEXT WEEK>,($AMOUNT_ADD+ $AMOUNT)-$AMOUNT_EXP); 
    } 

} 
ELSE { 
    IF $AMOUNT_EXP> $AMOUNT_ADD+ $AMOUNT THEN { 

     INSERT INTO PAYMENT(YEAR,MONTH,WEEK,PERSON_ID,AMOUNT) VALUES (<YEAR,MONTH,WEEK FOR CURRENT WEEK>,0); 
     INSERT INTO PAYMENT(YEAR,MONTH,WEEK,PERSON_ID,AMOUNT) VALUES (<YEAR,MONTH,WEEK FOR NEXT WEEK>,$AMOUNT_ADD+ $AMOUNT); 
    } 
    ELSE { 
     UPDATE PAYMENT SET AMOUNT=$AMOUNT_EXP WHERE YEAR="", MONTH="", WEEK="", PERSON_ID =""; 
     INSERT INTO PAYMENT(YEAR,MONTH,WEEK,PERSON_ID,AMOUNT) VALUES (<YEAR,MONTH,WEEK FOR NEXT WEEK>,($AMOUNT_ADD+ $AMOUNT)-$AMOUNT_EXP); 
    } 
} 
+0

솔루션의 삽입 및 선택 쿼리를 넣을 수 있습니까? –

+0

나는 mysql 만 원한다. 그 이상은 아니다. –

관련 문제