

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ステップ 2: 台帳にテーブル、インデックス、サンプルデータを作成する
<a name="getting-started-step-2"></a>

**重要**  
サポート終了通知: 既存のお客様は、07/31/2025 のサポート終了まで Amazon QLDB を使用できます。詳細については、[「Amazon QLDB 台帳を Amazon Aurora PostgreSQL に移行する](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)」を参照してください。

Amazon QLDB 台帳がアクティブになったら、車両、車両の所有者、登録情報に関するデータのテーブルを作成できるようになります。テーブルとインデックスを作成した後、これらにデータをロードできます。

このステップでは、`vehicle-registration` 台帳に 4 つのテーブルを作成します。
+ `VehicleRegistration`
+ `Vehicle`
+ `Person`
+ `DriversLicense`

以下のインデックスも作成します。


****  

| テーブル名 | フィールド | 
| --- | --- | 
| VehicleRegistration | VIN | 
| VehicleRegistration | LicensePlateNumber | 
| Vehicle | VIN | 
| Person | GovId | 
| DriversLicense | LicensePlateNumber | 
| DriversLicense | PersonId | 

QLDB コンソールを使用して、インデックス付きのこれらのテーブルを自動的に作成し、そこにサンプルデータをロードできます。または、コンソールの **[PartiQL エディタ]** を使用して、各 [PartiQL](ql-reference.md) ステートメントをステップごとに手動で実行できます。

## 自動オプション
<a name="getting-started-step-2.con-auto"></a>

**テーブル、インデックス、およびサンプルデータを作成するには**

1. Amazon QLDB コンソール ([https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)) を開きます。

1. ナビゲーションペインで、[**Getting started (開始方法)**] を選択します。

1. **[Sample application data]** (サンプルアプリケーションデータ) カードの **[Automatic option]** (自動オプション) で、台帳のリストから `vehicle-registration` を選択します。

1. [**Load sample data (サンプルデータのロード)**] を選択します。

   オペレーションが正常に終了すると、コンソールに「**Sample data loaded (サンプルデータがロードされました)**」というメッセージが表示されます。

   このスクリプトは、すべてのステートメントを単一のトランザクションで実行します。トランザクションの一部が失敗すると、すべてのステートメントがロールバックされ、該当するエラーメッセージが表示されます。問題に対処した後、オペレーションを再試行できます。
**注記**  
考えられる原因の 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. Amazon QLDB コンソール ([https://console.aws.amazon.com/qldb](https://console.aws.amazon.com/qldb)) を開きます。

1. ナビゲーションペイン内で **[PartiQL エディタ]** を選択します。

1. `vehicle-registration` 台帳を選択します。

1. まず、4 つのテーブルを作成します。QLDB ではオープンのコンテンツをサポートしており、スキーマを強制しないため、属性やデータ型は指定しません。

   クエリエディタウィンドウで、以下のステートメントを入力し、[**Run (実行)**] を選択します。このステートメントを実行するには、キーボードショートカット Ctrl\$1Enter (Windows の場合) または Cmd\$1Return (macOS の場合) を使用することもできます。キーボードショートカットの詳細については、「[PartiQL エディタのキーボードショートカット](console_QLDB.md#console_QLDB.partiql-editor-shortcuts)」を参照してください。

   ```
   CREATE TABLE VehicleRegistration
   ```

   以下の各項目について、このステップを繰り返します。

   ```
   CREATE TABLE Vehicle
   ```

   ```
   CREATE TABLE Person
   ```

   ```
   CREATE TABLE DriversLicense
   ```

1. 次に、各テーブルのクエリパフォーマンスを最適化するインデックスを作成します。
**重要**  
ドキュメントを効率的に検索するには、インデックスが必要です。インデックスがないと、QLDB はドキュメントを読み取るときにテーブルスキャンを実行する必要があります。これにより、同時実行の競合やトランザクションのタイムアウトなど、大きなテーブルでパフォーマンスの問題が発生する可能性があります。  
テーブルスキャンを回避するには、インデックス付きフィールドまたはドキュメント ID で**等価演算子 (`=` または `IN`) を使用する `WHERE` 述語句でステートメントを実行する必要があります。詳細については、「[クエリパフォーマンスの最適化](working.optimize.md)」を参照してください。

   クエリエディタウィンドウで、以下のステートメントを入力し、[**Run (実行)**] を選択します。

   ```
   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` テーブルにドキュメントを挿入します。

   クエリエディタウィンドウで、以下のステートメントを入力し、[**Run (実行)**] を選択します。

   ```
   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` テーブルに入力します。

   クエリエディタウィンドウで、以下のステートメントを入力し、[**Run (実行)**] を選択します。

   ```
   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` 構造が含まれています。

   クエリエディタウィンドウで、以下のステートメントを入力し、[**Run (実行)**] を選択します。

   ```
   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` テーブルに入力します。

   クエリエディタウィンドウで、以下のステートメントを入力し、[**Run (実行)**] を選択します。

   ```
   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) に進みます。