2012-05-21 27 views
2

在PHP/MySQL中構建虛擬學分系統的最佳方式是什麼?如何使用PHP/MySQL創建和構建虛擬學分系統

我顯然需要每個交易(借記/貸記)一張表。我想我需要在該表中的列如下:

  • TransactionID(唯一的事務ID從1開始,可自動遞增)

  • UserID(從主用戶表用戶唯一的ID)

  • Type(獲得,購買,花等)

  • ItemID(如果在項目上花費)

  • Amount(正或負)。

問題:

1)我需要在這個表中的任何其他列?

2)我是否需要任何其他表用於此目的?

例如,我會需要另一個表來跟蹤每個用戶的總的?或者,我是否會簡單地將每個用戶的總和計算爲他們所有交易的總和?

起初,這個學分系統純粹是「玩錢」,但我希望在將來添加一個「購買學分」選項,所以也許我應該爲第三方支付處理器添加一列。唯一交易ID ?或者,我應該爲購買的積分創建一個單獨的表格,然後通過我的腳本將兩者結合在一起(例如總積分=積分+購買積分 - 積分積分)?

在上面的回答我的問題上面,我將不勝感激任何和所有的見解和想法,包括鏈接到如何去這個問題,因爲我以前從來沒有編程,這樣的事的具體條款。

謝謝!

回答

4

一些注意事項。

如果你想建立一個處理財務狀況堅實的制度,我認爲,這是有道理的使用一些基本的概念從金融世界。我不想說你必須完全實現所有會計功能,但很多事情對我來說似乎是合理的。

首先,金融交易涉及從一個賬戶轉移資金到另一個,所以不是user_id我會用account_id。每個用戶可能有多個帳戶,每個帳戶都有一個類型(查找)和貨幣。此外,我會避免使用「用戶」這個詞來支持「派對」(派對角色關係模式)。

其次,總有至少涉及兩方:錢從一個賬戶轉移到另一個。在物品購買的情況下,人的賬戶餘額減少,並且組織賬戶餘額增加。我不會使用item_id,但像event_id。每筆交易都與一項業務活動相關聯。事件是系統中可能發生的各種事件的通用父表。 Event的每個細節表都將保存特定於事件類型的信息。例如,你可以有purchase_event,deposit_event

因爲transaction表是很多(可能數千)插入的主題,我不會在每次需要帳戶餘額時查詢它。在account表中保持合併餘額是有意義的。

我希望這是有道理的。

0

除非你真的知道系統應該做什麼,否則很難說數據庫的體系結構。但我仍然嘗試。

我不認爲在一張表中存儲這麼多信息是一個好主意。

我會做得更好這種方式 - transactions(id, user_id, amount, timestamp),這張表包含每個支付的最低信息。否則

一切都分開,例如transactions_types(transaction_id, type)transactions_items(transaction_id, item)

關於學分。如果購買的是同一種貨幣,則只需添加一種類型的交易,並在必要時添加表格作爲transactions_psid(transaction_id, psid)

如果貨幣不同,則全部取決於系統上的負載。只有一個具有唯一的transaction_id的表是好的,直到它變成太多的記錄。