2014-01-16 2 views
0

출석을위한 바이오 메트릭 소프트웨어가 있습니다. 손가락으로 센서를 누르고 SQL 데이터베이스에 IN/OUT 시간을 표시합니다. 데스크톱 응용 프로그램이지만 보스는 웹을 만들지 만 웹을 만들 것을 요청했습니다. asp.net MVC에서 응용 프로그램, 이제 우리는이 개 테이블단일 필드를 사용하여 테이블에 입력합니다.

지금
tblEmployee 

SerialId 
EmpId 
EmpName 
DepId 




tblAttendance 


AtdId 
EmpId (FK) 
Time(IN/OUT) 
Date 

이 문제 난 후 사무실로 올 때 출석 테이블에 새 레코드를 넣어 내가 사무실을 떠날 때 다음 다시 OUT 시간 동안 전체 기록을 넣어 것입니다 출석 표에서 IN과 OUT 모두 동일한 필드 TIME을 사용합니다. 따라서 하루 동안 단일 레코드를 유지하고 입/출력 시간 만 변경하는 것과 같은이 문제를 해결하기 위해 생각하고 계십니까?

답변

0

이 여전히 당신은 당신이 질문 한 내용을 실현하려 할 경우, 나에게 정상적인 동작처럼,이 같은 테이블 정의를 변경할 수 -

tblAttendance 

AtdId 
EmpId (FK) 
Date --Just the date for every day 
Time_IN 
Time_OUT 

지금 당신이 어떤 그것이 슬쩍 알아 내야 - IN 또는 OUT을 선택하고 특정 값을 업데이트하십시오. 특정 날짜를 제어 할 수 있습니다 - - 복합 기본 키 - - DATE 당 한 행으로 AtdId, EMPID (FK), 날짜

- 오버 모든 IN 들어 새 행이있을 것 위의 접근법은 펀치 IN/펀치 아웃 과정을 느리게 할 것입니다. 강타를 등록하는 데 비교적 오래 걸릴 것입니다. 현재 DB 구조는 장기간 사용하기에 더 적합합니다. 특정 형식으로 데이터를 표시하려면 요구 사항에 따라보기를 디자인해야합니다.

+0

멋지지만 성능 문제를 자세히 설명해 주시겠습니까? – James

+0

@James - 질문에있는 기존 디자인에 따라 모든 IN/OUT은 ** 새 레코드를 ** INSERT **합니다. ** 아무 것도 찾지 않아도됩니다 **. 그러나 내 대답에서 말한 변경된 접근법에 따라, 당신은 모든 IN/OUT을 찾아야 할 것입니다 - 이것이 하루 중 첫 번째 IN, INSERT인지 또는 하루 중 하나가 이미 업데이트가 완료되었습니다. **이 찾기 및 업데이트는 데이터가 커질 때 간단한 INSERT와 비교하여 더 많은 시간을 소비합니다. ** –

관련 문제