

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

# RDBMS 資料表結構描述和映射
<a name="rdbms-schema"></a>

下圖顯示來源 RDBMS 結構描述中的資料表和關係。

 ![RDMS schema](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/modernization-rdbms-dynamodb/images/rdbms-table.png) 

如上圖所示，`production_apps`資料表具有 `id`和 `version`資料欄，與 `production_app_properties`和 `production_app_configs`資料表有one-to-many的關係。因此，在 DynamoDB 設計中， `production_app_properties`和 `production_app_configs`資料表內嵌在 中`production_app item`，如下列 JSON 程式碼所示。由於 `production_app_properties`和 `production_app_configs`可以有多個值，因此這些資料表會在 JSON 程式碼中新增為陣列。`changed_apps` 和 `test_apps`資料表的映射方式類似。

 ![Mapping from RDMS schema to DynamoDB](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/modernization-rdbms-dynamodb/images/table-mapping.png) 

## 單一資料表設計
<a name="single-tables"></a>

DynamoDB 不會維持關係；它支援固定的資料表結構描述。因此，您可以將不同類型的項目 （例如 SQL 資料表） 存放在單一 DynamoDB 資料表中，並具有識別項目類型的屬性 (`ItemType`)。

在 DynamoDB 中，分割區索引鍵 (PK) 和排序索引鍵 (SK) 的組合必須是唯一的，因此這些索引鍵會根據項目類型而有所不同。

 ![Single table design in DynamoDB](http://docs.aws.amazon.com/zh_tw/prescriptive-guidance/latest/modernization-rdbms-dynamodb/images/single-table-design.png) 

## 全域次要索引
<a name="gsi"></a>

索引有助於更快擷取資料並改善應用程式效能。針對範例應用程式，已建立下列索引。PKs 和 SKs 是根據如何識別不同的項目來選擇。


****  

| **索引名稱** | **Description** | **分割區金鑰 (PK)** | **排序金鑰 (SK)** | **Projected\_Attributes** | 
| --- | --- | --- | --- | --- | 
| Version-index | 取得指定 的所有生產應用程式version。 | version |  | id, name | 
| Release-index | 取得指定 的所有測試應用程式release-id。 | release-id |  | id, name | 
| Change-index | 取得與 相關聯的所有 （已變更） 應用程式change-id。 | change-id |  | id, modified-by, date | 