Salvataggio dei profili utente nel database SQL

3

Quindi, ho ottenuto una tabella UserProfiles nel mio database, che, simile al file delle impostazioni di C #, contiene una proprietà con il tipo di dati appropriato e l'impostazione specificata nel profilo.

Ora ogni volta che aggiungo una nuova impostazione, devo aggiornare il database, il modello e finire per riscrivere le query.

Ho quindi pensato di cambiare la tabella per contenere solo due colonne: Key e Value con un tipo di dati varchar per memorizzare le impostazioni degli utenti ... Ma che cos'è considerata la migliore pratica in tali domande di progettazione?

Questo approccio è consigliabile (ad esempio perché richiede l'analisi personalizzata dalla stringa al tipo di dati necessario)?

    
posta SeToY 27.05.2013 - 00:48
fonte

2 risposte

1

Se capisco correttamente questa domanda, allora, come affermato in precedenza da @ user61852, si tratta di un problema di progettazione del database.

La tua idea di "chiave, valore" non è una buona idea in questo caso e porterà sicuramente a un accurato debugging. Hai tutta la potenza di un modello di relazione a portata di mano perché non usarlo al massimo?

Da Elementi fondamentali del database (una lettura utile!) :

La modellazione dei dati definisce tutte le informazioni richieste dal mondo reale.

Devi pensare alla tabella Userprofiles , ai dati che modella e al suo scopo. Se stai estendendo questo tavolo ogni volta che pensi a qualcos'altro da aggiungere, non hai pensato sufficientemente al problema.

    
risposta data 27.05.2013 - 01:46
fonte
1

Ho già progettato un database con coppie di stringhe di valore chiave per la memorizzazione delle impostazioni dell'utente. La logica di questo era che l'applicazione web presentava molte pagine diverse che dovrebbero essere in grado di memorizzare le impostazioni specifiche della pagina. Poiché le pagine vengono aggiunte e rimosse in continuazione, l'unica soluzione pratica è stata quella di aggiungere il nome della pagina alla chiave dell'impostazione e quindi archiviare il valore come una stringa in un database.

Mi rendo conto che questo design non è sicuro per tipo e non scala molto bene. Tuttavia, purché ci sia solo un numero un po 'limitato di pagine per app e solo un numero limitato di impostazioni per pagina, ci devono essere al massimo alcune centinaia di voci di impostazioni per utente da cercare. Anche con confronti tra stringhe, le prestazioni non dovrebbero essere un problema.

    
risposta data 27.05.2013 - 07:43
fonte

Leggi altre domande sui tag