2011-08-09 4 views
1

내 사이트는 유료 월간 구독 액세스를 제공 할 것이고 테이블을 설정하는 가장 좋은 방법을 고려하려고했습니다. 프리미엄 서비스로 업그레이드하려면 페이팔로 지불 할 수 있습니다. 사용자가 제한된 무료 액세스 버전으로 제한 될 서비스를 중단해야한다고 가정합니다.유료 구독 사이트에 가장 적합한 테이블 디자인은 무엇입니까?

USERS 
ID| NAME| MEMBERSHIP_TYPE| LAST_PAYMENT_DATE| ACTIVE_TILL| TRANSACTION_ID 

내가 두 개의 서로 다른 테이블

USERS 
ID| NAME 

MEMBERSHIPS 
USER_ID|MEMBERSHIP_TYPE|LAST_PAYMENT_DATE|ACTIVE_TILL|TRANSACTION_ID 

그리고 가게로 분리해야합니까 : 사용자 세부 사항 즉, 나는 그렇게 생각하고

나는 하나의 테이블이를 유지할 수 있습니다 세 번째 테이블에서 지불 내역. 여기에 반복 결제가 사용됩니다.

+0

별도의 테이블에 넣으면 사용자가 여러 멤버쉽 등급에 가입하려는 경우와 같이 향후 사용을 위해 확장 성이 향상됩니다. – evasilchenko

답변

2

갱신 내역을 볼 수 있기를 원하기 때문에 사용자 목록에서 지불 트랜잭션을 분리하려고합니다. 사용자가 지불하고, 환불을 요청하고, 다시 지불하고, 회원 자격이 만료되고 갱신하는 등의 조치를 취할 수도 있습니다. 이 활동의 ​​내역을 관리하는 트랜잭션 테이블을 유지하지 않으면 고객 서비스 또는 회계 문제를 해결할 수 없다는 것을 알 수 있습니다.

미래의 안전한 가정이 아닌 유료 멤버십이 한 개만 있다고 가정하고 저장된 프로 시저 또는 트리거를 사용하여 트랜잭션 래퍼 내에서 데이터를 동기화하는 것과 같은 적절한 절차 컨트롤을 적용한다고 가정하면 멤버쉽 유형을 비정규 화하고 USERS 테이블에서 날짜까지 활성화합니다. 이러한 유형의 중복성은 운영 성능에 도움이 될 수 있지만 중복 데이터가 동기화되지 않도록 허용하는 경우 매우 위험 할 수 있습니다. 중복이 없도록 시도한 다음 USERS에서 비정규 화 된 필드를 사용하기 전에 실용적인 성능 문제가 있는지 확인하는 것이 좋습니다.

관련 문제