【发布时间】:2016-04-11 04:46:33
【问题描述】:
所以我正在创建一个小型网络应用程序来跟踪用户完成任务时的情况。我正在努力确定布局我的数据库的最佳方式。
先有一些规则和逻辑来说明事情。有许多由颜色标识的任务。贪婪,红色,蓝色,黄色等。每个任务都有许多练习,1-40。所以green1、green2、green3等。所有的练习都有一个难度等级。我想通过将其标记为已完成来跟踪每个用户的所有任务/练习的进度。这意味着我可以计算所有已完成的任务并给他们一个任务的完成百分比。
目前我的数据库表如下所示:
每个任务(颜色)都有一个名为(颜色)任务信息的表,例如“greentaskinfo”:
+----------------------------+
| colorid difficulty active |
| 1 H Y |
| 2 H y |
| 3 L Y |
| 4 L y |
+----------------------------+
然后对于任何颜色/任务都有一个进度表,例如 greenprogressinfo。这存储了每个用户的进度。
+-------------------------------------+
| progressid userid colorid complete |
| 1 1 1 Y |
| 2 1 2 Y |
| 3 1 3 N |
| 4 1 4 N |
| 5 2 1 N |
| 6 2 2 Y |
| 7 2 3 N |
| 8 2 4 Y |
+-------------------------------------+
然后我可以计算有多少是完整的,其中 userid = x 和 complete = Y 并将其计算为总数的百分比。
这意味着当用户注册时,我需要为 9 个任务表自动创建 40 个条目。似乎效率不高。可能有比我看到的更多的问题。任何如何更好地设置它的专家建议将不胜感激。
【问题讨论】:
-
为什么说需要预填充进度表;您可以在任务开始时插入带有 complete=N 的行,然后在完成时设置 complete=Y。没有行表示从未开始。
-
另外为什么需要 9 个任务表?只有一个,并有一个颜色列。
标签: mysql database-design