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

Costruzione di un modello di dati per un sistema di gestione dei parcheggi

La ricerca mostra che le auto rimangono parcheggiate per il 95% della loro vita, suggerendo che i sistemi di gestione dei parcheggi dovrebbero essere intelligenti, efficienti e robusti. In questo articolo costruiremo un modello di dati per un tale sistema.

Introduzione

Prima di iniziare a costruire il nostro modello di dati, dovremmo prima capire come sono strutturati i parcheggi e come funzionano. Diamo una breve occhiata a queste due aree chiave.

  1. Come sono strutturati i parcheggi?

    Un tipico parcheggio è costituito da uno o più blocchi ulteriormente suddivisi in piani. Ogni piano contiene più ali che aiutano i conducenti a orientarsi e ricordare i loro parcheggi. Questi sono solitamente etichettati con lettere, come "A", "B", "C" e così via. Un piano di solito ha un limite di altezza che impedisce a determinati veicoli di entrare nel parcheggio. Inoltre, un piano contiene diversi posti auto numerati in modo univoco. Alcuni di questi posti sono riservati ai portatori di handicap; altri possono essere prenotati da visitatori abituali ad un certo costo.

  2. Come funzionano i parcheggi?

    Per capire come funzionano i parcheggi, dobbiamo sapere di più sulle tipologie di persone che visitano i parcheggi. I clienti che entrano nei parcheggi appartengono a uno dei seguenti gruppi:

    • Un cliente abituale che ha acquistato un abbonamento bisettimanale, mensile o annuale.
    • Un cliente prepagato che ha prenotato uno slot da remoto (al telefono o online).
    • Un cliente walk-in che non ha un pass né ha prenotato uno slot da remoto. Uno slot verrà assegnato a tale cliente in base alla disponibilità.

    Ai clienti abituali vengono solitamente fornite carte/adesivi da posizionare in un punto visibile sul cruscotto o sul parabrezza in modo che la direzione del parcheggio possa facilmente determinare che i clienti non stanno violando le regole del parcheggio. A differenza dei visitatori occasionali, ai clienti abituali non vengono mai emessi tagliandi di parcheggio su base giornaliera. Un parcheggio in genere riserva un intero isolato o piano ai suoi visitatori regolari per assicurarsi che abbiano sempre posti dove parcheggiare. I clienti abituali possono anche prenotare degli slot per se stessi in modo da poter parcheggiare i loro veicoli negli stessi slot designati ogni giorno, ma questo in genere costa di più.

    Coloro che effettuano prenotazioni di parcheggi remoti in genere possono utilizzare gli slot designati solo per un intervallo di tempo limitato di un paio d'ore, dopodiché gli slot vengono liberati. Quando questi visitatori entrano nel parcheggio, devono parcheggiare nei posti riservati. Viene applicata una penale ai clienti che non escono dal parcheggio allo scadere delle loro finestre temporali, ma i clienti possono sicuramente partire prima della scadenza della prenotazione. Alcuni parcheggi hanno una finestra temporale minima fissa (ad esempio, il cliente potrebbe dover prenotare uno slot per tre ore anche se staranno via solo per un'ora).

    Ai clienti che entrano nel parcheggio vengono consegnati tagliandi di parcheggio quando entrano in un parcheggio. Un parcheggio viene quindi assegnato al cliente man mano che viene generato lo scontrino, in base alle preferenze da lui specificate. Il processo di prenotazione qui è essenzialmente lo stesso di quello per i clienti prepagati. Tuttavia, una prenotazione walk-in dipende interamente dalla disponibilità. Uno slot può costarti di più che se dovessi prenotare un posto in anticipo, soprattutto se c'è disponibilità limitata e forte domanda.

Modello di dati




Tenendo presenti questi requisiti, andiamo avanti e creiamo il nostro modello di dati. Questa volta lavoreremo con tre sezioni principali:

  • Parcheggio
  • Cliente
  • Prenotazione parcheggio

Diamo un'occhiata più da vicino a ciascuna di queste aree del nostro modello di dati.

Sezione 1:Parcheggio

La sezione Parcheggio non solo raccoglie tutte le informazioni importanti sul parcheggio stesso, ma semplifica anche il modo in cui l'unità più piccola del parcheggio (uno slot) può essere gestita dall'azienda. Alcune colonne della tabella sono state aggiunte al solo scopo di rendere più efficienti le prenotazioni dei parcheggi e le operazioni nelle sezioni successive.

