0

我有以下三个表
期间

--------------------------------
ID StartDate   EndDate      Type
--------------------------------
1  2013-01-01   2013-01-01    D
2  2013-01-02   2013-01-02    D

出勤率

---------------------------------------------------
ID PeriodID   UploadedBy   uploadDateTime    Approved
--------------------------------------------------
1      1        25          2013-01-01-11:00   1
2      1        54          2013-01-01-10:00   1

出勤详情

---------------------------------------------
ID EmployeeID   AttendanceTime   Status AttendanceID
---------------------------------------------
1      24       2013-01-01 09:05  CheckIn   1
1      28       2013-01-01 09:08  CheckOut  2

考勤数据通过生物加工生成的 CSV 文件填充。Attendancedetail可能会随着时间的推移分组,因为每位员工每天有多次签出。每个时期的出勤率都得到批准period

问题

我需要每个期间的出勤数据。我知道我可以做到这一点joins。但我必须在出席时间上使用between过滤器。我正在考虑添加表格PeriodIDAttendenceDetail 简化查询和未来的性能问题。我应该去做还是有更好的解决方案可用

4

1 回答 1

0

如果您经常需要基于每个期间的出勤详细信息,因此您通常需要连接三个表,但出勤数据(来自出勤表)对您来说并不那么重要,那么出勤详细信息表中的 PeriodID 肯定会帮助您。

即使您需要所有三个表,PeriodID 上的 where 条件也会缩小出勤详细信息中的行数,因此在性能方面将再次有所帮助。

维护一个不完全规范化的模式可能会有点烦人,但如果这不是一个大麻烦并且这不会影响您的写作性能,请选择出勤详细信息中的 PeriodID。您的选择将感谢您:)

于 2013-10-09T23:00:18.597 回答