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

Tap and Park:Ein Park-App-Datenmodell

Diverse Apps versprechen eine schmerzlose Parkplatzsuche. Lassen Sie uns diese Art von App mit unserer Datenmodellierungsbrille untersuchen. Wie sieht das zugrunde liegende Modell aus?

In einem früheren Artikel haben wir erläutert, wie ein Parkplatz strukturiert ist und wie ein Datenmodell für die Verwaltung eines Parkplatzes gestaltet werden kann. In diesem Artikel untersuchen wir das Datenmodell für eine Park-App. Sie kennen diese Apps:Sie listen Parkmöglichkeiten in der Nähe auf, nennen Ihnen die Preise und lassen Sie einen Platz buchen oder reservieren oder einen Parkausweis kaufen.

Diese Anwendung macht Ihre Parkplatzsuche relativ schmerzlos. Ich würde sagen, dass der wichtigste Faktor bei der Auswahl eines Parkplatzes der Preis ist. Ein fünfminütiger Spaziergang, der ein paar Dollar spart, lohnt sich immer. Setzen wir aber unsere Datenmodellierungsbrille auf und werfen wir einen genauen Blick auf die Welt der Parkplatz-Apps.

Was sollten wir über Parkplätze und Park-Apps wissen?

Park-Apps sind ziemlich einfach:Wir können Funktionen erwarten, um die Verfügbarkeit und den Preis von Parkplätzen in Echtzeit zu verfolgen, diese zu buchen und die Gebühren zu bezahlen.

Abgesehen vom Standort, der für einen Datenmodellierer relativ einfach zu handhaben ist, ist der Preis der wichtigste Treiber für Parkplätze. Die Preisstrategie für Parkplätze ist ziemlich einfach, und bestimmte Methoden oder Regeln sind praktisch universell:

  • Parkplätze haben oft unterschiedliche Preise für unterschiedliche Zeiten. Ein Tag wird üblicherweise in drei Teile eingeteilt – morgens (6:00 bis 11:00 Uhr), mittags (11:00 bis 17:00 Uhr) und abends (17:00 bis 22:00 Uhr).
  • Abends und morgens haben normalerweise höhere Preise, da wahrscheinlich mehr Autos während dieser Zeiten einen Platz benötigen.
  • Die Preise können auch je nach Wochentag variieren. Beispielsweise werden für einen Parkplatz in der Nähe eines Stadtzentrums am Wochenende (Samstag und Sonntag) mehr Gebühren berechnet, weil dann mehr Besucher kommen.
  • Meistens verwenden Lose ihre Standardpreise. Es gibt jedoch Tage, an denen sie mehr verlangen können – z. Parkplätze in der Nähe von Baseballstadien können mehr verlangen, wenn im Stadion ein Spiel oder eine Veranstaltung stattfindet.
  • Parkplätze in der Nähe von Verkehrsknotenpunkten (Flughäfen, Bahnhöfen und Bushaltestellen) können das Parken für einen Tag oder eine Woche rund um die Uhr gestatten. Sie werden wahrscheinlich einen Sonderpreis für Langzeitparken haben.
  • Einige Parkplätze stellen Monatskarten zu einem festen Preis aus. Inhaber einer Monatskarte zahlen statt einer Tagesgebühr jeden Monat den festen Betrag.

Das Datenmodell




Wie Sie sehen können, gibt es drei Themenbereiche:

  1. "Parkplatz"
  2. "Kunde"
  3. "Parkplatzreservierung"

Nehmen wir zunächst das wichtigste Themengebiet, das sich mit Parkplätzen und deren Preisgestaltung befasst.

Parkplatz

Dieser Themenbereich dreht sich um den parking_lot Tabelle, die Details zu jedem Parkplatz in unserem System speichert. Diese Tabelle wird ausführlich in unserem früheren Artikel über ein Datenmodell für die Parkplatzverwaltung erläutert. Wir wiederholen hier jedoch einige wichtige Spalten:

  • zip – eine Postleitzahl; dies spielt eine große Rolle in der Suchfunktion.
  • is_slot_available – Wird von Parkplatzbetreibern aktualisiert und zeigt an, ob derzeit Platz verfügbar ist.
  • is_reentry_allowed – Ob ein Kunde auf dem Parkplatz wieder parken kann, nachdem er ihn verlassen hat. Wenn der Wiedereintritt nicht erlaubt ist, muss der wiederkehrende Kunde einen anderen Platz kaufen.
  • is_valet_parking_available – Valet Parking kostet extra, aber die Leute bevorzugen es oft – besonders wenn sie auf einem Date sind. 😉
  • operational_in_night – Ob der Parkplatz nachts geöffnet ist. Diese Informationen werden sehr wichtig, wenn Ihr Auto in der Nähe eines Flughafens geparkt ist und Ihr Flug um Mitternacht ankommt!
  • minimum_hr_pay – Die Mindestgebühr, um Ihr Auto auf einem Parkplatz zu parken. Einige Parkplätze haben zum Beispiel ein Drei-Stunden-Minimum, was bedeutet, dass Sie drei Stunden bezahlen, selbst wenn Sie nur 30 Minuten geparkt haben.
  • is_monthly_pass_allowed –Ob viel Monatskarten anbietet.

