2010-11-13 72 views
1

我們從事鉛生產業務。客戶收到我們的線索。他們查看關於潛在客戶的基本信息,並決定是接受潛在客戶還是拒絕客戶。如果他們接受領導,他們會被扣1分(每個領先),他們可以查看領導的詳細信息。數據庫設計:信用充值和交易

因此,每個潛在客戶需要支付1個積分(這與某些貨幣值相關)。

我們有不同類型的客戶:保險代理人,房地產經紀人,信用卡公司,俱樂部等,他們支付不同的價格1信用。

客戶可以預付或後付。

我對所有上述的下表:

Customers (id, name, address, is_postpaid, customer_type_id) 
CustomerTypes (id, name, credit_price) // name: insurance agent, real estate agent, etc 
TransactionTypes (id, name) // add to or deduct from credit balance 
CustomerTransactions (id, customer_id, quantity, transaction_type_id, credit_balance, credit_unit_price, date_created) 

問題:

  • 你怎麼看待的總體思路是什麼?
  • 這種設計適用於預付費客戶。但是後付費呢?

任何反饋和批評表示讚賞。

更新::我已經更新了上面的表格,以便在Customers表格中包含FK。

回答

3

如果交易表的顆粒確實是一筆交易(沒有累計字段),那麼預付款和後付款客戶之間沒有差別。您可以在同一列中輸入正面和負值的付款作爲負數,或者(有些人更喜歡)在「正面和負面」客戶交易中使用兩列。

客戶餘額總是可以得到:

select 
     CustomerName 
    , sum(Credits) - sum(Debits) as AccountBalance 
from Transactions as t 
join Customer  as c on c.CustomerId = t.CustomerId 
group by CustomerName 
order by CustomerName ; 
0

我將數據庫更改爲以下:

客戶(ID,姓名,customerType_id,地址,is_postpaid)
CustomerTypes(ID,姓名,credit_price)
CustomerTransactions(ID,CUSTOMER_ID,數量,TRANSACTION_TYPE ,credit_balance,credit_unit_price,date_created)

我不太確定是關於預付費還是後付費概念。如果你能爲我澄清它。

+0

預付款是指客戶提前購買信貸(即提高她與我們的信貸比率)。如果她的餘額爲零,她將無法查看線索。後付費意味着她不必維護任何credit_balance。在月底,我們會向她收取使用費(即接受的線索數量)。因此,例如,我們將每個接受的潛在客戶的價格改爲20美元給保險代理商如果在月底前她接受了100個潛在客戶,我們會向她收取2000美元。 – nrk 2010-11-13 07:27:40

+0

您正在建議將FK customer_type_id添加到表格客戶。對不起,我忘了補充一點。很明顯。您對後付費客戶有什麼建議?根據使用次數使credit_balance變爲負值? – nrk 2010-11-13 07:34:44

0

我也建議有前置和後置的薪酬沒有什麼區別 - 你只是交易。

,以適應崗前差異,你可以介紹描述它的新表:

customer_type 
    -------------- 
    id  
    pre_or_post 
    begin_date 
    end_date 
0

一件事學分是從會計的角度來看,這些書本上的負債,如果預付。它們有點像禮品卡,在使用積分之前無法識別收入。考慮到這一點,您希望在一定時間後(例如1年)使信用期滿。由於存款到期,您需要按照從最舊到最新的順序扣除存款。

您應該有一張表來記錄信用使用情況(即CustomerCreditUsage)和另一個信用卡購買表(CustomerTransactions)。購買後,您會檢查負值貸方餘額,並從貸記用量表中關閉記錄。如果預付,則當您記錄信用使用交易時,您從最舊的信用額度的貸方餘額中扣除。

請記住,信貸購買和信貸使用之間存在鬆散關係。你可以沒有另一個。儘管如果沒有相匹配的信用額度購買時間過長(後付款),您不想擁有信用額度。