Unterstützt DynamoDB Fremdschlüssel?
Nein. DynamoDB hat keine Fremdschlüssel, keine Constraints zur referenziellen Integrität und keine kaskadierenden Löschungen — als NoSQL-Datenbank erzwingt es nie Beziehungen zwischen Items oder Tabellen. Stattdessen modellierst du Beziehungen selbst: denormalisiere verwandte Daten in ein Item oder platziere verwandte Items unter einem gemeinsamen Partition Key mit Single-Table-Design.
Warum es keine Fremdschlüssel gibt
Ein Fremdschlüssel existiert, um Joins zu unterstützen und Integrität über normalisierte Tabellen hinweg zu erzwingen. DynamoDB lässt den JOIN-Operator bewusst weg (AWS empfiehlt stattdessen die Denormalisierung), sodass ein Fremdschlüssel-Constraint eine Beziehung überwachen würde, die das Abfragemodell nie nutzt. Nichts hindert dich daran, den Schlüssel eines anderen Items als Attribut zu speichern — DynamoDB validiert oder kaskadiert ihn nur nicht. Wenn erzwungene referenzielle Integrität nicht verhandelbar ist, zieht DynamoDB vs. PostgreSQL die Grenze zwischen den beiden Modellen.
Wie Beziehungen stattdessen modelliert werden
- Einbetten — kleine, begrenzte Kinddaten leben im übergeordneten Item als Liste oder Map.
- Co-Location — Eltern und Kinder teilen sich einen Partition Key mit unterschiedlichen Sort Keys, sodass ein
Querydie gesamte Beziehung zurückgibt; das ist das Herzstück des Single-Table-Designs. - Duplizieren — kopiere die Felder, die jedes Zugriffsmuster benötigt, auf die Items, die sie benötigen, und akzeptiere den Aufwand zur Schreibzeit für Reads mit einer einzigen Anfrage.
Die Leitfäden zu Eins-zu-viele und Viele-zu-viele behandeln jede Form ausführlich.
Integrität erzwingen, wenn es darauf ankommt
Für die Fälle, in denen du dich auf ein Constraint gestützt hättest, gibt dir DynamoDB Bausteine: Condition Expressions schützen einen Write basierend auf dem Zustand des Items, das geschrieben wird, und der ConditionCheck einer Transaktion kann verifizieren, dass ein anderes Item (etwa das übergeordnete) in derselben Alles-oder-Nichts-Operation existiert. Kaskadierende Löschungen werden zu expliziter Anwendungslogik oder einer Streams-gesteuerten Bereinigung.
Tiefer einsteigen
Beginne mit dem Single-Table-Design, baue die schützenden Bedingungen im Expression Builder, und lade DynoTable herunter, um deine Item-Collections — Eltern und Kinder nebeneinander — in einer Ansicht zu sehen.
Referenzen
- What is Amazon DynamoDB? — Amazon DynamoDB Developer Guide
- Amazon DynamoDB Transactions: How it works — Amazon DynamoDB Developer Guide
- Best practices for NoSQL design — Amazon DynamoDB Developer Guide
Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.