Entwurf von Datenbanken zum Speichern der Details des wiederkehrenden Auftretens eines Ereignisses

8

Ich muss ein Feature implementieren, das dem von Microsoft Outlook ähnelt, um Ihren Besprechungstermin wiederkehrend zu gestalten. Ich versuche das optimierte Datenbankdesign herauszufinden, das ich für die Implementierung dieser Funktion benötige.

Die Anforderung ist, dass jeder Lauf oder jede Aufgabe, die vom Benutzer eingegeben wird, auch für die Planung eines wiederkehrenden Ereignisses geeignet ist - wöchentlich, monatlich oder jährlich. Könnten Sie mir bitte das Datenbankmodell - Tabellenstruktur (mit Einschränkungen) vorschlagen, um diese Details in der DB zu speichern, auf die anschließend vom Programm zugegriffen werden kann, um die entsprechende Aufgabe auszuführen. Screenshots für einige der möglichen Planungsdetails finden Sie auf dem folgenden Link .

Wir haben eine mysql-DB im Backend zum Speichern dieser Details. Sobald der Benutzer eine Anfrage einreicht, wird eine Anfrage-ID mit den Details der Anfrage in der Tabelle gespeichert und dann wird eine entsprechende Aktion vom Programm ausgeführt. Eine weitere Klarstellung wäre, dass die Benutzer beabsichtigen, ein SQL-Skript auszuführen, die Werte abzurufen und dann eine statistische Analyse durchzuführen. Da die Orakel-Referenzdatenbank von vielen Benutzern dynamisch aktualisiert wird, möchte er sie jedoch regelmäßig ausführen und die Analyse durchführen. Beachten Sie, dass die mysql-db und der ref-DB unterschiedlich sind.

Bitte lassen Sie mich wissen, wenn Sie andere Details benötigen.!

    
kshitij 02.11.2009, 18:49
quelle

1 Antwort

9

Ich würde vorschlagen, die Details des ersten Vorkommens in einer Tabelle (geplante Aufgaben) und dann die Einzelheiten der Wiederkehr (wiederkehrende Aufgaben) in einem anderen zu speichern.

Ich könnte auch versucht sein, die Tabelle für geplante Aufgaben mit dem nächsten Vorfall zu aktualisieren, wenn die einzelnen Aufgaben erledigt sind.

Wie für das Tabellenlayout lautet die grobe Skizze wie folgt:

[ScehduledTasks]
TaskId (Primärschlüssel)
Beschreibung und Details etc ...
Start Datetime
End Datetime

[RecurringTasks]
TaskId (Fremdschlüssel)
Häufigkeit : Täglich, wöchentlich, monatlich oder jährlich.
DayNo : An welchem ​​Tag (1-7 für wöchentlich, 1-31 für monatlich, 1-365 für jährlich)
Intervall : Alle x Wochen, Monate usw. WeekOfMonth : erstes, zweites, drittes ... etc Wenn befüllt, dann gibt DayNo den Tag der Woche an.
MonthOfYear : 1-12.
EndDatetime : Das letzte zu erfüllende Datum
Vorkommen : Die Anzahl der Durchführungen. Wenn dieser und der vorherige Wert null sind, führe dies für immer aus.

Offensichtliche bestimmte Felder würden je nach der Einrichtung der Aufgabe leer sein, aber ich denke, das obige deckt alles ab, was Sie benötigen, um die Aufgaben in Outlook zu emulieren.

    
Martin 02.11.2009, 19:01
quelle