Frage

Wir betrachten die Aktualisierung (Umschreiben) unser System, das Informationen über speichert, wenn Menschen Räume etc. während des Tages reservieren können. Gerade jetzt speichern wir die Start- und Uhrzeit und das Datum der Zimmer in einer Tabelle zur Verfügung steht, und in einem anderen speichern wir die einzelnen Terminzeiten.

An der Oberfläche wie eine logische Idee schien die Informationen auf diese Weise zu speichern, aber mit der Zeit fortgeschritten ist und das System kam unter hohen Last, begannen wir zu erkennen, dass diese Datenstruktur ineffizient zu sein scheint. (Es wird ein intensiver Betrieb alle Räume für die zur Verfügung stehenden Zeiten zu suchen und berechnen, wenn die Zimmer zur Verfügung stehen. Wenn der Raum für eine bestimmte Zeit zur Verfügung steht, ist die Zeit, die sie zur Verfügung lang genug ist, die gewünschte Zeit anzupassen).

Wir haben im Kreis gegangen, wie das System effizienter zu machen, und wir glauben, dass es ein besserer Weg, um diesen Ansatz sein. Hat jemand Vorschläge, wie um dies zu realisieren, oder irgendwelche Orte, wo man schaut, wie so etwas zu bauen?

War es hilfreich?

Lösung

Ich fand dieses Buch inspirierend zu sein und ein für jede Art von Datenbank beteiligt Zeitmanagement / Beschränkungssatzmatrizen muss lauten:

Entwicklung zeitorientierte Datenbankanwendungen in SQL

( durch Editor hinzugefügt : Buch ist online verfügbar, über die Richard Snodgrass 's Homepage. Es ist ein gutes Buch.)

Andere Tipps

@ Radu094 hat Sie auf eine gute Informationsquelle hingewiesen -. Aber es wird schwer sein, dass geht die Verarbeitung

Auf eine schrecklich pragmatischen Ebene haben Sie darüber nachgedacht Aufnahme Termine und die verfügbaren Informationen in einer einzigen Tabelle, anstatt in zwei Tabellen? Für jeden Tag, die Zeit, in Scheiben schneidet in ‚nie verfügbar‘ (vor dem Büro eröffnet, nachdem das Büro schließt - wenn so etwas geschieht), ‚vorhanden - kann zugeordnet werden‘, und ‚nicht verfügbar‘. Dieses (zwei oder) drei Klassen von Buchungen würden in benachbarten Intervallen aufgezeichnet werden (mit Start- und Endzeit für jedes Intervall in einem einzelnen Datensatz).

Für jedes Zimmer und jedes Datum, ist es notwendig, eine Reihe von ‚nicht in Gebrauch‘ Buchungen zu erstellen (je nachdem, ob Sie gingen mit ‚nie zur Verfügung‘, könnte der Satz eine ‚verfügbar‘ Rekord sein oder es könnte die umfassen Frühschicht und Spätschicht 'nie zur Verfügung Aufzeichnungen auch).

Dann müssen Sie herausfinden, was Fragen, die Sie fragen. Zum Beispiel:

  • Kann ich buchen Zimmer X an Tag Y zwischen T1 und T2?
  • Gibt es einen Raum zur Verfügung zu Tag Y zwischen T1 und T2?
  • zu welchen Zeiten am Tag Y Raum X noch verfügbar?
  • Zu welchen Zeiten am Tag Y sind ein Raum mit audio-visuellen Fähigkeiten und Kapazität für 12 Personen zur Verfügung?
  • Wer Raum X am Morgen des Tages Y gebucht hat?

Dies ist nur ein kleiner Teil der Möglichkeiten. Aber mit einiger Sorgfalt und Liebe zum Detail, werden die Abfragen überschaubar. Validieren der Einschränkungen im DBMS wird schwieriger. Das heißt, dass sichergestellt wird, dass, wenn die Zeit [T1..T2) gebucht wird, dann keine andere Bücher [T1 + 00: 01..T2-00: 01) oder ein beliebige andere Überlappungsperiode. Siehe Allen-Kalkül bei Wikipedia und anderen Orten (einschließlich diesem unter uci.edu ).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top