In conformità con la struttura del parcheggio di cui abbiamo discusso nell'introduzione, abbiamo creato le seguenti tabelle per catturare ogni dettaglio di cui avremo bisogno.

parking_lot – memorizza le informazioni di base su un parcheggio. Le colonne di questa tabella sono:

  • id – la chiave primaria per questa tabella. Assegna un numero univoco a ciascun parcheggio.
  • number_of_blocks – tiene traccia del numero di blocchi in un parcheggio.
  • is_slot_available – indica se il parcheggio ha attualmente degli slot disponibili.
  • address – memorizza l'indirizzo completo di un parcheggio.
  • zip – memorizza il codice postale di un parcheggio, consentendo ai clienti di cercare più facilmente i parcheggi disponibili all'interno di una determinata area semplicemente interrogando il codice postale desiderato.
  • is_reentry_allowed – indica se un cliente può uscire dal parcheggio e rientrare con lo stesso tagliando. Nota che molti parcheggi in genere non consentono ai clienti di farlo. In tali parcheggi è necessario acquistare un nuovo tagliando ogni volta che si rientra in un determinato giorno.
  • operating_company_name – memorizza il nome dell'azienda che gestisce il parcheggio.
  • is_valet_parking_available – indica se il parcheggio offre servizi di parcheggio con servizio di ritiro e riconsegna auto.

block – un parcheggio è suddiviso in uno o più blocchi. Questa tabella memorizza le informazioni su ogni blocco di un parcheggio. Le colonne di questa tabella sono:– un parcheggio è suddiviso in uno o più blocchi. Questa tabella memorizza le informazioni su ogni blocco di un parcheggio. Le colonne di questa tabella sono:

  • id – la chiave primaria per questa tabella.
  • parking_lot_id – la colonna di riferimento del parking_lot tabella che identifica il parcheggio di appartenenza del blocco.
  • block_code – memorizza il codice associato a questo blocco. Ai blocchi vengono solitamente assegnati codici identificativi univoci, come “A”, “B”, “C”, “11”, “22”, “33” e così via.
  • number_of_floors – memorizza il numero di piani in questo blocco. Il numero “1” indica che si tratta di un blocco a piano terra senza piani.
  • is_block_full – indica se il blocco è attualmente pieno.

floor – nei parcheggi multipiano i blocchi possono avere più di un piano. Tuttavia, questa tabella può anche essere referenziata da blocchi a livello del suolo. Le colonne di questa tabella sono:

  • id – la chiave primaria per questa tabella.
  • block_id – identifica il blocco di appartenenza di un piano.
  • floor_number – rappresenta il numero di un piano (dove 1 =piano terra).
  • max_height_in_inch – in un parcheggio multipiano ogni piano ha un vincolo di altezza. Questa colonna memorizza l'altezza massima consentita per i veicoli su un pavimento.
  • number_of_wings – un piano è ulteriormente suddiviso in ali, che aiutano i clienti a ricordare dove hanno parcheggiato. Questa colonna memorizza il numero di ali esistenti su un piano.
  • number_of_slots – memorizza il numero di slot esistenti su un piano.
  • is_covered – identifica se un pavimento è coperto. L'ultimo piano di un parcheggio multipiano o di un parcheggio al piano terra non sarà mai coperto.
  • is_accessible – indica se il piano è facilmente accessibile, soprattutto da parte di portatori di handicap. Se un lotto multilivello dispone di un ascensore operativo, ciascuno dei suoi piani è considerato accessibile.
  • is_floor_full – indica se un piano è completamente occupato.
  • is_reserved_reg_cust – indica se un piano è strettamente riservato ai clienti abituali.

parking_slot – questa tabella memorizza tutte le informazioni sugli spazi di parcheggio di un parcheggio. Le colonne di questa tabella sono:

  • id – chiave primaria per questa tabella.
  • floor_id – identifica il piano a cui appartiene uno slot.
  • slot_number – memorizza l'identificatore univoco dello slot su un piano particolare.
  • wing_code – identifica l'ala in cui si trova un'asola.

Sezione 2:Clienti

Andando avanti, ora inizieremo a descrivere in dettaglio tutte le informazioni rilevanti sui clienti. Tieni presente che i parcheggi non si occupano di acquisire e archiviare informazioni personali come nomi, indirizzi, ecc., poiché possono accedere ai loro portali DMV locali in qualsiasi momento per ottenere tali informazioni, se necessario.

