会議のスケジュールを保持するテーブルを作成する必要があります。スケジュール情報を保存する
デイリー 'エバーXの日': 会議があることをスケジュールすることができます。 Xは1〜6の間で指定できます。 Xセッション後に終了します。ここで、「セッション」は基本的にリピート数です。
ウィークリー 週のどの曜日が起こる可能性がありますか。月、火など1週間に1日以上選択できます。 終了日。
月刊 使用し それは(第一、第二など)が発生することができ、月の日を選択するか、彼らは「第一、第二、第三、第四または最後の」との日「月の検索から選択することができます、 "火曜日"、例えば、その月の第2金曜日と言っている。
どのようにこれらのシナリオをすべて1つのテーブルに保存できますか?
CREATE TABLE schedule
(
ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
StartDate DATETIME NOT NULL,
EndTime TIME NULL,
RepeatTypeID INT NOT NULL, // Daily, Weekly, Monthly, None
// For Daily
EveryDayCount INT NULL, // to handle 'every 3 days',
RepeatCount INT NULL, // How many occurances. Can be shared with different RepeatTypes
// weekly
IsMonday BIT,
IsTuesday BIT,
etc // A field per day selection. Is there a better way?
// Monthly
MonthlyDayNumber INT NULL,
MonthlyRepeatIntervalID INT, // Lookup table with '1st, 2nd, 3rd, 4th, Last'
MonthlyDayRepeatSelection INT // Lookup on Monday, Tuesday etc
)
をしかし、これは非効率です:
私が考えていました。これらの種類の要件に適したデザインパターンがありますか?