[ruby-it] memorizzare hash in un campo di una tabella.

Pietro Giorgianni giorgian a gmail.com
Mer 4 Mar 2009 10:22:50 CET


Il 4 marzo 2009 10.06, Mauro <mrsanna1 a gmail.com> ha scritto:
> Mi spiego:
> Nel form in un campo di inupt l'utente inserisce qualcosa tipo:
> 2007[1.456,000] 2006[5.343,55] 2008[2.3445.655].
> Sono dei dati adatti ad essere inseriti in un hash.
> Devo memorizzare questi dati in una tabella ma ovviamente non esiste
> il campo tipo hash.
> Posso solamente memorizzarli come stringa e poi trovare il modo di
> trattarli come hash da codice?

dipende: a te serve un hash per ogni riga?

potresti effettivamente memorizzare la stringa e poi ogni volta che
serve ricreare l'hash, ma:

* innanzitutto, l'hash lo devi fare "a mano", cioè, senza eseguire
codice dell'utente, perché non si sa mai;

* non potresti facilmente fare ricerche: ad esempio, non avresti modo
di trovare il record che ha il valore più alto per la chiave 2007.

* il processo di popolare ogni volta l'hash potrebbe non essere
velocissimo, specie se lo fai su tanti record in una volta.


do per scontato che le chiavi dell'hash non siano sempre uguali,
perché se invece lo fossero, la soluzione sarebbe banale: aggiungere
una colonna per ogni chiave dell'hash.

ci sarebbe un'altra possibilità: potresti creare una tabella di coppie
chiave-valore, tipo:

create_table "key_value" do |t|
  t.integer key
  t.float value
  t.integer altratabella_id
end

così ogni record della tabella principale avrebbe diverse coppie chiave-valore.

così puoi fare ricerche, ordinamenti etc., e il maggior carico
richiesto per gestire la relazione uno a molti sarebbe, credo,
abbondantemente minore del carico di fare ogni volta il parsing della
stringa.


poi, tutto dipende dall'applicazione, da cosa devi fare con questi
dati e quanto spesso.

pietro


More information about the Ml mailing list