customer – memorizza tutti i dettagli rilevanti su tutti i tipi di clienti che possono visitare il parcheggio (regolari, una tantum e prepagati). Le colonne di questa tabella sono:

  • id – identificatore univoco per il cliente.
  • vehicle_number – memorizza il numero di targa del veicolo di un cliente.
  • registration_date – memorizza la data di prima immatricolazione del veicolo nel parcheggio.
  • is_regular_customer – indica se un cliente ha un pass regolare. Se la colonna memorizza un valore true, deve esistere una voce valida nel regular_pass tavolo. Una volta che un pass è scaduto e il cliente non lo ha ancora rinnovato, il valore in questa colonna viene aggiornato a false.
  • contact_number – memorizza il numero di contatto di un cliente. Poiché alcune persone sono riluttanti a condividere i propri numeri di contatto con i parcheggi, abbiamo mantenuto questa colonna annullabile.

regular_pass – memorizza le informazioni sugli abbonamenti regolari emessi ai clienti. Le colonne di questa tabella sono:

  • id – chiave primaria per questa tabella.
  • customer_id – una colonna referenziata dalla tabella dei clienti.
  • purchase_date – memorizza la data di acquisto del pass.
  • start_date – memorizza la data in cui il pass sarà considerato valido, che potrebbe non essere necessariamente la data di acquisto, poiché alcuni clienti acquistano i pass in anticipo.
  • duration_in_days – memorizza il numero di giorni di validità di un abbonamento. Un abbonamento mensile di solito rimane valido per 30 giorni.
  • cost – memorizza il costo, in valuta locale, che un cliente deve pagare per acquistare un pass.

Sezione 3:Prenotazioni

La nostra ultima sezione è dedicata al dettaglio del processo di prenotazione del parcheggio. Quando effettua una prenotazione, un cliente deve in genere fornire alcuni dettagli, come la data e l'ora di arrivo previste, la quantità di tempo per cui desidera prenotare lo slot e così via. Discutiamo le due tabelle principali di questa sezione di seguito.

parking_slot_reservation – mantiene i dettagli della prenotazione. Le colonne di questa tabella sono:

  • id – assegna un numero di riferimento univoco ad una singola richiesta di prenotazione.
  • customer_id – riferimento all'identificativo del cliente che sta effettuando questa prenotazione.
  • start_timestamp – memorizza la data e l'ora previste di arrivo del cliente.
  • duration_in_minutes – memorizza la durata per la quale è stata effettuata la prenotazione.
  • booking_date – memorizza la data in cui è stata effettuata la prenotazione.
  • parking_slot_id – colonna interna che assegna un parcheggio ad un cliente una volta catturata la sua richiesta ed effettuato il pagamento.

parking_slip – memorizza le informazioni sugli orari di ingresso e uscita del cliente, nonché eventuali commissioni pertinenti. Abbiamo creato questa tabella per i parcheggi che consentono più ingressi e uscite con la stessa prenotazione. Le colonne di questa tabella sono:

  • id – la chiave primaria per questa tabella.
  • parking_slot_reservation_id – colonna referenziata che identifica la richiesta di prenotazione associata.
  • actual_entry_time – memorizza la data di arrivo e il timestamp del cliente.
  • actual_exit_time – memorizza la data e l'ora di partenza (di uscita) del cliente.
  • basic_cost – memorizza il costo base della prenotazione.
  • penalty – memorizza un valore di 0 per impostazione predefinita. Se un cliente ritarda la sua uscita, verrà applicata una penale e il valore in questa colonna verrà aggiornato.
  • total_cost – questa colonna aggiunge semplicemente i valori del basic_cost e colonne di penalità.
  • is_paid – il rientro è solitamente consentito solo dopo che il cliente ha pagato la tariffa del parcheggio. Questa colonna indica se questo pagamento è stato effettuato.

Conclusione

In questo articolo, abbiamo presentato una panoramica di un modello di dati per un sistema di gestione dei parcheggi. Esistono molte app che aiutano gli utenti a trovare parcheggi estraendo, elaborando e compilando dati (come disponibilità e costi) per i parcheggi in una determinata zona. Ciò è particolarmente utile per le persone che visitano grandi città come New York, Los Angeles e altre dove trovare un parcheggio può essere un incubo se non pianifichi attentamente la tua visita. Tali applicazioni si basano su modelli di dati ben progettati e API di database per recuperare queste informazioni.

Nel prossimo articolo trasformeremo il nostro attuale modello di dati in una soluzione per un sistema di disponibilità dei parcheggi in tempo reale. Sentiti libero di pubblicare i tuoi pensieri, feedback e consigli nella sezione commenti qui sotto.