

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# RDBMS 表架构和映射
<a name="rdbms-schema"></a>

下图显示了源 RDBMS 架构中的表和关系。

 ![RDMS schema](http://docs.aws.amazon.com/zh_cn/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_cn/prescriptive-guidance/latest/modernization-rdbms-dynamodb/images/table-mapping.png) 

## 单表设计
<a name="single-tables"></a>

DynamoDB 不维护关系；它支持固定的表架构。因此，您可以使用标识项目类型的属性 `ItemType` () 将不同类型的项目（例如 SQL 表）存储在单个 DynamoDB 表中。

在 DynamoDB 中，分区键 (PK) 和排序键 (SK) 的组合必须是唯一的，因此这些键因项目类型而异。

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

## 全局二级索引
<a name="gsi"></a>

索引有助于更快地检索数据并提高应用程序性能。为示例应用程序创建了以下索引。 PKs 和 SKs 是根据如何识别不同项目来选择的。


****  

| **索引名** | **描述** | **分区键 (PK)** | **排序键 (SK)** | **投影属性** | 
| --- | --- | --- | --- | --- | 
| Version-index | 获取给定的所有生产应用程序version。 | version |  | id, name | 
| Release-index | 获取给定对象的所有测试应用程序release-id。 | release-id |  | id, name | 
| Change-index | 获取与关联的所有（已更改）应用程序change-id。 | change-id |  | id, modified-by, date | 