2012-02-02 84 views
7

我目前正在設計一個教育網站。設計徽章分配系統框架的最佳方法

爲此,我們需要根據用戶的活動(比如stackoverflow)爲用戶分配一些徽章。

我正在爲此尋找一個框架。任何人有任何想法,如何做到這一點?表設計等

問題,我能想到的與此有:

  1. 我們可能有大量的徽章,等等的用戶的每個動作,我們不能檢查所有證件和檢查是否有徽章可以被分配
  2. 在提供這方面的一個新的標誌和標準,我不想改變現有的代碼來處理這個(我們可以有一些通用的解決方案?)
  3. 我應該選擇哪一個數據庫(可以說,如果我的框架就像它,當一個徽章的標準滿足並且這些規則在DB中創建時(如sql),它會引發事件;或者我可以使用nosql db(比如m ongodb我的項目的其餘部分是在MongoDB中)

我最初的搜索給了我下面的事情

  1. 規則引擎 - >會導致非常繁瑣的任務Database Architecture for "Badge" System & Arbitrary Criteria (MySQL/PHP)
  2. 一個項目 - >http://drupal.org/project/user_badges(不能正確理解它)
  3. 人都在說你的表結構應該是這樣的,這..和所有.. Best way to store Badge criteria? Creating "Badges" for my site, best way to store user badges? Using PHP
+0

早些時候在這個問題上的工作總結在http://stackoverflow.com/questions/9835321/designing-a-pluggable-points-and-badges-system – 2012-03-28 20:57:45

回答

1

我肯定會選擇通過nosql數據庫的關係數據庫來實現這種方法。

您需要的第一件事是徽章的基礎結構。

ID (int) 
Title (Varchar 255) 
Image (Varchar 255) - would hold location to image 
Points (int) 

然後,您需要存儲用戶已獲得的所有徽章。因此,在您的用戶部分:

Badges (Varchar) - holds a serialized array of badge IDs 
Badge_count (int) - So you can get the total without parsing through Badges. 
Point_count (int) 

現在你說你不能查詢對所有徽章每個執行的動作,所以你也應該存儲每個動作的條目。因此,在您的「職位」表說,例如:

Possible_badges (Varchar 255) - serialized array of Badge ID's 

然後,您可以正常化,只給出相關的任何具體任務的規則引擎徽章。

最好的辦法就是開始和他們一起玩,如果你不明白那裏有什麼東西比你必須妥協和去基本的邏輯,所以只有獎勵徽章的任務可以測量數據庫條目(主要是數字數據)。或花更多時間學習(並拉出你的頭髮)。