2010-03-18 4 views
19

Was ist der beste Weg, um eine MySQL-Tabelle zum Speichern von Admin-Einstellungen zu strukturieren?Wie sollte ich meine Settings-Tabelle mit MySQL strukturieren?

Gefällt Ihnen?

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

Oder so?

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

Oder vielleicht ein anderer Weg?

Antwort

20

Tabellenname = 'Einstellungen'

name | varchar <-- primary key 
value | varchar 

Dann können Sie wie folgt abfragen:

SELECT * FROM settings WHERE name = 'default_printer'; 

Diese Option schön und einfach ist, und es wird auch mit 10 oder 10.000 Einstellungen arbeiten. Mit der anderen Option müssen Sie eine neue Spalte hinzufügen, was eine sinnlose Zeitverschwendung wäre.

bearbeiten

Nach Ihrem ersten Kommentar Sie mehrere Werte wie folgt wählen könnten:

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

:-)

+0

+1 explizit darauf hingewiesen, dass ich eine primäre benötigt Schlüssel, da ich es in meinem ursprünglichen Beitrag vergessen habe;) ... Sieht ganz gut aus. Ich mag besonders, dass ich mit dieser Einstellung eine Funktion erstellen kann, die es mir erlaubt, eine Einstellung (oder mehrere Einstellungen gleichzeitig) auszuwählen, was sehr praktisch wäre. – Cam

+2

Ich stimme zu, ich habe eine weitere mögliche SQL-Anweisung hinzugefügt, wir verwenden diese Methode auf unserem ERP-System, hält viele Einstellungen. :-) –

+0

Was, wenn Sie verschiedene Typen in "Value" speichern möchten, ist es akzeptabel, später die Besetzung in Ihrem Code auf den Typ, den Sie erwarten, zu machen? Wenn Sie sehr wenige Einstellungen haben und alle unterschiedliche Typen sind, also string, int, float, wäre es sinnvoller, das zweite Schema zu verwenden? – radtek

0

Wie üblich hängt es. Lösung 1 ist einfacher. Sol # 2 lässt sich problemlos in ORMs integrieren, kann jedoch die DB-Zeilengrößenbeschränkungen treffen. Google für OTLT (wie in einem True Lookup-Tabelle Problem) Wie viele Einstellungen haben Sie (wenige? Dutzende? Hunderte?) Wie oft werden Sie sie brauchen?

+0

Dutzende. Ich brauche einige von ihnen so oft wie jeder Seitenaufruf. Das heißt, eine Admin-Einstellung kann die Ansicht bestimmter Seiten jedes Mal beeinflussen, wenn sie angezeigt werden. Als Beispiel wäre eine der Einstellungen der Name eines gekennzeichneten Produkts, und eine andere Einstellung wäre der Dateiname für das Gif-Bild des Produkts. – Cam

3

Betrachten Sie die erste Option (Setting, Value) als Spalten. Aber bedenken Sie auch das Hinzufügen von zusätzlichen, Meta-Spalten als auch, wie Description (würde nützlich sein, wenn Sie eine Menge mehrdeutig Einstellungen haben), PreviousValue, LastUpdated, UpdatedBy usw.

+1

Netter Tipp Meta-Spalten hinzufügen – afarazit

Verwandte Themen