2009-11-02 2 views
8

미팅 약속을 되풀이하기 위해 Microsoft Outlook에서 제공하는 것과 유사한 기능을 구현해야합니다. 이 기능을 구현하는 데 필요한 최적화 된 데이터베이스 디자인을 파악하려고합니다.이벤트의 반복 발생에 대한 세부 정보를 저장하기위한 데이터베이스 설계

사용자가 입력 한 각 실행 또는 작업은 매주, 매월 또는 매년 반복되는 일정과 같은 일정에 적용될 수있는 것과 비슷합니다. DB 모델에 이러한 세부 정보를 저장하는 데 필요한 데이터베이스 모델 - 제약 조건이있는 테이블 구조를 제안 해주십시오. 적절한 작업을 수행하기 위해 나중에 프로그램에서 액세스 할 수 있습니다. 가능한 스케줄러 세부 사항에 대한 스크린 샷은 following link에서 찾을 수 있습니다.

우리는 이러한 세부 사항을 저장하기 위해 백엔드에서 실행되는 mysql DB를 가지고 있습니다. 사용자가 요청을 제출하자마자 요청의 세부 사항이 포함 된 요청 ID가 테이블에 저장되고 이에 대응하는 작업이 프로그램에 의해 수행됩니다. SQL 스크립트를 실행하고 값을 얻은 다음 통계 분석을 수행하는 것이 사용자의 의도와 유사합니다. 그러나 오라클 참조 DB는 많은 사용자가 동적으로 업데이트하므로 반복적으로 실행하여 분석을 수행하려고합니다. 참고로 mysql db와 ref DB는 다릅니다.

다른 세부 정보가 필요하면 알려주십시오.

+0

속도, 신뢰성, 내게 필요한 옵션, 확장 성 또는 다른 어떤 점에 대해 최적화하고 있습니까? 접근성이 가장 중요한 관심사 인 것처럼 들립니다. –

답변

9

첫 번째 발생의 세부 정보를 하나의 테이블 (예약 된 작업)에 저장 한 다음 recurance (반복 작업) 세부 정보를 다른 테이블에 저장하는 것이 좋습니다.

각 작업이 완료 될 때 예약 된 작업 테이블을 다음 발생으로 업데이트하려는 유혹을받을 수도 있습니다. 테이블 레이아웃으로

이 같은 것 밑그림은 다음과 같습니다

[ScehduledTasks]
TASKID (기본 키)
설명 및 세부 사항 등 ...

시작 날짜 시간 날짜 시간

[RecurringTasks]
TASKID (외래 키)
빈도 : 매일, 매주, 매월 또는 매년.
DayNo : 모든 X 주, 월 등
WeekOfMonth : (연간 월별 매주 1-7, 1-31, 1-365)
간격 에서 실행하려면 어떤 일 첫 , 두 번째, 세 번째 등 ... 채워진 경우 DayNo는 일주일에의 요일을 지정합니다.
MonthOfYear : 1-12.
EndDatetime : 수행 횟수 : 마지막 날짜는
발행 수 을 수행 할 수 있습니다. 이 값과 이전의 값이 null의 경우, 영원히 실행합니다.

분명히 특정 필드는 작업 설정 방법에 따라 비어 있지만 위의 내용은 Outlook에서 작업을 에뮬레이트하는 데 필요한 모든 것입니다.

+0

그게 전부지만 어떻게 생각하지만 저장하거나 더 적절하게 사용자가 입력 한 반복 일정을 나타내는 방법에 대해 모르겠습니다 - 예를 들어 사용자가 '월간 -> 매주 월요일'을 반복 요청으로 선택한 다음 어떻게 이러한 세부 정보를 저장합니까? DB에서 이러한 세부 정보에 액세스 할 수 있고 마찬가지로 작업을 예약 할 수 있습니다. – kshitij

+0

지금 바로 몇 가지 제안 사항을 포맷하십시오 – Martin

+0

덕분에 마틴에게 많은 도움이되었습니다. – kshitij

관련 문제