我正在尝试提出一个网络应用程序,有点像分步或程序应用程序。我无法真正描述它,也不知道如何称呼它,但它是一个应用程序,它提供了有关如何实现某些东西的分步说明,例如工作申请。
“帮助用户做事的应用程序。”
所以我设置了一些 GUI,现在我面临问题的核心:数据库设置。
在我设计的 GUI 中,我决定是这样的:
传奇:
- 带支票的绿色- 已完成
- 橙色- 用户当前处于该步骤
- 灰色- 他还没有开始那里的任何子步骤。
如图所示,我有 3 个顶级程序,以及每个程序下的 其他一些子程序。该图片中缺少的一件事是顶级程序也属于某个类别。
而我想要实现的是跟踪用户的活动。这是交易:
- 没有必要必须完成第一个顶层程序才能进入下一个程序,您可以跳过并返回 -> 这没有问题。
- 完成所有子过程后,顶级过程为该特定用户标记 1,表示它已完成。
- 类别也是如此,当该类别下的所有顶级程序都完成时,该类别为该特定用户标记 1,表示他/她完成了该类别。
我打算像这样设置我的数据库:
-tbl_users-
id | username | password |
-----------------------------------------
1 | some_user | adf8jkdfndsa |
...
tbl_step_cat
id | cat_name |
---------------------------
1 | some_category |
...
tbl_steps
id | step_shortdesc | step_longdesc | cat_id
-------------------------------------------------------------------
1 | some step one | do the following... | 1
-------------------------------------------------------------------
2 | some step two | do the following... | 1
-------------------------------------------------------------------
3 | some step three | do the following... | 2
...
tbl_substeps
id | substep_shortdesc | substep_longdesc | step_id
-------------------------------------------------------------------
1 | some substep one | do the following... | 1
-------------------------------------------------------------------
2 | some substep two | do the following... | 1
-------------------------------------------------------------------
3 | some substep three | do the following... | 1
-------------------------------------------------------------------
4 | some substep a | do the following... | 2
-------------------------------------------------------------------
5 | some substep b | do the following... | 2
-------------------------------------------------------------------
6 | some substep 1 | do the following... | 3
...
然后是用户和步骤之间的关系表
tbl_user_stepcat
id | user_id | stepcat_id | datetime
-------------------------------------------------------------------
1 | 1 | 1 | sometime
-------------------------------------------------------------------
2 | 1 | 2 | sometime
-------------------------------------------------------------------
tbl_user_step
id | user_id | step_id | datetime
-------------------------------------------------------------------
1 | 1 | 1 | sometime
-------------------------------------------------------------------
2 | 1 | 2 | sometime
-------------------------------------------------------------------
tbl_user_substep
id | user_id | substep_id | datetime
-------------------------------------------------------------------
1 | 1 | 1 | sometime
-------------------------------------------------------------------
2 | 1 | 2 | sometime
-------------------------------------------------------------------
对不起,如果这有点长,那只是因为代码。
现在我的问题是如何返回我想要的结果。如您所见,当用户登录应用程序时,我希望他/她立即看到这些信息。
到目前为止我还没有尝试过,因为我的大脑刚刚关闭并且注意力不集中,这是我迄今为止最好的时间。
如果我要编写这个应用程序的 SQL,我当然会做多个连接。
我想首先选择所有类别并将其输出给用户。
SELECT * FROM tbl_step_cat
这会给我所有的类别,我接下来要做的是找出哪个步骤完成与否,这样我就可以做“造型”
我可能会
SELECT cat_name FROM tbl_step_cat JOIN
tbl_user_stepcat ON tbl_user_stepcat.stepcat_id = tbl_step_cat.id
...
我现在注意力不集中,无法思考。我该怎么做:
- 输出所有猫/步骤/子步骤
- 在关系表中获取那些有条目的人,这意味着它已经完成
- 在哪里
user = session['user']
非常感谢,我只是需要指导。