2010-08-17 5 views
0

매우 기본적인 작업 추적 응용 프로그램이 있습니다. 현재 여러 가지 작업이 있으며 작업이 완료되면 진행률이 0에서 100 %로 업데이트됩니다.작업보고를위한 데이터베이스 스키마

문제는,이 데이터는 모두 매우 과도 내가, 작업의 맨 위에보고를 추가 할 같은 것들을 너무 : 작업의

  • 번호 두 날짜 사이에 추가 작업

    • 번호 두 날짜 노력의
    • 양 두 날짜

    사이 (그래서이 작업에 대한 총 노력, 완벽한 비율의 변화 (100)에 의해 나누어 timesed이다) 사이에 완료 등등.

    이러한 종류의보고를 허용하려면 어떻게 시간 내에 데이터를 고정 시키나요?

    이 내가 지금까지 생각했던 아이디어가 있습니다 :

    아이디어 1. 지금까지 작업 정의를 변경할 수 있지만, 작업에 대한 진행 세분화 된 업데이트를 포함하는 "TaskProgress"테이블을 추가하지 마십시오 - 그 다음에는 "합쳐서"현재 상태를 얻거나 두 날짜 사이에 기록을 가져 와서 두 날짜간에 얼마나 많은 진전이 있었는지 확인할 수 있습니다. 이것은보고 요구 사항에 대한 합리적인 변경 사항을 견뎌 낼 수 있다는 측면에서 유리합니다. 단점은 현재 작업 진행 상황을 파악하는 데 더 많은 쿼리 작업이 필요하다는 것입니다.

    아이디어 2. 진행률 변경 내용을 저장할 테이블을 만듭니다. 작업이 업데이트 될 때마다 변경으로 인해 계산 된 시프트가 포함 된 레코드도 추가하십시오. 보고서는 필요한 날짜 사이의 레코드를 선택하고 요약하는 경우입니다. 이점은 기존 기능에 큰 영향을 미치지 않으며 쿼리에 너무 많은 노력을 기울이지 않는다는 것입니다. 단점은 보고서에 추가하려는 정보가 포함되어 있지 않으면이 표를 변경해야한다는 것입니다 .

    아이디어 3 아이디어 3은 아이디어 1에서 "TaskProgress"테이블을 생성하지만 작업에 대한 총 현재 진행률을 유지하는 것입니다. 즉, 작업 진행 항목의 합계가 작업 자체에 합계로 다시 저장되지만 나중에 값을 읽는 것보다 값을 읽는 것이 더 빠르며 나중에 보고서를 변경하는 데 더 많은 유연성을 제공한다는 의미입니다.

    이 아이디어에 대한 의견이나 더 좋은 제안은 언제나 환영합니다.

  • 답변

    0

    아이디어를 잘 모르겠지만 문제가 일시적인 데이터를보고 할 수 있다면 왜 데이터베이스 복사본을 사용하지 않을까요? 우리는 항상 성능상의 이유로 정상적으로 사본을보고하지만 문제가 해결됩니다. 데이터베이스를 백업 한 다음 다른 데이터베이스로 복원하고보고를 수행 한 다음 데이터베이스를 제거하십시오.

    +0

    나는 조금 더 설명하려고 노력할 것이다. 현재 작업 데이터는 작업의 현재 상태와 관련이 있습니다. 예 : "PercentageComplete : 100, Status : Complete". 그러나 보고서를 얻으려면 두 날짜 사이에 얼마나 많은 변화가 있었는지 알아야합니다. 예를 들어, 날짜 1에서 "PercentageComplete : 80"이었고 날짜 2에서 "PercentageComplete : 90"이었으므로이 기간 동안 10 %의 진행률이있었습니다. 보고서를 실행하기 위해 데이터 복제를 사용할 수는 있지만 보고서 자체를 지원하는 데 필요한 스키마와 관련이 없습니다 (보고서에보고하려는 경우 각 변경 사항을 작업 상태에 저장해야 함) – Fenton

    +0

    이제 당신을 얻을. 변경 사항을 저장하려면 일종의 감사 테이블이 필요합니다. 나는 개인적으로 Tasks 테이블을 변경하지 않고 감사 테이블을 Idea 2의 라인을 따라 추가합니다.진행률 열이 변경 될 때마다 작업 ID, 날짜 시간, 이전 값 및 새 값이 포함 된 행을 감사 테이블에 추가합니다. 방아쇠를 사용하면 쉽게 할 수 있습니다. 이것은 현재 진행률 값을 쉽게 얻을 수 있고보고 문제가 주 테이블에서 분리된다는 이점이 있습니다. –

    +0

    좋아요, 제가하고있는 일입니다 ... 작업이 저장 될 때마다, 작업 진행 테이블에 추가 작업을 트리거하여 변경 내용을 기록합니다. 그런 다음이 작업을 진행 상황 (또는 진행 취소)을 계산하는 데 사용할 수 있으며 두 날짜 사이의 작업 진행률 표의 레코드를 가져 와서 해당 기간의 어느 위치에 있는지 확인할 수 있습니다. 건배. – Fenton