DynamoDB prend-il en charge les clés étrangères ?
Non. DynamoDB n'a pas de clés étrangères, de contraintes d'intégrité référentielle ni de suppressions en cascade — en tant que base de données NoSQL, il n'impose jamais de relations entre éléments ou tables. Tu modélises plutôt les relations toi-même : dénormalise les données liées en un seul élément, ou regroupe les éléments liés sous une clé de partition partagée avec la conception mono-table.
Pourquoi il n'y a pas de clés étrangères
Une clé étrangère existe pour prendre en charge les jointures et imposer l'intégrité sur des tables normalisées. DynamoDB omet délibérément l'opérateur JOIN (AWS recommande plutôt de dénormaliser) : une contrainte de clé étrangère surveillerait donc une relation que le modèle de requête n'exploite jamais. Rien ne t'empêche de stocker la clé d'un autre élément comme attribut — DynamoDB ne la validera ni ne la propagera simplement pas. Si une intégrité référentielle imposée est non négociable, DynamoDB vs PostgreSQL trace la frontière entre les deux modèles.
Comment les relations se modélisent à la place
- Intégrer — des données enfant petites et bornées vivent à l'intérieur de l'élément parent sous forme de liste ou de map.
- Regrouper — le parent et les enfants partagent une clé de partition avec des clés de tri distinctes, si bien qu'un seul
Queryrenvoie toute la relation ; c'est le cœur de la conception mono-table. - Dupliquer — copie les champs dont chaque schéma d'accès a besoin sur les éléments qui en ont besoin, en acceptant une maintenance à l'écriture pour des lectures en une seule requête.
Les guides un-à-plusieurs et plusieurs-à-plusieurs couvrent chaque forme en profondeur.
Imposer l'intégrité quand cela compte
Pour les cas où tu te serais appuyé sur une contrainte, DynamoDB te donne des briques de base : les expressions de condition protègent une écriture selon l'état de l'élément écrit, et le ConditionCheck d'une transaction peut vérifier qu'un autre élément (par exemple le parent) existe dans la même opération tout-ou-rien. Les suppressions en cascade deviennent une logique applicative explicite ou un nettoyage piloté par Streams.
Pour aller plus loin
Commence par la conception mono-table, construis les conditions de protection dans le générateur d'expressions, et télécharge DynoTable pour voir tes collections d'éléments — parents et enfants côte à côte — en une seule vue.
Références
- 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
Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.