Database
 sql >> Datenbank >  >> RDS >> Database

Aufbau eines Datenmodells für ein Parkplatzverwaltungssystem

Untersuchungen zeigen, dass Autos 95 % ihrer Lebensdauer geparkt bleiben, was darauf hindeutet, dass Parkraummanagementsysteme intelligent, effizient und robust sein sollten. In diesem Artikel erstellen wir ein Datenmodell für ein solches System.

Einführung

Bevor wir mit dem Aufbau unseres Datenmodells beginnen, sollten wir zunächst verstehen, wie Parkplätze strukturiert sind und wie sie funktionieren. Werfen wir einen kurzen Blick auf diese beiden Schlüsselbereiche.

  1. Wie sind Parkplätze strukturiert?

    Ein typischer Parkplatz besteht aus einem oder mehreren Blöcken, die weiter in Stockwerke unterteilt sind. Jede Etage enthält mehrere Flügel, die den Fahrern helfen, sich zu orientieren und sich an ihre Parkplätze zu erinnern. Diese sind in der Regel mit Buchstaben wie „A“, „B“, „C“ usw. gekennzeichnet. Ein Boden hat normalerweise eine Höhenbegrenzung, die bestimmte Fahrzeuge daran hindert, den Parkplatz zu betreten. Zusätzlich enthält ein Stockwerk mehrere eindeutig nummerierte Parkplätze. Einige dieser Slots sind für Behinderte reserviert; andere können von regelmäßigen Besuchern gegen eine bestimmte Gebühr reserviert werden.

  2. Wie funktionieren Parkplätze?

    Um zu verstehen, wie Parkplätze funktionieren, müssen wir mehr über die Arten von Menschen wissen, die Parkplätze besuchen. Kunden, die Parkplätze betreten, gehören einer der folgenden Gruppen an:

    • Ein Stammkunde, der eine Zweiwochen-, Monats- oder Jahreskarte gekauft hat.
    • Ein Prepaid-Kunde, der einen Slot aus der Ferne (per Telefon oder online) gebucht hat.
    • Ein Laufkunde, der weder einen Pass hat noch einen Slot aus der Ferne gebucht hat. Ein Slot wird einem solchen Kunden je nach Verfügbarkeit zugewiesen.

    Stammkunden erhalten in der Regel Karten/Aufkleber, die sie gut sichtbar auf ihrem Armaturenbrett oder ihrer Windschutzscheibe anbringen können, damit die Parkplatzverwaltung leicht feststellen kann, dass die Kunden nicht gegen Parkregeln verstoßen. Im Gegensatz zu gelegentlichen Besuchern werden Stammkunden niemals täglich Parkscheine ausgestellt. Ein Parkplatz reserviert normalerweise einen ganzen Block oder eine ganze Etage für seine regelmäßigen Besucher, um sicherzustellen, dass sie immer Parkplätze haben. Stammkunden können auch Stellplätze für sich selbst reservieren, damit sie ihre Fahrzeuge jeden Tag in den gleichen ausgewiesenen Stellplätzen parken können, aber dies kostet in der Regel extra.

    Diejenigen, die Fernparkreservierungen vornehmen, können ihre ausgewiesenen Slots normalerweise nur für ein begrenztes Zeitfenster von ein paar Stunden nutzen, wonach die Slots freigegeben werden. Wenn diese Besucher den Parkplatz betreten, müssen sie in ihren reservierten Plätzen parken. Kunden, die den Parkplatz nach Ablauf ihres Zeitfensters nicht verlassen, wird eine Strafe in Rechnung gestellt, aber Kunden können sicherlich vor Ablauf ihrer Reservierung gehen. Einige Parkplätze haben ein festes Mindestzeitfenster (z. B. muss der Kunde möglicherweise einen Stellplatz für drei Stunden buchen, selbst wenn er nur eine Stunde weg ist).

    Laufkundinnen und -kunden erhalten bei der Einfahrt auf einen Parkplatz Parkscheine. Beim Generieren des Belegs wird dem Kunden dann ein Parkplatz zugewiesen, basierend auf den von ihm angegebenen Präferenzen. Der Reservierungsprozess ist hier im Wesentlichen derselbe wie bei Prepaid-Kunden. Eine Walk-in-Reservierung hängt jedoch vollständig von der Verfügbarkeit ab. Ein Slot kann Sie mehr kosten, als wenn Sie einen Platz im Voraus reservieren würden, insbesondere wenn die Verfügbarkeit begrenzt und die Nachfrage groß ist.

