Ho un'entità Folder che può essere moderata dagli utenti. Le cartelle possono contenere altre cartelle. Quindi potrei avere una struttura come questa:
Folder 1
Folder 2
Folder 3
Folder 4
Devo decidere come implementare la moderazione per questa entità. Ho trovato due opzioni:
Opzione 1
Quando all'utente vengono assegnati i privilegi di moderazione per la Cartella 1, definire una relazione moderatore tra Cartella 1 e Utente 1. Nessun altro rapporto viene aggiunto al db.
Per determinare se l'utente può moderare la cartella 3, controllo e vedo se l'utente 1 è il moderatore di qualsiasi cartella principale.
Questo sembra alleviare la complessità della gestione degli aggiornamenti / delle entità spostate / aggiunte nella Cartella 1 dopo che la relazione è stata definita, e il ripristino della relazione significa che devo occuparmi solo di una entità.
Opzione 2
Quando all'utente vengono assegnati i privilegi di moderazione per la Cartella 1, definire una nuova relazione tra Utente 1 e Cartella 1, e tutte le entità figlio fino al più grande dei nipoti quando viene creata la relazione, e è mai stato rimosso, scorrere indietro nel grafico per rimuovere la relazione. Se aggiungo qualcosa nella Cartella 2 dopo che questa relazione è stata fatta, copio tutti i Moderatori nella nuova Entità.
Ma quando ho bisogno di mostrare solo le cartelle di primo livello che un utente sta moderando, ho bisogno di interrogare tutte le cartelle che hanno una cartella genitore che l'utente non modera, al contrario dell'opzione 1, dove ho appena interrogato qualsiasi elementi che l'utente sta moderando.
Pensieri
I penso si riduce a determinare se gli utenti interrogheranno per tutti gli oggetti genitore più di quanto faranno per interrogare gli oggetti figli ... se è così, allora l'opzione 1 sembra migliore. Ma non ne sono sicuro.
O si avvicinano meglio degli altri? Perché? O c'è un altro approccio che è migliore di entrambi? Sto usando Entity Framework nel caso abbia importanza.