Sto costruendo un'app in cui gli utenti finali possono aggiungere campi personalizzati alle tabelle del database. Pensala come un'app CRM, dove a volte hai solo bisogno di aggiungere un campo extra alla tua tabella clienti. Praticamente tutti i CRM hanno questa caratteristica. Sto usando un database SQL tradizionale.
Devo farlo cambiando la struttura dati stessa tramite la colonna ALTER TABLE ADD? O dovrei memorizzare il contenuto del nuovo campo come coppia chiave / valore in una tabella separata, ad esempio (id, nomecampo, campovalore)?
Il vantaggio di ALTER TABLE è che è più semplice. Il vantaggio della tabella separata è che lasciare gli utenti finali ALTER TABLE mi dà i willies.
Il grande svantaggio della tabella separata è che complica notevolmente le query perché devi usare alcuni brutti join ovunque.
Ad ogni modo, come fa la maggior parte delle app?