2016-04-17 10 views
6

Ich versuche gerade, eine Datenbank zu entwerfen, und bin mir nicht sicher, wie ich mich einem Array-Feld mit dynamischer Größe eines meiner Objekte nähern kann. Mein erster Gedanke ist, eine Spalte in meinem Objekt zu verwenden, um ein Array von ganzen Zahlen zu speichern. Je mehr ich lese, desto mehr denke ich, dass dies nicht die beste Option ist. Konkret habe ich ein Spielerobjekt, das 0 bis viele Elemente speichert, die durch eine ganze Zahl dargestellt werden. Wie kann man das am besten darstellen?Was ist der beste Weg, um ein Array in einer relationalen Datenbank zu speichern?

Antwort

10

Wenn diese Sammlung von Werten atomar ist, speichern Sie sie zusammen. Das heißt, wenn Sie sich immer für die gesamte Gruppe interessieren, sollten Sie, wenn Sie nie nach verschachtelten Werten suchen und niemals nach geschachtelten Werten sortieren, diese zusammen als einen einzelnen Feldwert speichern.

Wenn nicht, sollten sie in einer separaten Tabelle gespeichert werden, jeder Wert bringt eine Zeile, jeder die Eltern-ID (Fremdschlüssel) eines Datensatzes in der anderen Tabelle, die sie als Gruppe "besitzt".

Zum Beispiel sollte ein Bündel von Messwerten eines wissenschaftlichen Instruments, die nur zusammen als eine Sammlung für die Analyse verwendet werden, zusammen in einem Feld gespeichert werden. Im Gegensatz dazu sollte eine Liste von Telefonnummern für einen Kunden, die häufig nach einer individuellen Nummer abgefragt werden müssen, wahrscheinlich in eine einzelne Telefonnummer pro Zeile in einer zugehörigen Kindtabelle aufgeteilt werden.

Weitere Informationen finden Sie unter dem Begriff "Datenbanknormalisierung".

Einige Datenbanken unterstützen ein Array als Datentyp. Mit Postgres können Sie beispielsweise eine Spalte als eindimensionales Array oder sogar als zweidimensionales Array definieren.

Wenn Ihre Datenbank nicht Array als eine Art von Spaltendefinition unterstützen, dann können Sie drei Alternativen haben:

  • XML/JSON
    Sie die Datenerfassung Transformation in ein XML oder JSON Dokument, wenn Ihre Datenbank Ihrer Datenbank unterstützt diesen Typ. Beispiel: Postgres bietet grundlegende Unterstützung für das Speichern, Abrufen und nicht indizierte Durchsuchen von XML mithilfe von XPath. Und Postgres bietet ausgezeichnete branchenführende Unterstützung für JSON als Datentyp einschließlich indizierter Unterstützung für verschachtelte Werte mit seinem jsonb Datentyp, bei dem eingehende JSON analysiert und in einem intern definierten Binärformat gespeichert wird. Diese Funktion spricht einen der Hauptgründe an, warum Benutzer die Verwendung der sogenannten "NoSQL" -Systeme in Betracht ziehen, um semi-structured data zu speichern und zu suchen.
  • Text
    Erstellen Sie eine Zeichenfolgendarstellung Ihrer Daten, um sie als Text zu speichern.
  • BLOB
    Erstellen Sie einen binären Wert zum Speichern als BLOB.
Verwandte Themen