

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

# 步骤 2：在分类账中创建表、索引和示例数据
<a name="getting-started-step-2"></a>

**重要**  
终止支持通知：现有客户将能够使用 Amazon QLDB，直到 2025 年 7 月 31 日终止支持。有关更多详细信息，请参阅[将亚马逊 QLDB 账本迁移到亚马逊 Aurora PostgreSQL](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)。

当您的 Amazon QLDB 分类账处于活动状态时，您可以开始创建有关车辆、车主和注册信息的数据表。创建表和索引后，可以向其中加载数据。

在此步骤中，您将在`vehicle-registration`分类账中创建四个表格：
+ `VehicleRegistration`
+ `Vehicle`
+ `Person`
+ `DriversLicense`

您还可创建以下索引。


****  

| 表名称 | 字段 | 
| --- | --- | 
| VehicleRegistration | VIN | 
| VehicleRegistration | LicensePlateNumber | 
| Vehicle | VIN | 
| Person | GovId | 
| DriversLicense | LicensePlateNumber | 
| DriversLicense | PersonId | 

您可以使用 QLDB 控制台自动创建这些带有索引的表，并在其中加载示例数据。[或者，您可以使用控制台上的 P **artiQL 编辑器**来手动运行每个 PartiQL 语句。](ql-reference.md) step-by-step

## 自动选项
<a name="getting-started-step-2.con-auto"></a>

**创建表、索引与示例数据**

1. [在 /qldb 上打开亚马逊 QLDB 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/qldb)

1. 在导航窗格中，选择 **开始**。

1. 在**示例应用程序数据**卡上的 **自动选项**下，在分类账列表中进行选择 `vehicle-registration`。

1. 选择 **加在示例数据**。

   如果操作成功完成，控制台将显示消息**样本数据已加载**。

   此脚本在单个事务中运行所有语句。如果事务的任何部分失败，则会回滚每条语句，并显示相应的错误消息。解决任何问题后，您可以重试该操作。
**注意**  
事务失败的一个可能原因是尝试创建重复表。如果您的分类账中已存在以下任何表名，则您的加载示例数据的请求将失败：`VehicleRegistration``Vehicle`、`Person`、和`DriversLicense`。  
相反，请尝试将此示例数据加载到一个空分类账中。
此脚本运行参数化 `INSERT` 语句。因此，这些 PartiQL 语句使用绑定参数而不是文字数据记录在日记账块中。例如，您可能会在日记块中看到以下语句，其中问号（`?`）是文档内容的变量占位符。  

     ```
     INSERT INTO Vehicle ?
     ```

## 手动选项
<a name="getting-started-step-2.con"></a>

使用空 `PrimaryOwner` 字段将文档插入 `VehicleRegistration`，使用空 `PersonId` 字段将文档插入 `DriversLicense`。稍后，您将使用 `Person` 表中系统分配的文档 `id` 填充这些字段。

**提示**  
最佳做法是使用此文档 `id` 元数据字段作为外键。有关更多信息，请参阅 [查询文档元数据](working.metadata.md)。

**创建表、索引与示例数据**

