Indicami informazioni sulla costruzione di filtri (di elenchi)

1

Vorrei alcuni suggerimenti su informazioni che mi aiutassero a capire come fornire informazioni sulla possibilità di filtrare un elenco di entità in base ai loro attributi e agli attributi delle entità correlate.

Ad esempio, immagina un'app Web che fornisce una gestione degli ordini di qualche tipo. Gli ordini e le entità correlate sono memorizzati in un database relazionale. E immagina che l'app abbia un'interfaccia che elenchi gli ordini.

Il problema è: come si consente di filtrare l'elenco, ad esempio: -

  • numero ordine (un attributo)
  • nome dell'elemento pubblicitario (un attributo di un'entità correlata a n-n)
  • del testo in una nota amministrativa relativa all'ordine (testo trovato in un attributo di un'entità correlata a 1-1)

Sto cercando di scoprire se esiste qualcosa come un modo standard ed efficiente per costruire le query e il modulo di filtro; o alcune possibili strategie; o qualsiasi teoria sull'argomento; o qualche codice di esempio. Il mio google foo mi delude.

    
posta jah 22.11.2012 - 17:22
fonte

2 risposte

1

how to go about providing the ability to filter a list of entities by their attributes as well as by attributes of related entities.

Alcune delle linee guida da considerare sono:

1 - Cosa vuole l'utente finale e quali informazioni l'utente finale ha quando usa il sistema? Rispondere a questo dovrebbe fornire le query principali da implementare.

2 - Quali query devono avere e quali sono belle da avere. Questa classificazione ti aiuterà a progettare meglio i tuoi indici.

3 - Per motivi di prestazioni, tracciare la linea tra una query online e una query batch (vedere il punto B di seguito). Chiedi quanto frequentemente viene eseguita una determinata query e quanto spesso è necessario. Per le query frequenti su database di grandi dimensioni, è necessario creare indici appropriati. Alcune volte l'utente può chiedere informazioni statistiche su base periodica. Non è sempre possibile fornire tali rapporti on-line.

4 - Distingue tra "criteri di ricerca" e "criteri di filtro". Il primo potrebbe essere utilizzato per generare 1 o più righe e l'altro è utilizzato per individuare dettagli specifici all'interno di un risultato specifico dell'esecuzione di un "criterio di ricerca".

Nel tuo caso:

A - Numero ordine è valido solo se è noto. Chiedi in quale altro modo potresti individuare un ordine? Può essere l'id utente della persona che ha effettuato l'ordine con un determinato intervallo di date e un intervallo di quantità sarebbe buono?

B - Un nome dell'elemento pubblicitario / id , può essere utile in alcune aziende ma non riesco a vedere che sia uno standard. Il nome / ID dell'elemento pubblicitario è errato quando devi specificarlo per intero, molti elementi hanno lo stesso prefisso del nome, l'elemento è comune e appare su molti ordini e così via. Può essere utile come argomento di filtro per uno specifico ordine di grandi dimensioni (come quelli utilizzati nella produzione ad esempio). Potrebbe anche essere utile considerare la ricerca di elementi pubblicitari che appaiono insieme ad altri elementi pubblicitari. In alcune aziende, è possibile scoprire che determinati articoli sono sempre ordinati insieme e l'azienda potrebbe utilizzare queste informazioni per migliorare la propria attività. Tuttavia, tale processo di individuazione viene gestito meglio dai report off-line quando il database è di grandi dimensioni.

C - La ricerca delle Note su un ordine è possibile ma chiedi perché c'è una nota in primo luogo? Può essere che la nota venga utilizzata per catturare una 'ragione' o una 'categoria' che meriti di essere posta su 1 o più colonne separate. Ad esempio, l'utente potrebbe voler elencare gli ordini che sono parzialmente consegnati. Alcuni sistemi usano il campo della nota per rappresentare molte informazioni non strutturate. La ricerca nel testo può restituire risultati incoerenti. Alcuni database ti consentono di cercare il testo in modo efficiente, ma devi comunque convivere con informazioni sul modulo libero e l'utente può chiedere al sistema di restituire manualmente grandi quantità di dati per la ricerca. Per evitare ciò, potresti voler analizzare i contenuti delle note come menzionato in precedenza o utilizzare tag standard. Questa scheda utilizza entrambi i metodi.

    
risposta data 23.11.2012 - 00:50
fonte
0

Dovresti dare un'occhiata ai sistemi ORM come Hibernate e i suoi criteri .

Oltre a RDBMS puoi guardare DB Grafici come Neo4J e lo stack Tinkerpop, specialmente la parte Gremlin .

Per una soluzione Java, vedi questi due thread SO sul filtraggio delle raccolte:

risposta data 22.11.2012 - 21:32
fonte

Leggi altre domande sui tag