我正在使用Zend 构建一个with应用程序,我需要对逻辑建模,或者跟踪一些与跟踪某个目标的进展有关的逻辑。
让我用一个示例目标来说明。
用户需要完成以下三项中的所有:
( A)活动一
( B)活动2
( C)活动3
用户需要完成以下一个的:
( D)活动4
( E)活动5
F)活动6
在完成了第一组的三组和第二组的一组之后,USER已经完成了这个目标。我将如何在PHP中对此进行建模,以便webapp知道目标已经完成,以及如何将数据存储在数据库中?
需要明确的是,会有许多不同类型的目标,但它们在本质上都是非常相似的。
发布于 2010-08-04 03:25:30
假设A、B& C和D、E、& F始终属于目标内的特定组,我将这样设计它:
Goal::isComplete()
{
foreach (Group)
{
switch (Group::type())
{
case "all":
TRUE if all complete
break
case "any":
TRUE if any complete
break;
}
}
if all TRUE
return TRUE
}或者用英语..。
然后,可以将所有活动存储在一个活动表中,并将它们所属的组定义为对组表的简单id引用。当活动完成时,可以在DB中这样标记它。
要检查已完成的目标,只需查找目标所需的每个组。每个组要么是"all“,要么是"any”(或者其他类似的选项,比如"min-2"),这将告诉脚本使用活动完成检查什么。然后,每个组可以根据其活动返回TRUE或FALSE。假设所有的组都是必需的,那么目标就很容易被确定为完全的或不完整的。
数据库看起来可以是:
Activities
- id
- group_id
- name
- completed
- [details about activitiy]
Groups
- id
- goal_id
- type (ENUM: 'any', 'all')
- completed
- [details about group]
Goals
- id
- completed
- [details about goal]当活动被更新或遗漏时,需要积极更新组和目标中已完成的值,并且它们的值总是动态地计算出来。
这有意义吗?做你想做的事吗?
https://stackoverflow.com/questions/3402289
复制相似问题