2012-12-31 62 views
4

我正在開發一個學校考勤系統,以迎合員工和學生的需求。用於高效考勤管理系統的數據庫模式

目前DB模式是

attendance

id - primary key for this table 
daydate int(11) - stores timestamp of current day 
timing_in varchar(18) - Start time for institution 
timing_out - Closing time for institution 
status - Status for the day, can be working day - 1 or holiday - 2 

然後有員工&學生,其中存儲實際出勤值不同的表。

對於工作人員,出勤存儲在attendance_staff。數據庫模式是

attendance_id - foreign key, references attendance table 
staff_id - id of staff member, references staff master table 
time_in - stores in timing of a staff member 
time_out - stores out timing of a staff member 
status - attendance status - can be one among the list, like present, absent, casual leave, half day, late mark, on duty, maternity leave, medical leave etc 

對於工作人員,我存儲表中的當前以及不存在條目。

現在,學生的考勤必須包括在內。

由於每天的狀態已存儲在attendance表中,我們可以在學生出勤表中存儲每個學生的不存在的值嗎?

比如,學生考勤表將只存儲那些在特定日子不在場的日子的條目。

attendance_student架構將是

attendance_id - references attendance table 
student_id - references student table 
status - will be leave/absent etc other than present. 

會不會是有效的,以計算從出勤表使用外部聯接本天?

在此先感謝。

回答

2

您不需要外部聯接來計算學生的出勤率。您可以簡單地統計出勤表中的記錄(一次,因爲所有學生都一樣),然後從您的學生出勤表中選擇要求缺席。

如果您希望通過外部聯結計算出席人數,您可以。如果您的考勤表主鍵和學生考勤表的外鍵出席考勤表有一個索引,那麼效率可能會更高。

+0

謝謝Joel。 如果每天都將當前狀態存儲在數據庫中並對每個學生存儲。 那我去年在某個特定的學生的某個月有沒有出席? 如何檢查,當時學生是否可以出席。無論他是否處於活動狀態/非活動狀態/暫停狀態等。因爲對於不活躍的學生,系統中不會出席考勤。 – Ehs4n

+1

@ Ehs4n - 如果是我,我會明確地存儲_present_。我會這樣做,因爲它可以區分在場的學生和失蹤的數據。在出席記錄之前,你不能分辨出是否有學生在場,或者出席率是「待定」。對於歷史數據,如果您在學生離開學校或新學年開始時清理了任何表格,那麼您可以考慮保留一組額外的歷史歸檔表格,其中包括學年作爲額外的領域。而不是刪除離開的學生,而是將其歸檔。 –

+0

再次感謝您的見解。您能否將更多的信息放在歸檔功能上。這可以如何實現? – Ehs4n