Datenmodell




Lassen Sie uns unter Berücksichtigung dieser Anforderungen unser Datenmodell erstellen. Dieses Mal arbeiten wir mit drei Hauptabschnitten:

  • Parkplatz
  • Kunde
  • Parkplatzreservierung

Sehen wir uns jeden dieser Bereiche unseres Datenmodells genauer an.

Abschnitt 1:Parkplatz

Der Abschnitt Parkplatz erfasst nicht nur alle wichtigen Informationen über den Parkplatz selbst, sondern vereinfacht auch die Art und Weise, wie die kleinste Einheit des Parkplatzes (ein Stellplatz) vom Unternehmen verwaltet werden kann. Einige Tabellenspalten wurden nur zu dem Zweck hinzugefügt, Parkplatzreservierungen und -vorgänge in späteren Abschnitten effizienter zu gestalten.

In Übereinstimmung mit der Parkplatzstruktur, die wir in der Einführung besprochen haben, haben wir die folgenden Tabellen erstellt, um jedes Detail zu erfassen, das wir benötigen.

parking_lot – speichert grundlegende Informationen über einen Parkplatz. Die Spalten für diese Tabelle sind:

  • id – der Primärschlüssel für diese Tabelle. Es weist jedem Parkplatz eine eindeutige Nummer zu.
  • number_of_blocks – verfolgt die Anzahl der Blöcke auf einem Parkplatz.
  • is_slot_available – gibt an, ob der Parkplatz derzeit über freie Stellplätze verfügt.
  • address – speichert die vollständige Adresse eines Parkplatzes.
  • zip – speichert die Postleitzahl eines Parkplatzes, sodass Kunden einfacher nach verfügbaren Parkplätzen in einem bestimmten Gebiet suchen können, indem sie einfach ihre gewünschte Postleitzahl abfragen.
  • is_reentry_allowed – gibt an, ob ein Kunde den Parkplatz verlassen und mit demselben Parkschein wieder betreten darf. Beachten Sie, dass viele Parkplätze Kunden dies normalerweise nicht erlauben. Auf solchen Parkplätzen müssen Sie an einem bestimmten Tag bei jeder Wiedereinfahrt einen neuen Beleg kaufen.
  • operating_company_name – speichert den Namen der Firma, die den Parkplatz betreibt.
  • is_valet_parking_available – gibt an, ob der Parkplatz Parkservice anbietet.

block – Ein Parkplatz ist in einen oder mehrere Blöcke unterteilt. Diese Tabelle speichert Informationen über jeden Block eines Parkplatzes. Die Spalten dieser Tabelle sind:– Ein Parkplatz ist in einen oder mehrere Blöcke unterteilt. Diese Tabelle speichert Informationen über jeden Block eines Parkplatzes. Die Spalten für diese Tabelle sind:

  • id – der Primärschlüssel für diese Tabelle.
  • parking_lot_id – die referenzierte Spalte von parking_lot Tabelle, die den Parkplatz identifiziert, zu dem der Block gehört.
  • block_code – speichert den diesem Block zugeordneten Code. Blöcke erhalten normalerweise eindeutige Identifizierungscodes wie „A“, „B“, „C“, „11“, „22“, „33“ usw.
  • number_of_floors – speichert die Anzahl der Stockwerke in diesem Block. Die Zahl „1“ zeigt an, dass es sich um ein ebenerdiges Gebäude ohne Stockwerke handelt.
  • is_block_full – gibt an, ob der Block aktuell voll ist.

