응용 프로그램의 세부 사항을 너무 많이 모르는 상태에서 데이터 구조를 구성하는 가장 좋은 방법은 각 직원의 테이블에 대한 각 레코드를 단일 "펀치 인/펀치 아웃"에 대응시키는 것입니다. 거기에서 일정 기간 동안 각 직원의 근무 시간을 계산하는 것은 매우 간단합니다. 나는 두 번째 예에서 배치 할 데이터를 설명하는 것과 비슷합니다 (Status
열 빼기). 직원이 클로킹 때
UID (INT or uniqueidentifier)
ClockIn (datetime)
ClockOut (datetime)
, 당신은 그 직원에 대한 테이블에 행을 삽입하고 아래 시간에 시계를 넣어 것입니다 : 가장 간단한 예에서
는 테이블에는 다음과 같은 열이있을 것
ClockIn
열. , 그들은 각각 행
UID ClockIn ClockOut
-------------------------------------------
1 2012-10-30 12:00:00.000 NULL
2 2012-10-30 1:00:00.000 NULL
3 2012-10-30 2:00:00.000 NULL
에게 주어집니다 각 직원 시계로
UID ClockIn ClockOut
-------------------------------------------
1 2012-10-30 12:00:00.000 NULL
때 직원이 시계 밖으로 당신의 그 직원에 대한 기존 레코드를 검색해야 응용 프로그램 및 UPDATE
설정하여 행 ClockOut
열을 시계 아웃 시간에 표시합니다.
UID ClockIn ClockOut
-------------------------------------------
1 2012-10-30 12:00:00.000 NULL
2 2012-10-30 1:00:00.000 2012-10-30 3:30:00.000
3 2012-10-30 2:00:00.000 NULL
직원 시계 밖으로 다음 나중에 돌려주는 경우
, 그들은 그들이 그 날 이전에 클러킹하는 것처럼 새 레코드를 받게됩니다.
UID ClockIn ClockOut
-------------------------------------------
1 2012-10-30 12:00:00.000 NULL
2 2012-10-30 1:00:00.000 2012-10-30 3:30:00.000
3 2012-10-30 2:00:00.000 NULL
2 2012-10-30 4:30:00.000 NULL
바라건대,이 시점에서 만약 당신이 아니라 단순한 데이터 모델 표준 시간 유지 기능의 대부분을 수 있도록 충분한 유연성을 얼마나 볼 수 있어야합니다.
ClockOut
은 NULL입니다 당신은 행에 대한보고에서 클럭 누가 결정할 수 empoyees는 직원에 대한 그 시계를
- 편집 펀치를 펀치 아웃하는 것을 잊지 때 처리하기위한 프로세스의 어떤 종류를 가질 수
또는 늦었 어.
- 당신은 각 행의에 대한
ClockOut
의 DATEDIFF
및 ClockIn
을하고, 그 결과 이 예에서
, 데이터의 유효성을 검사에 대한 책임의 가장 것를 합산하여 각 직원 근무 총 시간을 확인할 수 있습니다 나중에 귀하의 신청서에서 열립니다.누군가를 여러 번 돌보고 싶지 않거나, 아직 실제로 구멍을 뚫지 않은 경우에 시계를 울리려고합니다.