Progettazione DB per un sistema di pianificazione

1

Attualmente sto progettando un sistema per supportare il processo di assunzione dei dipendenti. Raccolgo le preferenze settimanali dai dipendenti e le inserisco in un sistema per il personale. Le disponibilità possono essere definite come date assolute (ad es. Employee John è disponibile il 01/01/2017 dalle 14:00 alle 16:00). Oppure con ricorrenza, in cui è possibile definire una disponibilità ricorrente settimanale (ad esempio, Employee John è disponibile settimanalmente la domenica dalle 14:00 alle 16:00).

Disponibilità ricorrenti settimanali: ora di inizio / ora di fine: la maggior parte delle query avverrà in base all'ora locale, ma potremmo anche aver bisogno dell'ora UTC nelle query. manteniamo anche il fuso orario per risolvere i problemi relativi all'ora legale. employee_id

Disponibilità assoluta: ora di inizio / ora di fine - datetime assoluto Numero Identità dell'impiegato is_available: può rappresentare un orario in cui un dipendente non è disponibile affatto

organigramma: id id_area is_active

Le seguenti query dovrebbero essere supportate: - Ottieni le disponibilità per dipendente - Ottieni disponibilità per zona e intervallo di date - Dovrebbe filtrare i dipendenti inattivi, dovrebbe restituire anche le disponibilità ricorrenti e dovrebbe anche convertire le date ricorrenti in record assoluti di data e ora, ad esempio: Dato che John ha una singola disponibilità settimanale ricorrente, ogni domenica dalle 14:00 alle 16:00, un utente API potrebbe richiedere a tutti i dipendenti disponibili tra il prossimo Sun-Sat, l'output dovrebbe essere: employee_id, start_datetime, end_datetime

Abbiamo bisogno di costruire un ETL sui dati - trasferirlo in un data warehouse db. Ci viene richiesto di trasferire le disponibilità ricorrenti come disponibilità in tempo reale, ad esempio se ho una disponibilità ricorrente di domenica - dovrei trasferire le future disponibilità corrispondenti a questo - riga per ogni settimana con la data effettiva per un intervallo di mesi o due in futuro. C'è qualche approccio per gestirlo? Dovremmo farlo essere salvato nel data warehouse con le date specifiche? o dovrebbero i rapporti su di esso farlo?

Al momento abbiamo pensato di salvare le disponibilità in mongo in una raccolta per le disponibilità (ricorrenti e assolute) e di copiare i campi di is_employee_active e zone_id in ogni disponibilità. Abbiamo anche pensato di assegnare start_time / end_time una data assoluta per le ricorrenti disponibilità con data prossima al giorno selezionato.

Vorrei ricevere un feedback su quale sia l'approccio migliore, grazie.

    
posta user2283268 04.01.2017 - 14:23
fonte

0 risposte

Leggi altre domande sui tag