2010-03-18 9 views
19

Qual è il modo migliore per strutturare una tabella MySQL per la memorizzazione delle impostazioni di amministrazione?Come dovrei strutturare la mia tabella delle impostazioni con MySQL?

Ti piace questo?

Setting _|_ Value 
setting1 | a 
setting2 | b 
setting3 | c 
setting4 | d 
setting5 | e 

O come questo?

|--------|_setting1_|_setting2_|_setting3_|_setting4_|_setting5_| 
Settings | a  | b  | c  | d  | e  | 

O forse un altro modo?

risposta

20

Nome tabella = 'Impostazioni'

name | varchar <-- primary key 
value | varchar 

Poi si può query come questa:

SELECT * FROM settings WHERE name = 'default_printer'; 

Questa opzione è bello e facile e funzionerà bene con 10 o 10.000 impostazioni. Con l'altra opzione dovrai aggiungere una nuova colonna, che sarebbe una perdita di tempo completamente inutile.

Modifica

Dopo il primo commento è possibile scegliere più valori in questo modo:

SELECT * FROM settings WHERE name IN ('default_printer','default_page_size'); 

:-)

+0

+1 per esplicitamente sottolineando che avevo bisogno di un primario chiave, dal momento che l'ho dimenticato nel mio post originale;) ... Sembra abbastanza buono. Mi piace soprattutto che, usando questa configurazione, potrei creare una funzione che mi consenta di selezionare un'impostazione (o più impostazioni alla volta), il che sarebbe molto utile. – Cam

+2

Concordo, ho aggiunto un'altra possibile istruzione SQL, usiamo questo metodo sul nostro sistema ERP, contiene molte impostazioni. :-) –

+0

Che cosa succede se si desidera memorizzare diversi tipi in "Valore", è accettabile in seguito effettuare il cast nel codice per il tipo che si prevede? Se hai pochissime impostazioni e sono tutti tipi diversi, ad esempio string, int, float, sarebbe più logico utilizzare il secondo schema? – radtek

0

Come al solito, dipende. La soluzione 1 è più semplice. Il sol n. 2 si integra facilmente con gli ORM, ma può avere dei limiti nella dimensione della riga del DB. Google per OTLT (come in un problema True Lookup Table) Quante impostazioni hai (poche? Dozzine? Centinaia?) Quanto spesso ti serviranno?

+0

Dozzine. Potrei aver bisogno di alcune di esse tutte le volte che ogni visualizzazione di pagina. In altre parole, un'impostazione di amministratore può influire sulla visualizzazione di determinate pagine ogni volta che vengono visualizzate. Ad esempio, una delle impostazioni sarebbe il nome di un prodotto in primo piano e un'altra impostazione sarebbe il nome file per l'immagine gif di detto prodotto. – Cam

3

Considerare la prima opzione (Setting, Value) come colonne. Ma anche prendere in considerazione l'aggiunta di ulteriori, meta colonne pure, come ad esempio Description (sarebbe utile se si dispone di un sacco di impostazioni ambigue), PreviousValue, LastUpdated, UpdatedBy, ecc

+1

Bel suggerimento con l'aggiunta di meta colonne – afarazit

Problemi correlati