

# リレーショナル (SQL) データベースと DynamoDB からテーブル情報を取得するときの相違点
<a name="SQLtoNoSQL.GetTableInfo"></a>

テーブルが仕様に従って作成されたことを確認できます。リレーショナルデータベースでは、テーブルのスキーマがすべて表示されます。Amazon DynamoDB テーブルはスキーマレスであるため、プライマリキー属性のみが表示されます。

**Topics**
+ [

## SQL を使ってテーブルに関する情報を取得する
](#SQLtoNoSQL.GetTableInfo.SQL)
+ [

## DynamoDB でテーブルに関する情報を取得する
](#SQLtoNoSQL.GetTableInfo.DynamoDB)

## SQL を使ってテーブルに関する情報を取得する
<a name="SQLtoNoSQL.GetTableInfo.SQL"></a>

ほとんどのリレーショナルデータベース管理システム (RDBMS) では、テーブルの構造 (列、データ型、プライマリキー定義など) を記述できます。SQL にはこれを行うための標準的な方法はありません。ただし、データベースシステムの多くが `DESCRIBE` コマンドを提供しています。MySQL の例を以下に示します。

```
DESCRIBE Music;
```

すべての列名、データ型、サイズを含むテーブルの構造が返ります。

```
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| Artist     | varchar(20) | NO   | PRI | NULL    |       |
| SongTitle  | varchar(30) | NO   | PRI | NULL    |       |
| AlbumTitle | varchar(25) | YES  |     | NULL    |       |
| Year       | int(11)     | YES  |     | NULL    |       |
| Price      | float       | YES  |     | NULL    |       |
| Genre      | varchar(10) | YES  |     | NULL    |       |
| Tags       | text        | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
```

このテーブルのプライマリキーは、*Artist* および *SongTitle* で構成されます。

## DynamoDB でテーブルに関する情報を取得する
<a name="SQLtoNoSQL.GetTableInfo.DynamoDB"></a>

DynamoDB には、同様の `DescribeTable` オペレーションがあります。パラメータは、テーブル名のみです。

```
{
    TableName : "Music"
}
```

`DescribeTable` からの返信は、次のようになります。

```
{
  "Table": {
    "AttributeDefinitions": [
      {
        "AttributeName": "Artist",
        "AttributeType": "S"
      },
      {
        "AttributeName": "SongTitle",
        "AttributeType": "S"
      }
    ],
    "TableName": "Music",
    "KeySchema": [
      {
        "AttributeName": "Artist",
        "KeyType": "HASH"  //Partition key
      },
      {
        "AttributeName": "SongTitle",
        "KeyType": "RANGE"  //Sort key
      }
    ],

    ...
```

`DescribeTable` は、テーブルのインデックス、プロビジョニングされたスループット設定、概算項目数、その他メタデータに関する情報を返します。