Ich muss eine Tabelle erstellen, die einen Zeitplan für Besprechungen enthält.Speichern von Zeitplaninformationen
Täglich 'Immer X Tage: kann ein Treffen sein wird geplant. wo X zwischen 1 und 6 sein kann. Beenden nach X-Sitzungen. "Sitzungen" sind im Grunde die Anzahl der Wiederholungen.
Wöchentlich An welchen Tagen in der Woche kann es vorkommen. Mo, Di usw. Kann mehr als einen Tag pro Woche auswählen. Das Datum, an dem es endet.
Monats Verwenden Tag des Monats wählen kann (1., 2. usw.) ODER sie aus einer Nachschlag von ‚1., 2., 3., 4. oder Last‘ auswählen und einen Tag ‚Mon auftreten können , Di ', zum Beispiel "Der 2. Freitag" des Monats.
Wie kann ich alle diese Szenarien in einer einzigen Tabelle speichern?
Ich dachte:
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
)
Aber das scheint ineffizient. Gibt es für diese Anforderungen ein besseres Designmuster?