2016-04-22 23 views
0

我想在用戶做某件事時向用戶提供積分。例如:用於獎勵用戶活動的數據庫模式

  • 添加文章
  • 添加問題
  • 答題
  • 喜歡的文章

他們中有些人可以有類似情況存在僅僅是爲了分前三篇文章,但我想我會直接在我的代碼庫中處理這個問題。

問題是什麼將是一個好的數據庫設計來處理這個問題?我想到了3張桌子。

  • user_activities - 在此表中我將存儲的事件類型(我用 laravel所以它很可能是事件類的名稱),並分 特定事件。
  • activity_user - user_activities和users之間的數據透視表。
  • 當然用戶表

的,這是非常簡單的,所以我擔心,有一些情況我都沒有想到,它會來咬我的未來。

回答

0

我認爲你需要一個簡單的「活動」的第四張表格,它只是一系列要跟蹤的活動。這將有一個ID列,然後在你的user_activities表中包含一個'activity_id'鏈接到該列。你會毫無疑問,有各種獨特的信息,例如活動表可以有像

ID列:每laravel ACTIVITY_CODE唯一ID:較長的名稱:短代碼應用/業務邏輯 ACTIVITY_NAME的一部分使用這是顯示名稱,如「回答問題」 事件:什麼是用戶必須做的觸發活動獎勵 POINT_VALUE:多少分此事件

如果你認爲點可能改變未來(例如鼓勵某些用戶活動)我們希望跟蹤當時在用戶活動表中獲得的實際積分,或者某種方式來跟蹤這些積分在任何時間點的情況。

雖然我建議第四張表,但您真正需要的是在做任何設計工作之前要實施的功能更仔細的功能列表。我允許獲得點數隨時間變化的例子是一個你沒有提到的特性,但是如果需要這個特性,你需要設計它。