Domanda

Per un progetto scolastico, devo creare un modo per creare query personalizzate in base alle scelte dell'utente finale.
Dato che l'utente può scegliere sostanzialmente qualsiasi campo da qualsiasi combinazione di tabelle, ho bisogno di trovare un modo per mappare le tabelle per fare un join e non avere dati estranei (questo può portare a rapporti incoerenti, ma siamo disposti a vivere con quello).

Per un massimo di due tabelle, sono già riuscito a progettare un algoritmo che funzioni bene. Tuttavia, quando aggiungo un'altra tabella, non riesco a trovare un modo per accedere al mio database. Tutte le tabelle disponibili per i report personalizzati possono essere collegate tra loro, quindi tutto si riduce alla ricerca del percorso da utilizzare.

È stato utile?

Soluzione

Potresti essere in grado di provare una qualche forma di A * algoritmo . Fondamentalmente questo esamina ciascuna delle possibili opzioni successive da scegliere e applica un'euristica ad esso, una funzione che determina approssimativamente quanto è lontano tra questo nodo e il tuo obiettivo. Quindi sceglie quello più vicino e lo ripete. La parte più difficile dell'implementazione di A * è la progettazione di una buona euristica.

Senza ulteriori informazioni su come le tabelle si incastrano, o cosa intendi con un 'percorso' attraverso le tabelle, è comunque difficile consigliare qualcosa.

Sembra che non mi piaccia il mio link, probabilmente il * in esso, prova:

http://en.wikipedia.org/wiki/A*_search_algorithm

Modifica Se questo è l'intero database, sceglierei una approfondita ricerca approfondita .

Altri suggerimenti

Ho pensato di usare A * o un algoritmo simile, ma come hai detto, la parte più difficile riguarda la progettazione dell'euristica.

Le mie tabelle sono centrate in qualche modo su una spina dorsale con parecchi rami ciascuno che porta al massimo a un singolo nodo foglia. Ecco la mappa reale (i nomi delle tabelle rimossi perché sono paranoico ). Supponendo di voler visualizzare i dati dalle tabelle A, B e C, ho bisogno di un algoritmo per trovare il percorso blu.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top