È Tree la struttura dati corretta?

-1

Devo creare un calendario base di un anno. Ho pensato di utilizzare un albero generico con l'anno come root, mesi come figli di root, giorni come figli di mesi ecc ...

È la strada giusta?

Ricevo i dati del calendario da un calendario di libreria di Python. Per alcuni giorni o ore devo associare alcuni eventi e devo rappresentare il calendario con i loro eventi, ad esempio in una tabella (tutti i giorni del calendario, anche giorni senza eventi).

    
posta Lorenzoi 06.06.2018 - 22:30
fonte

1 risposta

3

No, non è la strada giusta. In un certo senso, l'utilizzo di un albero è un ottimizzazione prematura rispetto all'utilizzo di una semplice raccolta. Puoi sempre aggiungere una struttura ad albero o altri dati di indicizzazione in seguito.

In assenza di ulteriori informazioni dovresti utilizzare la struttura dati più semplice possibile: una semplice raccolta. Ti consiglio di utilizzare una tabella semplice come in SQL, con righe e colonne: colonne come data / ora di inizio, data / ora di fine, tipo di evento, nome dell'evento, ecc ...

Man mano che la tua conoscenza del dominio si espande, ti stai azzerando su quali colonne e quali tabelle avere. L'utilizzo di un albero ostacola la tua agilità - la tua capacità di cambiare mano a mano che cresce l'ambito del tuo progetto - mentre l'uso di una raccolta non lo farà (e nel peggiore dei casi una raccolta ostacolerà le tue prestazioni e sarà riparabile).

All'avvio, inizialmente concentrati su che del dominio, piuttosto su come . Che colonne, piuttosto che come per organizzare la struttura (gerarchica), come inserire, come cercare. Se hai bisogno di una struttura dati o di un indice ottimizzati, è possibile farlo in seguito.

I calendari implicano comunque persistenza a lungo termine, che suggerisce anche tabelle (e un database di qualche tipo). (Con un database puoi indicizzare le colonne della tua data per prestazioni migliori se trovi che ne hai bisogno.)

Alla fine, avrai una buona comprensione della query e dei modelli di comando e delle prestazioni del tuo programma! Ora puoi prendere in considerazione la memorizzazione nella cache, altre strutture di dati, ecc ...

In un'altra nota, un albero come descriveresti sarà molto macchinoso. (Un altro motivo per iniziare con una raccolta semplice e ottimizzare qualcosa più tardi.)

  • Che cosa succede se hai una riunione di due giorni che va dal 31 al 1?

  • Seguendo la tua logica: stai andando a rappresentare ore come figli di giorni, minuti come figli di ore, secondi come figli di minuti, ecc.?

risposta data 06.06.2018 - 23:10
fonte

Leggi altre domande sui tag