DynamoDB 支援外鍵嗎?

不支援。DynamoDB 沒有外鍵、參照完整性約束或串聯刪除 — 作為 NoSQL 資料庫,它從不強制項目或表格之間的關聯。你會自己建模關聯:將相關資料反正規化到一個項目中,或以單一表格設計將相關項目共置於一個共用的 partition key 之下。

為什麼沒有外鍵

外鍵的存在是為了支援 join 並跨正規化表格強制完整性。DynamoDB 刻意省略 JOIN 運算子(AWS 建議改為反正規化),因此外鍵約束會去管束一個查詢模型從不利用的關聯。沒有任何東西阻止你將另一個項目的鍵_儲存_為屬性 — DynamoDB 只是不會驗證或串聯它。若強制參照完整性是不可妥協的,DynamoDB vs PostgreSQL 會劃清這兩種模型之間的界線。

關聯改以何種方式建模

  • 內嵌 — 小型、有界的子資料以 list 或 map 的形式存在於父項目之內。
  • 共置 — 父項目與子項目共用一個 partition key,搭配不同的 sort key,因此一次 Query 就能回傳整個關聯;這正是單一表格設計的核心。
  • 重複 — 將每個存取模式所需的欄位複製到需要它們的項目上,以寫入時的維護換取單次請求的讀取。

一對多多對多指南會深入涵蓋每種形狀。

在重要時強制完整性

對於那些你原本會倚賴約束的情況,DynamoDB 給你一些建構區塊:條件運算式可依被寫入項目的狀態來守護寫入,而交易的 ConditionCheck 可在同一個全有全無的操作中驗證_另一個_項目(例如父項目)是否存在。串聯刪除則成為明確的應用程式邏輯或由 Streams 驅動的清理。

深入了解

先從單一表格設計開始,在運算式建構器中建構守護條件,並下載 DynoTable 在同一個檢視中看到你的項目集合 — 父項目與子項目並列。

參考資料

最後驗證於 2026-07-13,對照上方連結的官方 AWS 文件。

不必透過主控台就能操作 DynamoDB

DynoTable 是一款快速的 DynamoDB 桌面用戶端 — 瀏覽表格、執行 SQL 風格的查詢,並在本機編輯項目。