2009-07-29 2 views
0

Google 비즈니스 데이터베이스에서 회원 구매를 수락하고 기록하기 위해 내 조직의 회원 제품을 모델링하려고합니다. 언젠가는 구매가 온라인으로 이루어지며 자동으로 비즈니스 데이터베이스에 저장되기를 바랍니다.회원 제품 데이터 스키마

문제는 당사의 회원제 제품이 모든 곳에서 사용되고 있다는 것입니다. 우리는 우리 조직에 가입 할 수있는 4 가지 유형의 조직을 가지고 있습니다. 각 조직 유형마다 별도의 가격 일정이 있습니다. 조직의 속성에 따라 일정에서 지불 할 가격이 결정됩니다 (수익이 2 백만 ~ 5 백만 달러 인 경우 2,000 달러를 지불합니다). 각 가격 일정에 사용되는 특성이 다릅니다. 예를 들어, 기업은 풀 타임 학생 등록 ​​(학교 가입자가 풀 타임 및 파트 타임 학생 등록 ​​번호를 제공하도록 계산)에 따라 지불하는 동안 연간 수익에 따라 비용을 지불합니다. 좀 더 복잡하게하기 위해 할인 프로그램이 있습니다 (예 : 조기 갱신의 경우 12 개월 가격 인 경우 15 개월, 자원 부족 학교의 경우 할인 등). 그런 다음 회원은 한 번에 여러 용어를 구매할 수있는 옵션을 제공하며 때로는 사람들이 정한 부분 기간을 산정 할 수 있습니다. (월은 가장 작은 단위입니다.)

그리고 이제는 제품 및 트랜잭션 데이터 스키마를 일반화하여 멤버십 구매 외에도 이벤트 등록 및 프로그램 등록과 같은 모든 구매에 대한 레코드의 데이터 소스가 될 수 있도록합니다.

도움말 !! 나는 이것이 표준 상거래 데이터 스키마 물건이라고 들었지만 적어도 온라인에서 찾을 수 있었던 모든 샘플 데이터 스키마는 적어도 내가 알 수있는 한 위의 것을 할 수 없었다. 이런 종류의 일을 할 수있는 스키마를 본 사람이 있습니까? 가지고 계시다면, 나와 공유 할 수 있습니까?

다른 모든 리드도 크게 감사하겠습니다. 감사!

+0

아, 비즈니스 조직 유형에 대해 실제로 3 가지 가격 일정이 있음을 잊어 버렸습니다. 3 가지 참여 수준 중에서 선택할 수 있기 때문입니다. –

+0

또한 회원 등급 일정과 카테고리가 적어도 12 개월마다 변경된다는 점을 잊어 버렸습니다. 모든 가격 책정 옵션의 모든 순열을 개별 제품으로 정의한다면 회원만으로 수백 가지 제품이 제공 될 것입니다. –

+0

적어도 멤버십의 경우 "지난 달 또는 지난 해에 X 멤버쉽 회원을 몇 명 구매했는지"에 대한 질문에 결코 대답하지 않아도된다는 점에 유의할 가치가 있습니다. 대신, 나는 지난 달에 얼마나 많은 x 회원이 가입했는지, 얼마나 많은 회원 수입을 가져 왔는가? 따라서 초기 본능은 구매 기록을 남기고 회원 신청서에 제품 정의 및 가격 일정을 남겨 두었습니다. DB에 대해 질문하는 유일한 이유는 회원의 기간, 시작일, 회비 금액 및 회원 유형에 관한 것입니다. –

답변

1

데이터 디자인과 비즈니스 로직을 분리해야 할 것 같습니다. 이 문제에 적용되는 가장 단순한 데이터 구조에 대해 생각해보고 그 구성원들에게 memeberships의 논리를 놓으십시오. 예를 들어

:

이 위에
CREATE TABLE payment(
    memeber_id INT, 
    payment INT, 
    expected_date DATE, 
    payment_date DATE); 

CREATE TABLE credit(
    memeber_id INT, 
    credit INT, 
    last_movement` INT, 
    next_movement INT, 
    last_movement DATE,); 

CREATE TABLE member(
    id INT, 
    membership_plan INT, 
    ...) 

, 예를 들어, 당신은 아주 쉽게 회원이 신용 왼쪽 여부를 조회 할 수 있습니다, 그는 등, 예상 된 비즈니스 규칙이 설정되어 어떤 지불 소프트웨어,이 데이터 위에. 각 회원 계획에는이를 다르게 적용하는 규칙이 있어야합니다.

보다 많은 구성 가능한 방식으로 비즈니스 로직을 작성하려는 경우,보다 일반적인 Entity-Atribute-Value 테이블을 추가하여 이러한 계획을 지원할 수도 있습니다. 극단적으로 각 구성원은이 테이블에서 재정의 할 수도 있습니다.

CREATE TABLE member_attributes(
     membership_type INT, 
     attribute VARCHAR(30), --for example 'Monthly Pay', 'Membership duration' 
     value INT)