2012-08-23 8 views
8

固定日に基づいて実行され、毎日繰り返され、特定の曜日に繰り返され、その年の特定の月に繰り返されたスケジュールを作成したい毎年特定の日付、そしてその日の特定の時刻に繰り返されます。スケジューリングタスクのためのデータベーステーブルの設計

この問題のデータベーステーブルを構築するにはどうすればよいですか?

編集#1

基本的に、私は、ユーザーがさまざまな事前設定された時間に送信される事前構成済みの挨拶をスケジュールすることを可能にするアプリケーションを書いています。スケジュールに関する情報(例えば、クリスマス、マーケティング・ワン、スケジュールがいつ実行されるべきかなど)を保存するテーブルが必要なのは分かります。次に、どのスケジュールが実行されたか、どのような挨拶が送られたか、誰にどのような電子メールが記録されたかを記録する別のテーブル。基本的に取引テーブル。

スケジュールテーブルを設計しているのは、ユーザーが特定の日付、特定の曜日(定期的)、毎月の特定の日、毎日特定の時刻にスケジュールを実行できるようにするためです、特定の日/月(例:25/12)毎年。

これらの入力を柔軟に処理する予定のテーブルを作成するにはどうすればよいですか。

+1

あなたは、内蔵のスケジューラを使用することはできませんか?ほとんどのRDBMSにはこれらがあり、ホイールを再発明する必要はありません。 – Ben

+0

「実行」もデータベースに表現されなければならないのですか? –

+0

@BrankoDimitrijevicはいそうすべきです。 – Tebo

答えて

6

これは私が思いついたテーブル構造です。

Schedule 
- ScheduleName 
- ScheduleTypeId (Daily, Weekly, Monthly, Yearly, Specific) 
- StartDate 
- IntervalInDays 
- Frequency 
- FrequencyCounter 

ScheduleDaily 
- ScheduleDailyId 
- ScheduleId 
- TimeOfDay 
- StartDate 
- EndDate 

ScheduleMonthly 
- ScheduleMonthlyId 
- ScheduleId 
- DayOfMonth 
- StartDate 
- EndDate 

ScheduleSpecific 
- ScheduleSpecificId 
- ScheduleId 
- SpecificDate 
- StartDate 

... 

ScheduleJob 
- ScheduleJobId 
- ScheduleId 
- ScheduleTypeId 
- RunDate 
- ScheduleStatusId 
1

あなたはスケジュールについて話しているので、ジョブの管理と実行のためのバッチアプリケーションを構築したいと考えています。

spring batch meta data designを参照実装としてチェックすることができます。しかし、正確な設計はあなたの要求に依存します。これは単なるポインタです。

+0

ありがとうございます。しかし、それはかなり一般的です。さまざまな期間(固定日、定期的な日、定期的な曜日、...)を表すデザインが必要です。最終的には特定の日付に翻訳されます。 – Tebo

関連する問題