Was ist der beste Weg, um ein array in einer relationalen Datenbank?
Ich bin gerade dabei, eine Datenbank entwerfen und ich bin mir auch nicht sicher über den besten Weg, um Ansatz einer dynamisch dimensionierte array-Feld eines meiner Objekte. Mein Erster Gedanke ist die Verwendung einer Spalte in mein Objekt zu speichern, ein array von ganzen zahlen. Aber je mehr ich lese, desto mehr denke ich, dass dies nicht die beste option. Konkretes Beispiel klug, ich habe ein player-Objekt, speichert 0, um viele Elemente, die vertreten werden durch eine ganze Zahl. Was ist der beste Weg, um dies darzustellen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn diese Auflistung der Werte ist atomic, speichern Sie Sie zusammen. Bedeutung, wenn Sie immer über die Pflege der gesamten Gruppe, wenn Sie nie die Suche für verschachtelte Werte und nie Sortieren, indem Sie verschachtelte Werte, dann sollten Sie gespeichert werden zusammen als ein einzelnes Feld Wert.
Wenn nicht, sollten Sie Sie in einer separaten Tabelle gespeichert, jeder Wert bringen, nacheinander zugewiesen, die parent-ID (foreign key) von einem Datensatz auf den anderen Tisch, der "besitzt" Sie als Gruppe.
Beispielsweise ein Klumpen Lesungen von einem wissenschaftlichen instrument, das sind immer nur dann verwendet werden zusammen als eine Kollektion für die Analyse gespeichert werden soll, zusammen in ein Feld. Im Gegensatz dazu eine Liste von Telefonnummern für einen Kunden, kann oft müssen abgefragt werden, die für eine einzelne Zahl soll wohl aufgeteilt werden in einzelne Telefon-Nummer pro Zeile in einer zugehörigen untergeordneten Tabelle.
Für mehr info, Suche auf den Begriff "Datenbank-Normalisierung".
Einige Datenbanken unterstützen ein array als Daten Typ. Zum Beispiel, Postgres erlaubt die Definition einer Spalte als ein-dimensionales array, oder sogar ein zwei-dimensionales array.
Wenn Ihre Datenbank unterstützt keine array als eine Art von definition für die Spalte, dann haben Sie drei alternativen:
Transformieren Sie Daten-Sammlung in eine XML oder JSON Dokument, wenn Sie Ihre Datenbank Ihre Datenbank unterstützt wird, geben. Zum Beispiel, Postgres hat grundlegende Unterstützung für das speichern, abrufen, und nicht-indizierte Suche in XML mit XPath. Und Postgres bietet ausgezeichnete Industrie-führende Unterstützung für JSON als Daten-Typ (einschließlich indizierter Unterstützung für geschachtelte Werte mit seinen
jsonb
Daten geben, wo eingehende JSON geparst und gespeichert in ein intern definiertes Binär-format. Dieses feature befasst sich mit einem der wichtigsten Gründe, warum Menschen betrachten mit Hilfe der sogenannten "NoSQL" - Systeme, suchen zu speichern und suchen semi-strukturierte Daten.Erstellen Sie eine string-Darstellung Ihrer Daten zu speichern als text.
Erstellen Sie einen binären Wert speichern als binary large object (BLOB).