

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 適用於 DynamoDB 資料表的資料建模
<a name="data-modeling"></a>

在我們深入探討資料建模之前，請務必了解一些 DynamoDB 基礎知識。DynamoDB 是一個使用鍵值的 NoSQL 資料庫，擁有靈活的結構描述。除了每個項目的索引鍵屬性之外，資料屬性集可以統整在一起，也可以各自獨立。DynamoDB 索引鍵結構描述的形式可以是簡單主索引鍵，其中分割區索引鍵可唯一識別項目，也可以採用複合主鍵的形式，其中使用分割區索引鍵和排序索引鍵的組合來唯一定義項目。分割區索引鍵會經過雜湊處理，以判斷資料的實體位置並加以擷取。因此，請務必選擇高基數且可水平擴充的屬性作為分割區索引鍵，以確保資料均勻分佈。排序索引鍵屬性在索引鍵結構描述中是選用項目，而且有排序索引鍵就可讓您在 DynamoDB 中建立一對多關係的模型，以及建立項目集合。排序索引鍵也稱為範圍索引鍵，可用來排序項目集合中的項目，也能進行靈活的範圍型操作。

如需 DynamoDB 索引鍵結構描述的詳細資訊和最佳實務，可參考下列內容：
+ [DynamoDB 的分割區與資料分配](HowItWorks.Partitions.md) 
+ [在 DynamoDB 中設計與有效運用分割區索引鍵的最佳實務](bp-partition-key-design.md) 
+ [使用排序索引鍵組織 DynamoDB 資料的最佳實務](bp-sort-keys.md) 
+ [選擇適合的 DynamoDB 分割區索引鍵](https://aws.amazon.com/blogs/database/choosing-the-right-dynamodb-partition-key/) 

通常需要有次要索引才能在 DynamoDB 中支援其他查詢模式。次要索引是影子資料表，其中相同的資料會透過與基礎資料表不同的索引鍵結構描述來組織。本機次要索引 (LSI) 與基礎資料表共用相同的分割區索引鍵，並允許使用替代的排序索引鍵來共用基礎資料表的容量。全域次要索引 (GSI) 可以有與基礎資料表不同的分割區索引鍵以及不同的排序索引鍵屬性，這表示 GSI 的輸送量管理與基礎資料表無關。

如需次要索引和最佳實務的進一步詳細資訊，可參考下列內容：
+ [在 DynamoDB 中使用次要索引來改善資料存取](SecondaryIndexes.md) 
+ [使用 DynamoDB 中次要索引的最佳實務](bp-indexes.md) 

現在讓我們來進一步了解資料建模。在 DynamoDB 或任何類似 NoSQL 資料庫上設計靈活且高度最佳化結構描述的程序，可能是一項要學習的極具挑戰性技能。本單元的目標是協助您發展心智圖，以設計讓您從使用案例進入生產環境的結構描述。我們將首先介紹任何設計 (單一資料表與多資料表設計) 的基礎選擇。接著，我們會檢閱多種設計模式 (建置區塊)，這些模式可供您的應用程式用來實現各種組織性或效能結果。最後，我們會介紹適用於不同使用案例和產業的各種完整結構描述設計套件。

![\[此圖顯示資料間的概念關係、位於其下方的區塊，以及區塊下方的基礎。\]](http://docs.aws.amazon.com/zh_tw/amazondynamodb/latest/developerguide/images/DataModeling/SchemaDesign.png)


**Topics**
+ [物品集合 - 如何在 DynamoDB 中建立一對多關係的模型](WorkingWithItemCollections.md)
+ [DynamoDB 中的資料建模基礎](data-modeling-foundations.md)
+ [DynamoDB 中的資料建模建置區塊](data-modeling-blocks.md)
+ [DynamoDB 中的資料建模結構描述設計套件](data-modeling-schemas.md)
+ [在 DynamoDB 中製作關聯式資料模型的最佳實務](bp-relational-modeling.md)