9 Stimmen

Was ist das beste Datenbankschema für einen Verfügbarkeitskalender, der die Planung von Terminen (wiederkehrend und einmalig) ermöglicht?)

In meiner Anwendung habe ich einen Anbieter, der einen Zeitplan hat, und Kunden, die Termine aus dem Zeitplan buchen. Ich brauche die folgenden Funktionen.

Anbieter: - Sie können die wiederkehrende Verfügbarkeit angeben. Zum Beispiel Mo 9-5, Di 10-3, etc. - Möglichkeit, Daten zu schwärzen. Zum Beispiel - nicht verfügbar an diesem Montag. - Möglichkeit, einzelne, nicht wiederkehrende Daten/Zeitfenster hinzuzufügen. Zum Beispiel - Diesen Samstag 9-5.

Kunde: - Einzelne Termine buchen können. - Wiederkehrende Termine buchen können. (Jeden Mo 9-4).

Bislang habe ich 3 Optionen gefunden:

  1. Teilen Sie den Zeitplan in 30-Minuten-Intervalle ein und erstellen Sie für jedes Intervall/Anbieterpaar einen Datenbankeintrag. Jedes Intervall kann entweder frei oder gebucht sein. Wenn ein Kunde einen Termin bucht, markieren wir die Intervalle als gebucht. Das Problem bei diesem Ansatz ist, dass viel Platz verschwendet wird, und ich bin mir nicht sicher, wie gut die Suchleistung bei einer wiederkehrenden Buchung wäre.
  2. Speichern Sie jeden Verfügbarkeitszeitraum als "Ereignis". Wenn es sich um ein wiederkehrendes Ereignis handelt, duplizieren Sie das Ereignis. Durchsuchen Sie bei der Suche nach freien Plätzen die Buchungstabelle, um sicherzustellen, dass es keine überschneidenden Buchungen gibt. In diesem Fall scheint die Suche nach wiederkehrenden Terminen etwas umständlich zu sein. Um alle Anbieter zu finden, die im nächsten Jahr am Montag von 9 bis 17 Uhr verfügbar sind, müssen wir nach allen übereinstimmenden "Veranstaltungen" suchen und alle Anbieter finden, die 52 übereinstimmende Veranstaltungen haben.
  3. Speichern Sie jeden Verfügbarkeitszeitraum als "Ereignis". Fügen Sie ein Kennzeichen hinzu, wenn es sich um einen wiederkehrenden Termin handelt, und durchsuchen Sie bei der Suche nach freien Terminen die Buchungstabelle, um sicherzustellen, dass es keine überlappenden Buchungen gibt. Dadurch wird die Suche nach wiederkehrenden Terminen erleichtert. Um wiederkehrende Termine zu "schwärzen", können wir einfach eine falsche Buchung einfügen.

7voto

1. eine Ereignistabelle erstellen:

a) Mit den grundlegenden Spalten Ereignisdatum, Startzeit, Endzeit, mit anderen Details für das Ereignis - dies sind die belebten Zeiten, also das, was Sie im Kalender blockieren

b) Wiederkehrende Ereignisse - Spalten hinzufügen: - isrecurring - Standardwert ist 0 - wiederkehrender Typ (täglich, wöchentlich, monatlich) - recurevery (eine Zählung, wann das wiederkehrende Ereignis eintritt) - mon, tue, wed, thur, fri, sat, sun - Wochentage für wöchentliche Wiederholungen - month und dayofmonth - für monatliche Wiederholung

Die Herausforderung besteht darin, die wiederkehrenden Ereignisse im Kalender zu erstellen: - Wenn Sie alle auf einmal erstellen (z.B. für die nächsten 6 Monate), müssen bei jeder Bearbeitung eines Termins die anderen aktualisiert werden. - Wenn Sie ein Ereignis nur dann erstellen, wenn das vorhergehende bereits vergangen ist, benötigen Sie eine komplexe Logik, um die Kalender für zukünftige Termine anzuzeigen.

Sie brauchen auch Regeln, die festlegen, ob sich Ereignisse überschneiden dürfen, welche Ressourcen verwendet werden dürfen und wie weit im Voraus die Ereignisse geplant werden können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X