Was ist die beste Vorgehensweise zum Speichern von Daten in einer Datenbank, die nur einen einzigen Eintrag erfordert? Ein Beispiel wären Konfigurationsdaten, die sich auf die gesamte Anwendung / Website beziehen. Ist es üblich, dafür eine Tabelle zu erstellen, die nur einen einzigen Eintrag hat?
Ich frage im Kontext einer MongoDB-Datenbank, obwohl ich denke, dass die Frage auch für SQL-Datenbanken gilt.
Ein Beispiel für eine Hilfstabelle, die üblicherweise in Datenbanken gefunden wird, heißt Constants
und kann solche Werte von pi enthalten. Die Idee beginnt damit, dass alle Anwendungen, die die Datenbank verwenden, dieselbe Skalierung und Genauigkeit verwenden müssen. Um sicherzustellen, dass sie höchstens eine Zeile, z. ( von Joe Celko ):
Da mySQL% constraint% constraint nicht unterstützt, ist ein Trigger erforderlich, um dasselbe zu erreichen.
Eine Tabelle wäre in Ordnung, kein Grund, sie nicht zu benutzen, nur weil sie nur eine Zeile hat.
Ich hatte gerade die seltsamste Idee (ich würde es nicht umsetzen, aber aus irgendeinem Grund dachte ich darüber nach). Sie können eine fest codierte Ansicht wie folgt erstellen:
%Vor% und machen Sie select * from myConfigView
:)
aber wieder, kein Grund, warum nicht eine Tabelle zu verwenden, nur weil es nur eine Zeile
haben wirdWenn Sie eine SQL DB verwenden, haben Sie wahrscheinlich Spalten wie Schlüsselname und Wert, und jedes Attribut wird als Zeile gespeichert. In MongoDB können Sie alle zugehörigen Konfigurationen als einzelnes JSON-Dokument speichern
Für MongoDB-Datenbanken mache ich normalerweise nur eine neue "Tabelle", aber für SQL-Datenbanken bedeutet das viel mehr (besonders wenn andere auch an der gleichen Datenbank arbeiten; SQL ist nicht so formbar), also Sie möchten vielleicht etwas vorsichtiger damit umgehen.
Ich verwende eine Config-Tabelle mit einem Namen (config_name) und einem Wert (config_value). Ich füge sogar ein Hilfe-Feld hinzu, so dass Benutzer sehen können, wofür das Name / Wert-Paar bestimmt ist oder wo es verwendet wird.
%Vor%Dann stellt der folgende PHP-Code den Wert für einen Schlüssel wieder her oder gibt eine leere Zeichenfolge zurück. Angenommen, $ db ist eine offene Datenbankverbindung. Alle Einträge werden in Kleinbuchstaben umgewandelt.
%Vor%Alle mysql / php in diesem Fall, aber das allgemeine Prinzip bleibt.