我有一个数据库表,可以存储学校的学生和他们的运动表现。 因此,每个孩子都将具有竞争状态(青年,U15和公开赛)以及他们对某些赛事(跳远,跳高和100米)的记录。
我想为特定的孩子提供一份报告,显示孩子的时间表,来自青年的运动 - > U15开放。以及学生在学校期间的各种记录(个人最佳)。
然而,数据库表存储了孩子的当前状态以及他们当前的个人最佳状态。
我们如何构建数据库以便记录孩子的历史记录?
答案 0 :(得分:1)
我会添加两列,START_DATE
和END_DATE
。最新记录的结束日期为无限“31-Dec-9999”(或者无论mysql中的最大日期是什么)。尽管如此,插入新行确实有点涉及:
START_DATE
为当前日期的位置插入新记录,END_DATE
为无穷大。END_DATE
设置为当前日期来“结束”当前记录,并在START_DATE
为当前日期的位置插入新记录,并{{1}是无限。所以你可能有:
END_DATE
迈克2011年全年都在U15,截至2012年1月正在公开赛。
您对“当前”信息的查询将查找当前日期介于PUPIL, STATUS, LONG_JUMP, START_DATE, END_DATE
Mike, Open, 2 meters, 01-Jan-2012, 31-Dec-9999
Mike, U15, 2 meters, 01-Jan-2011, 01-Jan-2012
和START_DATE
之间的行,您可以查询给定人员的完整日期以查看时间轴。< / p>
答案 1 :(得分:0)
您还可以为表格添加触发器。 更新之前的触发器。