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

Tocca e parcheggia:un modello di dati per le app di parcheggio

Diverse app promettono di rendere la tua ricerca di parcheggio indolore. Esaminiamo questo tipo di app utilizzando i nostri occhiali per la modellazione dei dati. Che aspetto ha il modello sottostante?

In un precedente articolo abbiamo spiegato come è strutturato un parcheggio e come è possibile progettare un modello di dati per gestirne uno. In questo articolo, esamineremo il modello di dati per un'app di parcheggio. Conosci queste app:elencano le opzioni di parcheggio nelle vicinanze, ti dicono i prezzi e ti consentono di prenotare o prenotare un posto o acquistare un pass per il parcheggio.

Questa applicazione rende la tua ricerca di parcheggio relativamente indolore. Direi che il fattore più importante nella scelta di un parcheggio è il prezzo. Vale sempre la pena fare una passeggiata di cinque minuti che fa risparmiare qualche soldo. Detto questo, indossiamo i nostri occhiali per la modellazione dei dati e diamo un'occhiata da vicino al mondo delle app per parcheggi.

Cosa dobbiamo sapere sui parcheggi e sulle app di parcheggio?

Le app di parcheggio sono piuttosto semplici:possiamo aspettarci funzioni per monitorare la disponibilità e il prezzo dei parcheggi in tempo reale, prenotare detti posti e pagare le tariffe.

A parte la posizione, che è relativamente facile da gestire per un modellatore di dati, il fattore chiave per i parcheggi è il prezzo. La strategia dei prezzi per i parcheggi è abbastanza semplice e alcuni metodi o regole sono praticamente universali:

  • I parcheggi spesso hanno prezzi diversi per orari diversi. Una giornata è comunemente divisa in tre parti:mattina (dalle 6:00 alle 11:00), mezzogiorno (dalle 11:00 alle 17:00) e sera (dalle 17:00 alle 22:00).
  • La sera e la mattina di solito hanno prezzi più alti, poiché è probabile che più auto abbiano bisogno di spazio durante queste ore.
  • Il prezzo può variare anche in base ai giorni della settimana. Ad esempio, un parcheggio vicino a un centro città addebiterà di più durante il fine settimana (sabato e domenica) perché è lì che arriva più persone.
  • Il più delle volte, i lotti utilizzano i loro prezzi standard. Tuttavia, ci sono giorni in cui potrebbero addebitare di più, ad es. i parcheggi vicino agli stadi di baseball potrebbero addebitare un supplemento quando c'è una partita o un evento allo stadio.
  • I parcheggi vicino agli snodi dei trasporti (aeroporti, stazioni ferroviarie e fermate degli autobus) possono consentire il parcheggio per 24 ore al giorno o per una settimana. Probabilmente avranno una tariffa speciale per il parcheggio a lungo termine.
  • Alcuni parcheggi emettono abbonamenti mensili a costo fisso. I titolari di abbonamento mensile pagano l'importo fisso ogni mese invece di pagare una tariffa giornaliera.

Il modello di dati




Come puoi vedere, ci sono tre aree tematiche:

  1. "Parcheggio"
  2. "Cliente"
  3. "Prenotazione parcheggio"

Prendiamo prima l'area tematica più importante:quella che gestisce i parcheggi e i loro prezzi.

Parcheggio

Questa area tematica ruota attorno al parking_lot tabella, che memorizza i dettagli su ciascun parcheggio nel nostro sistema. Questa tabella è spiegata in modo approfondito nel nostro precedente articolo su un modello di dati di gestione del parcheggio. Tuttavia, ribadiremo alcune colonne importanti qui:

  • zip – Un codice postale; questo gioca un ruolo importante nella funzione di ricerca.
  • is_slot_available – Aggiornato dagli operatori del parcheggio e indica se lo spazio è attualmente disponibile.
  • is_reentry_allowed – Se un cliente può parcheggiare di nuovo nel parcheggio dopo averlo lasciato. Se il rientro non è consentito, il cliente di ritorno dovrà acquistare un altro spazio.
  • is_valet_parking_available – Il parcheggio con servizio di ritiro e riconsegna auto costa in più, ma le persone spesso lo preferiscono, soprattutto quando sono ad un appuntamento. 😉
  • operational_in_night – Se il parcheggio è aperto di notte. Queste informazioni diventano molto importanti quando la tua auto è parcheggiata vicino a un aeroporto e il tuo volo arriva a mezzanotte!
  • minimum_hr_pay – La tariffa minima per parcheggiare l'auto in un parcheggio. Ad esempio, alcuni lotti hanno un minimo di tre ore, il che significa che paghi tre ore anche se parcheggi solo per 30 minuti.
  • is_monthly_pass_allowed –Se molti offrono abbonamenti mensili.

