基于日期的一对多关系
本文关键字:一对多 关系 日期 于日期 | 更新日期: 2023-09-27 18:26:25
我用 c# 编写了一个 Windows 窗体应用程序,为员工制作状态/延迟日志,现在我正在尝试向该应用程序添加一个功能,该功能执行以下操作:
- 从数据库中获取当天的日志(谁在场,谁上班迟到(并将其分配给当天的日期,这样我就可以在每一天查看一个在场和谁上班迟到。
为了更清楚:
- 工人表 : 其中 1 表示员工在场或延迟
ID--姓名----------存在-----延迟
1--山姆--------------1----------0---
2--千斤顶-------------0----------0---
3--泰德--------------1----------1---
- 日期表 :
日---------------礼物----延迟-----缺席
14/10/2012---------山姆--------泰德-------杰克
------------------------泰德-----------------------
等等,我希望我把我的想法说清楚了。
第二个表将是什么样子,关系将如何?
我将如何查看日期表中的结果?
--Person-- --Presence-- --Delay--
ID ID ID
Name Date Date
// other info PersonID PersonID
IsPresent
首先,您应该单独保存Person
表,并在其他表中使用它ID
。我强烈建议阅读有关数据冗余和数据库规范化的信息。 其他表中的PersonID
是指表中Person
ID
。
我认为应该每天记录Presence
。 如果当天只有Person
出现得很晚,则应记录Delay
。
你可能
想做这样的事情,可能不是100%,但应该让你朝着正确的方向前进。遇到任何其他问题,让我知道会尽我所能提供帮助
表: 员工 { ID, 姓名 }table: logs {EmployeeId, DateCreated, OnTime(如果晚了,则有点假(}
select Name
Status = CASE WHEN OnTime = 1 THEN "On Time"
WHEN OnTime is null THEN "Absent"
ELSE "Late"
from Employees as e
left join Logs as l
on e.Id = l.EmployeeId
Where l.DateCreated = @aDate
or l.DateCreated is null
然后,以所需方式显示数据将成为报表引擎或数据透视表的任务,具体取决于要求