DynamoDB supporta le chiavi esterne?
No. DynamoDB non ha chiavi esterne, vincoli di integrità referenziale o eliminazioni a cascata — essendo un database NoSQL, non applica mai relazioni tra item o tabelle. Modelli invece le relazioni da solo: denormalizza i dati correlati in un unico item, oppure co-localizza gli item correlati sotto una chiave di partizione condivisa con la progettazione a tabella singola.
Perché non ci sono chiavi esterne
Una chiave esterna esiste per supportare i join e applicare l'integrità tra tabelle normalizzate. DynamoDB omette deliberatamente l'operatore JOIN (AWS consiglia invece di denormalizzare), quindi un vincolo di chiave esterna sorveglierebbe una relazione che il modello di query non sfrutta mai. Nulla ti impedisce di memorizzare la chiave di un altro item come attributo — semplicemente DynamoDB non la convaliderà né la propagherà a cascata. Se l'integrità referenziale applicata è irrinunciabile, DynamoDB vs PostgreSQL traccia il confine tra i due modelli.
Come si modellano invece le relazioni
- Incorporare — i dati figli piccoli e delimitati vivono all'interno dell'item padre come lista o mappa.
- Co-localizzare — padre e figli condividono una chiave di partizione con chiavi di ordinamento distinte, così una sola
Queryrestituisce l'intera relazione; questo è il cuore della progettazione a tabella singola. - Duplicare — copia i campi di cui ha bisogno ogni pattern di accesso sugli item che ne hanno bisogno, accettando la manutenzione in fase di scrittura in cambio di letture a richiesta singola.
Le guide uno-a-molti e molti-a-molti trattano ciascuna forma in profondità.
Applicare l'integrità quando conta
Per i casi in cui ti saresti affidato a un vincolo, DynamoDB ti offre gli elementi costitutivi: le espressioni di condizione proteggono una scrittura in base allo stato dell'item che viene scritto, e il ConditionCheck di una transazione può verificare che un altro item (ad esempio il padre) esista nella stessa operazione tutto-o-niente. Le eliminazioni a cascata diventano logica applicativa esplicita o una pulizia guidata da Streams.
Approfondisci
Inizia con la progettazione a tabella singola, costruisci le condizioni di protezione nell'expression builder e scarica DynoTable per vedere le tue collezioni di item — padri e figli fianco a fianco — in un'unica vista.
Riferimenti
- 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
Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.