

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

# 步驟 2：在分類帳中建立資料表、索引和範例資料
步驟 2：建立資料表、索引和範例資料

**重要**  
支援終止通知：現有客戶將可以使用 Amazon QLDB，直到 07/31/2025 的支援結束為止。如需詳細資訊，請參閱[將 Amazon QLDB Ledger 遷移至 Amazon 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 主控台，以索引自動建立這些資料表，並使用範例資料載入這些資料表。或者，您可以使用主控台上的 **PartiQL 編輯器**step-by-step手動執行每個 [PartiQL](ql-reference.md) 陳述式。

## 自動選項


**建立資料表、索引和範例資料**

1. 在 [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)：// 開啟 Amazon QLDB 主控台。

1. 在導覽窗格中，選擇**開始使用**。

1. 在**範例應用程式資料**卡的**自動選項**下，`vehicle-registration`選擇分類帳清單中的 。

1. 選擇**載入範例資料**。

   如果操作成功完成，主控台會顯示**載入的範例資料**訊息。

   此指令碼會在單一交易中執行所有陳述式。如果交易的任何部分失敗，每個陳述式都會復原，並顯示適當的錯誤訊息。您可以在解決任何問題後重試 操作。
**注意**  
交易失敗的一個可能原因是嘗試建立重複的資料表。如果您的分類帳中已存在下列任何資料表名稱`Vehicle`，則載入範例資料的請求將會失敗：`VehicleRegistration`、`Person`、 和 `DriversLicense`。  
反之，請嘗試將此範例資料載入空白分類帳。
此指令碼會執行參數化`INSERT`陳述式。因此，這些 PartiQL 陳述式會以繫結參數記錄在您的日誌區塊中，而不是文字資料。例如，您可能會在日誌區塊中看到下列陳述式，其中問號 (`?`) 是文件內容的變數預留位置。  

     ```
     INSERT INTO Vehicle ?
     ```

## 手動選項


您可以將文件插入`VehicleRegistration`具有空白`PrimaryOwner`欄位的 ，以及`DriversLicense`插入具有空白`PersonId`欄位的 。稍後，您會將這些欄位填入`id``Person`資料表的系統指派文件。

**提示**  
最佳實務是使用此文件`id`中繼資料欄位做為外部金鑰。如需詳細資訊，請參閱[查詢文件中繼資料](working.metadata.md)。

**建立資料表、索引和範例資料**

1. 在 [https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)：// 開啟 Amazon QLDB 主控台。

1. 在導覽窗格中，選擇 **PartiQL 編輯器**。

1. 選擇`vehicle-registration`分類帳。

1. 首先建立四個資料表。QLDB 支援開啟的內容，不會強制執行結構描述，因此您不會指定屬性或資料類型。

   在查詢編輯器視窗中，輸入下列陳述式，然後選擇**執行**。若要執行陳述式，您也可以使用 Windows 的鍵盤快速鍵 Ctrl＋Enter，或 macOS 的鍵盤快速鍵 Cmd＋Return。如需更多鍵盤快速鍵，請參閱[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)」。