floor – Bei mehrstöckigen Parkplätzen können Blöcke mehr als ein Stockwerk haben. Diese Tabelle kann jedoch auch von ebenerdigen Blöcken referenziert werden. Die Spalten für diese Tabelle sind:

  • id – der Primärschlüssel für diese Tabelle.
  • block_id – identifiziert den Block, zu dem eine Etage gehört.
  • floor_number – stellt die Nummer eines Stockwerks dar (wobei 1 =Erdgeschoss).
  • max_height_in_inch – In einem Parkhaus mit mehreren Ebenen hat jede Etage eine Höhenbeschränkung. Diese Spalte speichert die maximal zulässige Höhe für Fahrzeuge auf einem Stockwerk.
  • number_of_wings – Eine Etage ist weiter in Flügel unterteilt, die den Kunden helfen, sich daran zu erinnern, wo sie geparkt haben. Diese Spalte speichert die Anzahl der Flügel, die auf einer Etage vorhanden sind.
  • number_of_slots – speichert die Anzahl der Slots, die auf einer Etage vorhanden sind.
  • is_covered – erkennt, ob ein Boden belegt ist. Die oberste Etage eines mehrstöckigen Parkplatzes oder eines ebenerdigen Parkplatzes wird niemals überdacht.
  • is_accessible – gibt an, ob der Boden gut zugänglich ist, insbesondere für Behinderte. Wenn ein mehrstöckiges Grundstück über einen funktionierenden Aufzug verfügt, gilt jedes seiner Stockwerke als barrierefrei.
  • is_floor_full – zeigt an, ob eine Etage voll besetzt ist.
  • is_reserved_reg_cust – gibt an, ob eine Etage ausschließlich Stammkunden vorbehalten ist.

parking_lot – diese Tabelle speichert alle Informationen über die Stellplätze eines Parkplatzes. Die Spalten für diese Tabelle sind:

  • id – Primärschlüssel für diese Tabelle.
  • floor_id – identifiziert die Etage, zu der ein Stellplatz gehört.
  • slot_number – speichert die eindeutige Kennung des Stellplatzes auf einer bestimmten Etage.
  • wing_code – identifiziert den Flügel, in dem sich ein Schlitz befindet.

Abschnitt 2:Kunden

Als nächstes beginnen wir nun damit, alle relevanten Informationen über Kunden zu detaillieren. Beachten Sie, dass Parkplätze nicht mit der Erfassung und Speicherung personenbezogener Daten wie Namen, Adressen usw. befasst sind, da sie jederzeit auf ihre lokalen DMV-Portale zugreifen können, um diese Informationen bei Bedarf zu erhalten.

customer – speichert alle relevanten Details über alle Arten von Kunden, die den Parkplatz besuchen können (normal, einmalig und Prepaid). Die Spalten für diese Tabelle sind:

  • id – Eindeutige Kennung für den Kunden.
  • vehicle_number – speichert das Kennzeichen eines Kundenfahrzeugs.
  • registration_date – speichert das Datum der Erstzulassung des Fahrzeugs auf dem Parkplatz.
  • is_regular_customer – gibt an, ob ein Kunde einen regulären Pass hat. Wenn die Spalte den Wert true speichert, muss ein gültiger Eintrag in regular_pass Tisch. Wenn ein Pass abläuft und der Kunde ihn noch nicht verlängert hat, wird der Wert in dieser Spalte auf „false“ aktualisiert.
  • contact_number – speichert die Kontaktnummer eines Kunden. Da einige Leute ihre Kontaktnummern nur ungern mit Parkplätzen teilen, haben wir diese Spalte auf Null gesetzt.

regular_pass – speichert Informationen über reguläre Ausweise, die an Kunden ausgegeben werden. Die Spalten für diese Tabelle sind:

  • id – Primärschlüssel für diese Tabelle.
  • customer_id – eine referenzierte Spalte aus der Kundentabelle.
  • purchase_date – speichert das Datum, an dem der Pass gekauft wurde.
  • start_date – speichert das Datum, an dem der Pass gültig ist, was nicht unbedingt das Kaufdatum sein muss, da einige Kunden den Pass im Voraus kaufen.
  • duration_in_days – speichert die Anzahl der Tage, für die ein Pass gültig ist. Eine Monatskarte ist in der Regel 30 Tage gültig.
  • cost – speichert die Kosten in lokaler Währung, die ein Kunde für den Kauf eines Passes bezahlen muss.