Wir haben bereits die Faktoren besprochen, die in die Festlegung der Parkpreise einfließen. Sehen wir uns nun an, wie wir mit der Preisgestaltung in unserem Modell umgehen. Wir verwenden den parking_pricing Tabelle, um reguläre Preise und die pricing_exception Tabelle, um Ausnahmen aufzuzeichnen. Beide Tabellen sind ähnlich aufgebaut und die Spalten sind selbsterklärend. Die einzigen Unterschiede sind:

  1. Der parking_pricing Tabelle hat eine Spalte (day_of_week ), die den preisrelevanten Wochentag speichert. Die pricing_exception Tabelle hat ein calendar_date Spalte, die das tatsächliche Datum enthält, an dem der Sonderpreis galt.
  2. Wenn die App Preise anzeigt, wird der pricing_exception Tabelle hat Vorrang vor parking_pricing Tisch. Wenn also der reguläre Preis für heute 5 $ pro Stunde beträgt, es aber einen Sonderpreis von 7 $ gibt, zeigt die App 7 $ pro Stunde an.

Die letzte Tabelle in diesem Themenbereich ist offers . Es enthält Aufzeichnungen über Rabattcoupons und die zugehörigen Details. Wir haben das Datenmodell hinter Angeboten, Deals und Rabatten in einem früheren Artikel erklärt. Diese Tabelle basiert auf derselben Theorie und alle Spalten sollten selbsterklärend sein.

Kunde

Wenn wir an eine Park-App denken, denken wir normalerweise an diese drei Elemente:

  • Kunden – Dazu gehören eine eindeutige Kunden-ID und grundlegende Details zu App-Benutzern wie Name und Telefonnummer. Außerdem wäre es gut, ihre Rechnungsadresse zu haben.
  • Fahrzeuge – Eine Person kann mehrere Autos haben, also sollten wir die Möglichkeit haben, eine Eins-zu-Viele-Beziehung zwischen einem App-Benutzer und seinen Fahrzeugen herzustellen. Offensichtlich bräuchten wir eine Möglichkeit, Fahrzeuge zu identifizieren, z. B. anhand ihrer Lizenznummer.
  • Zahlungsmethoden – Da diese Anwendung es Kunden ermöglicht, einen Parkplatz zu reservieren und dafür zu bezahlen, brauchen wir eine Möglichkeit, Zahlungsmethoden zu speichern. Auch hier sollte es möglich sein, mehrere Zahlungsmethoden pro Benutzer zu verwenden.

Dieses Modell hat eine Tabelle für jede dieser Entitäten. Die customer_id Attribut wird im vehicle und payment_method Tische; es verbindet Benutzer mit Fahrzeugen und Zahlungsmethoden.

Parkplatzreservierung

Dieser Themenbereich enthält nur zwei Tabellen. Von den beiden speichert die Tabelle „parking_one_time_reservation“ Reservierungsdetails. Einige seiner Spalten sind selbsterklärend; die anderen sind:

  • start_timestamp – Datum und Uhrzeit des Beginns des Reservierungszeitraums.
  • pay_for_min_hr – Enthält ein „N“, wenn die Reservierung für eine bestimmte Anzahl von Stunden gilt (z. B. von 9 bis 12 Uhr). Andernfalls hat dieses Attribut ein „Y“.
  • booking_for_hr – Die Anzahl der Stunden einer Reservierung. Dies ist ein Nullable-Feld; es wird nur dann einen Wert haben, wenn pay_for_min_hr auf „N“ gesetzt ist. Im obigen Beispiel wäre es für die drei Stunden, die zwischen 9:00 und 12:00 Uhr vergehen, auf „3“ eingestellt.
  • basic_parking_cost – Die Grundgebühr für das Parken in lokaler Währung.
  • offer_code – Ein Gutscheincode, falls zutreffend. Da die Anwendung eines Angebotscodes optional ist und der Verfügbarkeit unterliegt, ist diese Spalte nullable.
  • net_cost – Der tatsächliche Betrag, den Kunden an der Kasse zahlen (wenn sie das Grundstück verlassen).
  • is_paid – Ob Parkgebühren bezahlt wurden. Dies wird zu einer wichtigen Spalte, wenn die Wiedereinfahrt auf demselben Parkschein erlaubt ist. In solchen Fällen werden Zahlungen in der Regel beim ersten Check-out (d. h. beim ersten Verlassen des Parkplatzes) abgerechnet.

Der parking_monthly_pass Die Tabelle enthält Informationen zu allen Monatskarten, die über diese Anwendung an Kunden ausgegeben wurden. Monatskarten können jederzeit gekauft werden, auch für zukünftige Termine. Wir haben also zwei separate Spalten, purchase_date und start_date , die es App-Nutzern ermöglichen, Pässe zu kaufen, die in der Zukunft gültig sind. Die anderen Spalten sind selbsterklärend.

Was können wir dem Park-App-Datenmodell noch hinzufügen?

Moderne Parkplätze sind mit allen Arten von Technologien ausgestattet, wie Nummernschildlesern, Sensoren, automatisierten Parkzugangskontrollsystemen und intelligenten Parkuhren. Diese fortschrittlichen Systeme erleichtern den Betrieb von Parkplätzen und die Nutzung durch Autofahrer.

Welche zusätzlichen Änderungen sind an diesem Datenmodell erforderlich, um voll ausgestattete Parkplätze zu unterstützen? Bitte teilen Sie uns Ihre Gedanken im Kommentarbereich mit.