Sto recuperando i valori da 3 tabelle nel database e cercando di farli corrispondere. Mi stavo chiedendo come gestire la cache in modo elegante. Non riesco a modificare la struttura del database anche se una delle tabelle è assurda.
Attualmente sto caricando le mie tabelle dal DB alla cache, una cache per parametro, e poi cerco di trovare il valore esistente in ciascuna cache una dopo l'altra.
Per darti un'idea migliore, ecco un esempio dei miei input
Ho una strana tabella A non 1NF che contiene varie informazioni non dipendenti:
| Grouping Key | Grouping Name | Value |
| Grp_1 | Foo | ABCD |
| Grp_2 | Countries | UK |
| Grp_3 | Time | 3am |
| Grp_A | Text | A |
| Grp_B | Text | AAA |
| Grp_C | Text | B |
| Grp_D | Text | B+ |
| Grp_E | Text | B- |
| Grp_F | Text | B |
Mi spiace per questo tavolo, non ha senso, e non posso cambiarlo.
Ho una tabella B che collega i tasti di raggruppamento della tabella precedente a valori numerici. "*" significa "qualsiasi valore".
|Item family number | FooType | Country | Time | Text |
| 1 | Grp_1 | Grp_2 | Grp_3 | * |
Finalmente ho ottenuto una tabella C di oggetti con le loro caratteristiche
| UniqueId | FooType | Country | Time | Text |
| 00001 | ABCD | UK | 3am | A |
Quello che sto cercando di fare è, data la tabella B, trovare una linea di corrispondenza nella tabella C con l'aiuto della tabella A.
Quello che ho intenzione di fare è caricare una cache per colonna di tabella C con una tupla di UniqueId e questa colonna, dove le tabelle corrispondono.
select a.GroupingKey, c.UniqueId from table_C c join table_A a on a.Value = c.FooType
select a.GroupingKey, c.UniqueId from table_C c join table_A a on a.Value = c.Country
-- same for Time and Text column in Table C.
Cache avrebbe questo aspetto:
-- FooTypeCache
| GroupingKey | UniqueId |
| Grp_1 | 00001 |
-- CountryCache
| GroupingKey | UniqueId |
| Grp_2 | 00001 |
Con queste cache caricate, quando leggo una riga della tabella B, sto cercando di trovare un valore corrispondente in ciascuna cache. Mi darebbe per ogni colonna di questa riga della Tabella B un elenco di IDI corrispondenti. Se un unico ID è presente in ognuno di questi possibili elenchi Unici, c'è una corrispondenza tra questa tabella B e la tabella A e C.
Trovo che l'intero processo sia troppo complicato. Sento che dovrebbe esserci una soluzione molto più semplice. Hai qualche idea?