【发布时间】:2010-03-14 17:51:11
【问题描述】:
我正在创建一个数据库,以帮助跟踪哪些员工参加了特定的培训课程。我想就设计数据库的最佳方式获得一些指导。
具体来说,每个员工每年都必须参加培训课程,我的数据库需要保留他们过去参加课程的所有日期的历史记录。
最终用户将使用该软件作为计划工具,帮助他们为员工预订未来的课程日期。当他们选择给定的员工时,他们将看到:
- (a) 最后出席日期
- (b) 预计未来出勤日期(即最后出勤日期 + 1 个日历年)
就我的数据库而言,任何给定的员工都可能有多个过去的课程出勤日期:
EmpName AttandanceDate
Joe Bloggs 1st Jan 2007
Joe Bloggs 4th Jan 2008
Joe Bloggs 3rd Jan 2009
Joe Bloggs 8th Jan 2010
我的问题是设置数据库以方便检索最近的课程出勤日期的最佳方法是什么?在上面的示例中,最近的时间是 2010 年 1 月 8 日。
有没有使用 SQL 按日期排序并选择 MAX 日期的好方法?
我的另一个想法是添加一个名为“MostRecent”的列并将其设置为 TRUE。
EmpName AttandanceDate MostRecent
Joe Bloggs 1st Jan 2007 False
Joe Bloggs 4th Jan 2008 False
Joe Bloggs 3rd Jan 2009 False
Joe Bloggs 8th Jan 2010 True
我想知道这是否会简化 SQL,即
SELECT Joe Bloggs WHERE MostRecent = ‘TRUE’
此外,当用户更新给定员工的出勤记录(即最新出勤日期)时,我可以使用 SQL 来:
- 搜索员工并设置 MostRecent 值为 FALSE
- 添加一条将 MostRecent 设置为 TRUE 的新记录?
有人会推荐其中一种方法吗?或者你有完全不同的方法来解决这个问题?
【问题讨论】:
标签: sql sql-server database-design