1. [在 /qldb 上打开亚马逊 QLDB 控制台。https://console.aws.amazon.com](https://console.aws.amazon.com/qldb)

1. 在导航窗格中，选择 **PartiQL 编辑器**。

1. 选择 `vehicle-registration` 分类账。

1. 首先创建四个表。QLDB 支持开放内容且不强制架构，因此不需要定义属性或数据类型。

   在查询编辑器窗口中输入以下语句，然后选择 **运行**。要运行语句，您可对 Windows 使用快捷键Ctrl\$1Enter，对 macOS 使用Cmd\$1Return。有关更多键盘快捷键的信息，请参阅 [PartiQL 编辑器键盘快捷键](console_QLDB.md#console_QLDB.partiql-editor-shortcuts)。

   ```
   CREATE TABLE VehicleRegistration
   ```

   对以下每个步骤重复此步骤。

   ```
   CREATE TABLE Vehicle
   ```

   ```
   CREATE TABLE Person
   ```

   ```
   CREATE TABLE DriversLicense
   ```

1. 接下来，创建可优化每个表的查询性能的索引。
**重要**  
QLDB 需要索引才能高效查找文档。如果没有索引，QLDB 在读取文档时需进行全表扫描。这可能会导致大型表出现性能问题，包括并发冲突与事务超时。  
为避免表扫描，必须在索引字段或文档 ID 上使用*相等*运算符（`=`或`IN`）运行带有`WHERE`谓词子句的语句。有关更多信息，请参阅 [优化查询性能](working.optimize.md)。

   在查询编辑器窗口中输入以下语句，然后选择 **运行**。

   ```
   CREATE INDEX ON VehicleRegistration (VIN)
   ```

   对以下每个步骤重复此步骤。

   ```
   CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
   ```

   ```
   CREATE INDEX ON Vehicle (VIN)
   ```

   ```
   CREATE INDEX ON Person (GovId)
   ```

   ```
   CREATE INDEX ON DriversLicense (LicensePlateNumber)
   ```

   ```
   CREATE INDEX ON DriversLicense (PersonId)
   ```

1. 创建索引后，您可以开始将数据加载到表中。在此步骤中，将包含分类账所跟踪车辆所有者的个人信息的文档插入 `Person` 表中。

   在查询编辑器窗口中输入以下语句，然后选择 **运行**。

   ```
   INSERT INTO Person
   << {
       'FirstName' : 'Raul',
       'LastName' : 'Lewis',
       'DOB' : `1963-08-19T`,
       'GovId' : 'LEWISR261LL',
       'GovIdType' : 'Driver License',
       'Address' : '1719 University Street, Seattle, WA, 98109'
   },
   {
       'FirstName' : 'Brent',
       'LastName' : 'Logan',
       'DOB' : `1967-07-03T`,
       'GovId' : 'LOGANB486CG',
       'GovIdType' : 'Driver License',
       'Address' : '43 Stockert Hollow Road, Everett, WA, 98203'
   },
   {
       'FirstName' : 'Alexis',
       'LastName' : 'Pena',
       'DOB' : `1974-02-10T`,
       'GovId' : '744 849 301',
       'GovIdType' : 'SSN',
       'Address' : '4058 Melrose Street, Spokane Valley, WA, 99206'
   },
   {
       'FirstName' : 'Melvin',
       'LastName' : 'Parker',
       'DOB' : `1976-05-22T`,
       'GovId' : 'P626-168-229-765',
       'GovIdType' : 'Passport',
       'Address' : '4362 Ryder Avenue, Seattle, WA, 98101'
   },
   {
       'FirstName' : 'Salvatore',
       'LastName' : 'Spencer',
       'DOB' : `1997-11-15T`,
       'GovId' : 'S152-780-97-415-0',
       'GovIdType' : 'Passport',
       'Address' : '4450 Honeysuckle Lane, Seattle, WA, 98101'
   } >>
   ```

1. 然后，在 `DriversLicense` 表格中填入包含每位车主驾驶执照信息的文档。

   在查询编辑器窗口中输入以下语句，然后选择 **运行**。

   ```
   INSERT INTO DriversLicense
   << {
       'LicensePlateNumber' : 'LEWISR261LL',
       'LicenseType' : 'Learner',
       'ValidFromDate' : `2016-12-20T`,
       'ValidToDate' : `2020-11-15T`,
       'PersonId' : ''
   },
   {
       'LicensePlateNumber' : 'LOGANB486CG',
       'LicenseType' : 'Probationary',
       'ValidFromDate' : `2016-04-06T`,
       'ValidToDate' : `2020-11-15T`,
       'PersonId' : ''
   },
   {
       'LicensePlateNumber' : '744 849 301',
       'LicenseType' : 'Full',
       'ValidFromDate' : `2017-12-06T`,
       'ValidToDate' : `2022-10-15T`,
       'PersonId' : ''
   },
   {
       'LicensePlateNumber' : 'P626-168-229-765',
       'LicenseType' : 'Learner',
       'ValidFromDate' : `2017-08-16T`,
       'ValidToDate' : `2021-11-15T`,
       'PersonId' : ''
   },
   {
       'LicensePlateNumber' : 'S152-780-97-415-0',
       'LicenseType' : 'Probationary',
       'ValidFromDate' : `2015-08-15T`,
       'ValidToDate' : `2021-08-21T`,
       'PersonId' : ''
   } >>
   ```

1. 现在，在 `VehicleRegistration` 表中填入车辆登记文件。这些文档包括存储主要和次要所有者的嵌套 `Owners` 结构。

   在查询编辑器窗口中输入以下语句，然后选择 **运行**。

   ```
   INSERT INTO VehicleRegistration
   << {
       'VIN' : '1N4AL11D75C109151',
       'LicensePlateNumber' : 'LEWISR261LL',
       'State' : 'WA',
       'City' : 'Seattle',
       'PendingPenaltyTicketAmount' : 90.25,
       'ValidFromDate' : `2017-08-21T`,
       'ValidToDate' : `2020-05-11T`,
       'Owners' : {
           'PrimaryOwner' : { 'PersonId': '' },
           'SecondaryOwners' : []
       }
   },
   {
       'VIN' : 'KM8SRDHF6EU074761',
       'LicensePlateNumber' : 'CA762X',
       'State' : 'WA',
       'City' : 'Kent',
       'PendingPenaltyTicketAmount' : 130.75,
       'ValidFromDate' : `2017-09-14T`,
       'ValidToDate' : `2020-06-25T`,
       'Owners' : {
           'PrimaryOwner' : { 'PersonId': '' },
           'SecondaryOwners' : []
       }
   },
   {
       'VIN' : '3HGGK5G53FM761765',
       'LicensePlateNumber' : 'CD820Z',
       'State' : 'WA',
       'City' : 'Everett',
       'PendingPenaltyTicketAmount' : 442.30,
       'ValidFromDate' : `2011-03-17T`,
       'ValidToDate' : `2021-03-24T`,
       'Owners' : {
           'PrimaryOwner' : { 'PersonId': '' },
           'SecondaryOwners' : []
       }
   },
   {
       'VIN' : '1HVBBAANXWH544237',
       'LicensePlateNumber' : 'LS477D',
       'State' : 'WA',
       'City' : 'Tacoma',
       'PendingPenaltyTicketAmount' : 42.20,
       'ValidFromDate' : `2011-10-26T`,
       'ValidToDate' : `2023-09-25T`,
       'Owners' : {
           'PrimaryOwner' : { 'PersonId': '' },
           'SecondaryOwners' : []
       }
   },
   {
       'VIN' : '1C4RJFAG0FC625797',
       'LicensePlateNumber' : 'TH393F',
       'State' : 'WA',
       'City' : 'Olympia',
       'PendingPenaltyTicketAmount' : 30.45,
       'ValidFromDate' : `2013-09-02T`,
       'ValidToDate' : `2024-03-19T`,
       'Owners' : {
           'PrimaryOwner' : { 'PersonId': '' },
           'SecondaryOwners' : []
       }
   } >>
   ```

1. 最后，在 `Vehicle` 表中填入描述在分类账中注册的车辆的文档。

   在查询编辑器窗口中输入以下语句，然后选择 **运行**。

   ```
   INSERT INTO Vehicle
   << {
       'VIN' : '1N4AL11D75C109151',
       'Type' : 'Sedan',
       'Year' : 2011,
       'Make' : 'Audi',
       'Model' : 'A5',
       'Color' : 'Silver'
   },
   {
       'VIN' : 'KM8SRDHF6EU074761',
       'Type' : 'Sedan',
       'Year' : 2015,
       'Make' : 'Tesla',
       'Model' : 'Model S',
       'Color' : 'Blue'
   },
   {
       'VIN' : '3HGGK5G53FM761765',
       'Type' : 'Motorcycle',
       'Year' : 2011,
       'Make' : 'Ducati',
       'Model' : 'Monster 1200',
       'Color' : 'Yellow'
   },
   {
       'VIN' : '1HVBBAANXWH544237',
       'Type' : 'Semi',
       'Year' : 2009,
       'Make' : 'Ford',
       'Model' : 'F 150',
       'Color' : 'Black'
   },
   {
       'VIN' : '1C4RJFAG0FC625797',
       'Type' : 'Sedan',
       'Year' : 2019,
       'Make' : 'Mercedes',
       'Model' : 'CLK 350',
       'Color' : 'White'
   } >>
   ```

接下来，您可以使用 `SELECT` 语句从 `vehicle-registration` 分类账中的表中读取数据。继续执行[第 3 步：查询分类账中的表](getting-started-step-3.md)。