2011-05-09 83 views
2

我正在建設一個網站,我會收取我的客戶使用它。我正在考慮每月或每年有6個許可證選項,並且會有幾種不同的許可證可供使用,每種許可證都允許不同類型的網站訪問。許可使用網站和產品數據庫架構幫助

另外我還有一些可以添加到購買許可證的附加選項。這些一次性採購更像產品而不是許可證。他們爲網站提供了更多附加組件,以實現更多功能。一旦購買,你就可以保留它。所以一切都基於網站,沒有任何運費擔心。

這將顯示在某種購物車時尚,他們可以選擇他們想要然後發送到貝寶進行處理。

只是想知道如何在我的數據庫中正確地建模?到目前爲止,我想出了:

Database schema

基本上我試圖把許可證和產品在同一個表,並使用了標誌柱(licence_or_product)兩者之間的區別。這將有助於在網站上顯示它是否是產品或許可證。

值得擁有許可* offering_start_date *和* offering_end_date *字段嗎?我試圖得到它,以便我可以在提供產品時過期,如果我想以不同的價格製作新的許可證產品。這樣,那些已經以該價格購買了許可證的客戶始終保持這個價格。如果我想要更改價格,我會將產品的結束日期設置爲今天,然後在將來以較低的價格創建一個新的licence_products行,但end_date。這是做到這一點的正確方法嗎?或者你只是直接編輯物品的價格?我只是想,如果價格改變,那麼客戶想要退還該許可證,那麼您如何跟蹤他們爲該許可證支付了多少? amount_paid字段會告訴我整個訂單的成本是多少,但不是現在已改變的許可證的原始價格。我是否需要所有產品價格變化的歷史記錄?

其他事情我不知道該怎麼做,可以說他們已經購買了使用該網站一年的許可證。如何取出哪個是最新的許可證?假設我已經用30天的試用許可開始了他們,然後他們每年購買一次許可證。我是否立即使試用許可無效?我想我一次只需要一個有效的許可證。因此,如果他們在舊版本到期之前購買另一個許可證,我不確定我的程序應該如何處理。

任何幫助非常感謝。謝謝!

P.S.這裏是SQLyog數據庫模式和SQL,如果你想稍微修改一下它。

sql db extract

SQLyog schema

回答

3

我想你應該創建以下3個表:
1.客戶(客戶端或任何你明白了),
2.許可證和
3. customer_license 。

而且我建議的customer_license表以下字段:

  • ID(一些INT AUTO_INCREMENT)
  • CUSTOMER_ID(一些INT)FK
  • license_id(一些INT)FK
  • price_offered小數(7,2)(需要精確度)
  • expiration_date date
  • active tinyint(1)
  • created_at日期時間
  • 的updated_at日期時間

這樣你就可以跟蹤你提供給他們的許可客戶的所有詳細信息:你提供什麼?當你提供?它何時到期?價格提供?許可證是否有效?

祝你好運

+0

好的,非常感謝。這對許可證有意義。我如何標記他們是否支付了許可證?另一個欄位稱爲amount_paid?還是我需要一個單獨的付款表?也想知道這將如何與我銷售的'產品'一起工作,哪些不被視爲許可證,更多的是一次性購買不會過期? – zuallauz 2011-05-11 07:40:53

+1

我認爲,有一個許可證表可以創建一個「產品」表,另一個稱爲「product_type」,這將是「嚴格」的做法,我認爲它給你靈活性,你總是可以檢索你的銷售(或不)許可證和產品。如果您想跟蹤客戶是否付款,也許您應該添加一個「支付tinyint(1)」的列,如果它是1,則表示他/她已付款,如果爲0,則表示他/她沒有付款。我希望這有幫助。 – PachinSV 2011-05-11 14:26:34

+0

現在工作得很好。謝謝您的幫助。 – zuallauz 2011-05-25 08:47:14