Non so davvero se questo è il forum giusto per questo, ma ho bisogno di aiuto per progettare il mio database. Inoltre mi scuso per il titolo orribile: non so come riassumere il problema qui sotto in un singolo titolo.
Sto costruendo un sistema di prenotazione in cui una prenotazione può avere più servizi. Qualcosa come il seguente (documento singolo):
{
name: 'Gasim',
start_date: '2015-07-24 1:30pm',
services: [
{member_id: 'member1', start_date: '2015-07-14 1:30pm', duration: '40 mins'},
{member_id: 'member2', start_date: '2015-07-14 2:30pm', duration: '60 mins'}
]
}
Avevo intenzione di seguire questo progetto, ma dopo aver avuto molti dibattiti con un certo numero di persone, ho perso la fiducia nell'andare con questo design. Mi è stato detto più volte che dovevo creare una prenotazione separata per ciascun servizio invece di aggregare i servizi con un'unica prenotazione. Anche se mi piace l'idea che mi sia stata proposta, ho un grosso problema e vorrei che tu facessi luce su questo problema per me.
Tutti questi servizi vengono assegnati in un singolo periodo di tempo. Quindi, diciamo l'esempio sopra, il tempo totale per una prenotazione è di 100 minuti con 20 minuti di attesa = 2 ore.
Se li separo, significa che in realtà ho due riserve. In uno scenario di programmazione questa può essere una buona idea, ma guardiamo da uno scenario reale. Dopo aver fatto una prenotazione, vengo nella struttura e dico che ho una prenotazione sotto il mio nome. Perché la reception dovrebbe vedere due prenotazioni separate sotto il mio nome?
Ho intenzione di fornire alcune informazioni di base su come questa cosa diventa un problema. Il mio sistema ha la capacità di interrogare tutte le prenotazioni, passare attraverso i loro servizi e generare un elenco di orari disponibili in base ai servizi che un utente desidera. Mi aspetto davvero che questo algoritmo sia lento poiché sto attraversando molti array e loop annidati. Tuttavia, questa operazione specifica verrà recuperata ad una velocità molto piccola anche a scale grandi (non credo che supererà mai 1000 richieste / secondo, punto).
Domanda
Questo design è corretto? Non per quanto riguarda le prestazioni, ma solo per quanto riguarda la logica. Non voglio che il mio progetto sia logicamente difettoso solo perché rende alcune operazioni veloci. Se questo non è un progetto corretto, puoi spiegare perché?