Antwort

4

Im Allgemeinen, wenn Ihre Artikel eindeutig durch drei oder mehr Attribute identifiziert werden, können Sie die Attributwerte verketten und einen zusammengesetzten String-Schlüssel bilden, den Sie als Hash-Schlüssel in Dynamo tbale verwenden können.

Sie können die Attribute aus dem Hash-Schlüssel in separate Attribute für das Element duplizieren, wenn Sie Indizes für sie erstellen müssen oder wenn Sie sie in bedingten Ausdrücken verwenden müssen.

Die Regeln für normale Form der relationalen Datenbanken gelten nicht unbedingt für NoSQL-Datenbanken und tatsächlich wird normalerweise ein denormalisiertes Schema bevorzugt.

Um das Konzept zu erweitern, ist es typisch (und in der Regel wünschenswert), relationale Datenbankschemas so zu gestalten, dass normalisierte Formulare verwendet werden. Eine der normalisierten Formen schreibt vor, dass Sie Daten, die das gleiche "Ding" in Ihrer Datenbank darstellen, nicht duplizieren sollten.

Ich werde ein Beispiel verwenden, das nur zwei Teile hat, aber Sie können es weiter ausbauen.

Angenommen, Sie entwerfen eine Tabelle, die geographische Informationen in den Vereinigten Staaten enthält. In den USA besteht eine Postleitzahl aus 5 Ziffern und weiteren 4 Ziffern, die die Region unterteilen können.

In einer relationalen Datenbank Sie das folgende Schema verwendet werden könnte: wird

Zip | Plus4 | CityName  | Population 
---------+-----------+---------------+--------------- 
CHAR(5) | CHAR(4) | NVARCHAR(100) | INTEGER 

Mit einem Verbundprimärschlüssel Zip, Plus4

Dies ist ideal, weil die Kombination von Zip und Plus4 garantiert einzigartig und Sie werden kann jede Abfrage gegen diese Tabelle beantworten, unabhängig davon, ob Sie sowohl den Zip- als auch den zusätzlichen Plus4-Code oder nur den Zip haben. Und Sie können auch ganz einfach alle Plus4-Codes für eine Postleitzahl bekommen.

Wenn Sie dieselben Informationen in Dynamo speichern möchten, können Sie einen Hash-Schlüssel mit dem Namen "ZipPlus4" vom Typ String erstellen, der aus der mit dem Plus4-Code verketteten Postleitzahl (z. B. 60210-4598) besteht Außerdem werden zwei weitere Attribute auf dem Objekt gespeichert, von denen eines die Postleitzahl selbst und das andere Plus4 selbst ist. So ein Element in der Tabelle können die folgenden Attribute haben:

ZipPlus4 | Zip  | Plus4 | CityName | Population 
-----------+---------+----------+-------------+--------------- 
    String | String | String | String  | Number 

Die ZipPlus4 über die Hash-Schlüssel für die Tabelle wäre.

Beachten Sie, dass Sie im obigen Beispiel mit einem Hash-Schlüssel "Zip" und einem Bereichsschlüssel "Plus4" kommen könnten, aber wie Sie gesehen haben, wenn Sie mehr als 2 Teile haben, brauchen Sie etwas anderes.

+0

Danke, kannst du erklären "die Attribute duplizieren?"? – wz366

+0

@ wz366 Ich habe einige weitere Details hinzugefügt - es ist ein Beispiel mit einem zweiteiligen Schlüssel, aber Sie können zu einem dreiteiligen Schlüssel erweitern –

Verwandte Themen