关注这三个表:这个循环是多余的吗?
- 事件,包括,例如,柏林马拉松
- 结果的各种详细信息,包括各个领域,包括用户的比赛时间和FK一个事件,并
- 目标,用户想要运行的事件FK,他们想要运行它的时间,最终FK到达用户实现目标的比赛。
显然,用户实现目标的比赛事件必须是目标事件。但并非所有目标都已实现 - 有些可能永远不会实现。
这是不好的设计?任何人都可以提出一种更好的建模方法吗?我在django项目中使用sqlite。
关注这三个表:这个循环是多余的吗?
显然,用户实现目标的比赛事件必须是目标事件。但并非所有目标都已实现 - 有些可能永远不会实现。
这是不好的设计?任何人都可以提出一种更好的建模方法吗?我在django项目中使用sqlite。
您的活动表格正常。
但是你的目标表设计搞砸了拟议的事件和实际实现的事件。
我认为结果表可以与目标表合并成一个新的结果表。
由于一个用户可能想要运行多个事件。在您的新结果表格中,它应该如下所示:
UserID EventID TimeProposed ActualTimeUsed Achieved
1 1 1 hour 1.1 hour No
1 2 1.5 hour 1.2 hour Yes
因此,您提到的循环被删除,因为每行只有一个事件。 (用户ID和EventID仍然是FK到其他两个表)。
Achived列可以使用查询更新以决定ActualTimeUsed < = TimeProposed。
不幸的是,没有办法根据实际的比赛结果来检查达到的状态。这仍然会造成不一致的可能性。 – Brian 2014-09-04 18:05:26
由于您的“已完成”列是查询生成的字段。我修改了我的答案。 – 2014-09-04 18:54:28
循环?循环在哪里? – paxdiablo 2014-09-03 23:30:59
目标有两种不同的方式进入事件,创建一个关系循环。 – Brian 2014-09-04 01:47:16
所以这个数据库不*存储关于错过目标的信息? – 2014-09-04 07:16:48