感兴趣的三个表格是:
显然,用户实现目标的比赛事件必须是目标事件。但并非所有目标都已实现 - 有些可能永远不会实现。
这是一个糟糕的设计吗?任何人都可以建议一种更好的方法来解决这个问题吗?我在django项目中使用sqlite。
答案 0 :(得分:0)
你的活动表没问题。
但是你的目标表设计搞砸了提议的事件和实际完成的事件。
我认为结果表可以与目标表合并到一个新的结果表中。
由于一个用户可能想要运行多个事件。在新的Result表中,它应该是:
UserID EventID TimeProposed ActualTimeUsed Achieved
1 1 1 hour 1.1 hour No
1 2 1.5 hour 1.2 hour Yes
因此,您提到的循环将被删除,因为每行只有一个事件。 (UserID和EventID仍然是其他两个表的FK。)
可以使用查询来更新Achived列,以确定ActualTimeUsed< = TimeProposed。