答えて

4

一般に、アイテムが3つ以上の属性で一意に識別される場合は、属性値を連結し、Dynamo tbaleのハッシュキーとして使用できるコンポジット文字列キーを作成できます。

インデックスを作成する必要がある場合、または条件式で使用する必要がある場合、アイテムのハッシュキーの属性を別の属性に重複させることはできません。

リレーショナルデータベースの標準形式のルールは、必ずしもNoSQLデータベースには適用されません。実際、通常は非正規化スキーマが優先されます。

概念を拡張するために、正規化された形式を使用するリレーショナルデータベーススキーマを設計するのが一般的です(通常は望ましい)。正規化されたフォームの1つは、データベース内の同じ「もの」を表すデータを複製しないことを指示します。

私はキーに2つの部分しかない例を使用しますが、それをさらに拡張することができます。

たとえば、地理情報を含む表を設計しているとします。米国では、郵便番号は5桁と4桁の数字で構成され、地域を細分化することができます。ジップとPLUS4の組み合わせは一意であることが保証しているので、これは完璧ですZip, Plus4

の複合主キーを持つ

Zip | Plus4 | CityName  | Population 
---------+-----------+---------------+--------------- 
CHAR(5) | CHAR(4) | NVARCHAR(100) | INTEGER 

:あなたは次のスキーマを使用する可能性があり、リレーショナル・データベースで

Zipと追加のPlus4コードの両方を持っているかどうかにかかわらず、このテーブルに対するクエリに答えることができます。また、すべてのPlus4コードを簡単に郵便番号のコードにすることもできます。

Dynamoに同じ情報を格納する場合は、 "ZipPlus4"という文字列型のハッシュキーを作成し、そのコードはPlus4コード(つまり60210-4598)と連結した郵便番号アイテムに2つ以上の属性を格納します。そのうちの1つはZipコードであり、もう1つはPlus4です。だからあなたのテーブル内の項目は以下の属性を持っているかもしれません:

ZipPlus4 | Zip  | Plus4 | CityName | Population 
-----------+---------+----------+-------------+--------------- 
    String | String | String | String  | Number 

上記ZipPlus4は、テーブルのハッシュキーになります。

上記の例では、ハッシュキー「Zip」と範囲キー「Plus4」を持っているが、2つ以上の部分があるときには、別のものが必要な場合があります。

+0

ありがとうございます。「属性を重複除外する」と説明できますか? – wz366

+0

@ wz366もう少し詳細を追加しました。これは、2つの部分からなるキーを使用する例ですが、3つの部分からなるキー –