Abbiamo già discusso i fattori che concorrono a stabilire i prezzi dei parcheggi. Ora vediamo come gestiremo i prezzi nel nostro modello. Utilizzeremo il parking_pricing tabella per tenere traccia dei prezzi regolari e della pricing_exception tabella per registrare eventuali eccezioni. Entrambe le tabelle hanno una struttura simile e le colonne sono autoesplicative. Le uniche differenze sono:

  1. Il parking_pricing la tabella ha una colonna (day_of_week ) che memorizza il giorno della settimana relativo a un prezzo. Il pricing_exception la tabella ha un calendar_date colonna che contiene la data effettiva in cui era applicabile il prezzo speciale.
  2. Quando l'app mostra i prezzi, l'pricing_exception la tabella ha la precedenza sul parking_pricing tavolo. Quindi, se la tariffa normale per oggi è di $ 5 l'ora ma è in vigore una tariffa speciale di $ 7, l'app mostrerà $ 7 l'ora.

Il tavolo finale in questa area tematica è offers . Contiene registrazioni di buoni sconto e relativi dettagli. Abbiamo spiegato il modello di dati alla base di offerte, offerte e sconti in un articolo precedente. Questa tabella si basa sulla stessa teoria e tutte le colonne dovrebbero essere autoesplicative.

Cliente

Quando pensiamo a un'app di parcheggio, di solito pensiamo a questi tre elementi:

  • Clienti – Ciò include un ID cliente univoco e dettagli di base sugli utenti dell'app, come il loro nome e numero di telefono. Inoltre, sarebbe utile avere il loro indirizzo di fatturazione.
  • Veicoli – Una persona può avere più auto, quindi dovremmo avere la capacità di una relazione uno-a-molti tra un utente dell'app e i suoi veicoli. Ovviamente, avremmo bisogno di un modo per identificare i veicoli, ad esempio tramite il loro numero di targa.
  • Metodi di pagamento – Poiché questa applicazione consente ai clienti di prenotare un parcheggio e pagarlo, abbiamo bisogno di un modo per memorizzare i metodi di pagamento. Ancora una volta, dovrebbe esserci un modo per avere più metodi di pagamento per utente.

Questo modello ha una tabella per ciascuna di queste entità. Il customer_id l'attributo è referenziato nel vehicle e payment_method tavoli; collega gli utenti ai veicoli e ai metodi di pagamento.

Prenotazione parcheggio

Questa area tematica contiene solo due tabelle. Dei due, la tabella "parking_one_time_reservation" memorizza i dettagli della prenotazione. Alcune delle sue colonne sono autoesplicative; gli altri sono:

  • start_timestamp – La data e l'ora di inizio del periodo di prenotazione.
  • pay_for_min_hr – Contiene una 'N' se la prenotazione è per un determinato numero di ore (es. dalle 9:00 alle 12:00). In caso contrario, questo attributo avrà una "Y".
  • booking_for_hr – Il numero di ore di una prenotazione. Questo è un campo nullable; avrà un valore solo quando pay_for_min_hr è impostato su 'N'. Nell'esempio sopra, sarebbe impostato su "3" per le tre ore che trascorrono tra le 9:00 e le 12:00.
  • basic_parking_cost – Il costo del parcheggio di base, in valuta locale.
  • offer_code – Un codice coupon, se applicabile. Poiché l'applicazione di un codice offerta è facoltativa ed è soggetta a disponibilità, questa colonna è annullabile.
  • net_cost – L'importo effettivo che i clienti pagano alla cassa (quando lasciano il lotto).
  • is_paid – Se sono state pagate le tariffe di parcheggio. Questa diventa una colonna importante quando il rientro è consentito sullo stesso tagliando di parcheggio. In questi casi, i pagamenti vengono generalmente saldati al primo checkout (ovvero la prima volta che l'auto esce dal lotto).

Il parking_monthly_pass la tabella registra le informazioni su tutti gli abbonamenti mensili emessi ai clienti tramite questa applicazione. Gli abbonamenti mensili possono essere acquistati in qualsiasi momento, anche per date future. Quindi abbiamo due colonne separate, purchase_date e start_date , che consentono agli utenti dell'app di acquistare pass validi in futuro. Le altre colonne sono autoesplicative.

Cos'altro possiamo aggiungere al modello di dati dell'app di parcheggio?

I parcheggi moderni sono dotati di tutti i tipi di tecnologie, come lettori di targhe, sensori, sistemi automatizzati di controllo degli accessi ai parcheggi e parchimetri intelligenti. Questi sistemi avanzati rendono i parcheggi più facili da gestire e più facili da usare per gli automobilisti.

Di quali ulteriori modifiche ha bisogno questo modello di dati per supportare i parcheggi completamente attrezzati? Per favore, dicci cosa ne pensi nella sezione commenti.