7

Nella mia applicazione ho un fornitore che ha un programma e clienti che prenotano un appuntamento dal programma. Ho bisogno delle seguenti funzionalità.Qual è lo schema di database migliore per un calendario disponibilità che consente di pianificare appuntamenti (ricorrenti e singoli))

Fornitore: - Essere in grado di specificare la disponibilità ricorrente. Ad esempio lunedì 9-5, martedì 10-3, ecc. - Essere in grado di oscurare i dati. Ad esempio, non disponibile su questo lunedì. - Essere in grado di aggiungere singole, non ricorrenti date/orari. Per esempio - Questo sabato 9-5.

Cliente: - Essere in grado di prenotare singoli appuntamenti. - Essere in grado di prenotare appuntamenti ricorrenti. (Ogni lunedì 9-4).

Finora mi si avvicinò con 3 opzioni:

  1. Divide la pianificazione in intervalli di 30 min e creare una voce di database per ogni coppia intervallo/fornitore. Ogni intervallo può essere libero o prenotato. Quando un cliente prenota un appuntamento, contrassegniamo gli intervalli come prenotati. Il problema con questo approccio è che spreca molto spazio e non sono sicuro di quanto sarebbe buono il rendimento della ricerca per una prenotazione ricorrente.
  2. Salvare ciascun periodo di disponibilità come "evento". Se si ripresenta, duplicare l'evento. Durante la ricerca di slot gratuiti, cerca nel tavolo delle prenotazioni per assicurarti che non ci sia una prenotazione eccessiva. In questo caso, la ricerca di slot ricorrenti sembra un po 'imbarazzante. Per trovare tutti i provider disponibili sul lunedì 9-5 per il prossimo anno dovremo cercare tutti gli "eventi" corrispondenti e trovare tutti i provider che hanno 52 eventi corrispondenti.
  3. Salvare ciascun periodo di disponibilità come "evento". Aggiungi una bandiera se si ripresenta. Quando cerchi le slot gratuite, cerca nel tavolo delle prenotazioni per assicurarti che non ci sia una prenotazione eccessiva. Rende più facile la ricerca di appuntamenti ricorrenti. Allo slot "black out" che supponiamo si ripresenti, possiamo semplicemente inserire una prenotazione falsa.

risposta

6

1.Creare una tabella di eventi:

a) con le colonne di base EventDate, starttime, endtime, con altri dettagli per l'evento - queste sono le ore di punta in modo sono ciò che si blocca fuori sul calendario

b) Recurring Eventi - aggiungere colonne: - isrecurring - il default è 0 - recurrencetype (giornaliera, settimanale, mensile) - recurevery (un conteggio di quando si verificherà la ricorrenza) - lun, mar, mer, thur, fri, sat, sun - giorni della settimana per la ricorrenza settimanale - mese e giorno del mese - per ricorrenza mensile

2. La sfida arriva quando si creano gli eventi ricorrenti sul calendario: - se li si crea tutti contemporaneamente (ad esempio per i successivi 6 mesi), ogni volta che si modifica uno il altri devono essere aggiornati - Se si crea un evento solo quando il precedente è passato, è necessario logica complessa per visualizzare i calendari per le date future

3.È necessario anche regole per assicurarsi che gli eventi siano autorizzati a si sovrappongono a vicenda, quali risorse devono essere utilizzate, in che misura è possibile pianificare gli eventi in anticipo

+0

puoi aiutarci a capire come la struttura del Reccuring Even lo schema della tabella sarà. non ho capito in totale da quanto sopra –