Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 这个循环是多余的吗?_Sqlite - Fatal编程技术网

Sqlite 这个循环是多余的吗?

Sqlite 这个循环是多余的吗?,sqlite,Sqlite,这三张表格分别为: 事件,包含各种细节,如柏林马拉松 结果,包含各种字段,包括用户的比赛时间和事件的FK,以及 目标,用户想要运行的事件的FK,他们想要运行它的时间的字段,以及最终用户实现目标的比赛的FK 显然,用户实现目标的比赛事件必须是目标事件。但并不是所有的目标都实现了——有些可能永远也不会实现 这个设计不好吗?有人能提出一个更好的方法来模拟这个问题吗?我正在django项目中使用sqlite。您的事件表正常 但是你的目标表设计把提议的活动和实际完成的活动搞砸了 我认为结果表可以和目标

这三张表格分别为:

  • 事件,包含各种细节,如柏林马拉松
  • 结果,包含各种字段,包括用户的比赛时间和事件的FK,以及
  • 目标,用户想要运行的事件的FK,他们想要运行它的时间的字段,以及最终用户实现目标的比赛的FK
显然,用户实现目标的比赛事件必须是目标事件。但并不是所有的目标都实现了——有些可能永远也不会实现


这个设计不好吗?有人能提出一个更好的方法来模拟这个问题吗?我正在django项目中使用sqlite。

您的事件表正常

但是你的目标表设计把提议的活动和实际完成的活动搞砸了

我认为结果表可以和目标表合并成一个新的结果表

因为一个用户可能想要运行多个事件。在新的结果表中,它应该如下所示:

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列,以确定ActualTimeUsedLoop?循环在哪里?目标有两种不同的方式到达事件,创建一个关系循环。因此,此数据库不存储有关错过的目标的信息?错过的目标对于此项目不重要。是否最好在查询中检查目标的“已实现”状态,而不是将其作为字段输入?也就是说,对于每个目标,检查每个结果,看看它是否满足目标时间。对于这样一个简单的问题来说,这似乎是非常困难的。不幸的是,没有办法对照实际的比赛结果来检查达到的状态。这仍然存在不一致的可能性。因为“实现”列是查询生成的字段。我修改了我的答案。