Abschnitt 3:Reservierungen

Unser letzter Abschnitt ist der detaillierten Beschreibung des Parkplatzreservierungsprozesses gewidmet. Bei der Reservierung muss ein Kunde in der Regel bestimmte Details angeben, z. B. das voraussichtliche Ankunftsdatum und die voraussichtliche Ankunftszeit, den Zeitraum, für den er den Slot reservieren möchte, und so weiter. Wir besprechen die beiden Haupttabellen dieses Abschnitts weiter unten.

parking_slot_reservation – behält Reservierungsdetails bei. Die Spalten für diese Tabelle sind:

  • id – ordnet einer einzelnen Reservierungsanfrage eine eindeutige Referenznummer zu.
  • customer_id – Verweis auf die Kennung des Kunden, der diese Reservierung vornimmt.
  • start_timestamp – speichert das voraussichtliche Datum und die Uhrzeit der Ankunft des Kunden.
  • duration_in_minutes – speichert die Dauer, für die die Reservierung vorgenommen wurde.
  • booking_date – speichert das Datum, an dem die Reservierung vorgenommen wurde.
  • parking_lot_id – interne Spalte, die einem Kunden einen Parkplatz zuweist, sobald seine Anfrage erfasst und die Zahlung erfolgt ist.

parking_slip – speichert Informationen über die Ein- und Ausgangszeiten des Kunden sowie alle relevanten Gebühren. Wir haben diese Tabelle für Parkplätze erstellt, die mehrere Ein- und Ausfahrten unter derselben Reservierung zulassen. Die Spalten für diese Tabelle sind:

  • id – der Primärschlüssel für diese Tabelle.
  • parking_slot_reservation_id – referenzierte Spalte, die die zugehörige Reservierungsanfrage identifiziert.
  • actual_entry_time – speichert das Ankunftsdatum und den Zeitstempel des Kunden.
  • actual_exit_time – speichert das Abreisedatum (Exit) und den Zeitstempel des Kunden.
  • basic_cost – speichert die Grundkosten der Reservierung.
  • penalty – speichert standardmäßig den Wert 0. Wenn ein Kunde seinen Ausgang verzögert, wird eine Strafgebühr erhoben und der Wert in dieser Spalte wird aktualisiert.
  • total_cost – Diese Spalte fügt lediglich die Werte der basic_cost hinzu und Strafspalten.
  • is_paid – Die Wiedereinfahrt ist in der Regel erst gestattet, wenn ein Kunde seine Parkgebühr bezahlt hat. Diese Spalte zeigt an, ob diese Zahlung erfolgt ist.

Schlussfolgerung

In diesem Artikel haben wir einen Überblick über ein Datenmodell für ein Parkraummanagementsystem gegeben. Es gibt viele Apps, die Benutzern helfen, Parkplätze zu finden, indem sie Daten (wie Verfügbarkeit und Kosten) für Parkplätze in einer bestimmten Umgebung extrahieren, verarbeiten und zusammenstellen. Dies ist besonders nützlich für Leute, die große Städte wie New York, Los Angeles und andere besuchen, wo die Suche nach einem Parkplatz ein Albtraum sein kann, wenn Sie Ihren Besuch nicht sorgfältig planen. Solche Anwendungen verlassen sich auf gut konzipierte Datenmodelle und Datenbank-APIs, um diese Informationen abzurufen.

In unserem nächsten Artikel werden wir unser aktuelles Datenmodell in eine Lösung für ein Echtzeit-Parkplatzverfügbarkeitssystem umwandeln. Fühlen Sie sich frei, Ihre Gedanken, Ihr Feedback und Ihre Empfehlungen im Kommentarbereich unten zu posten.