3つ以上の属性で項目を一意に識別できる場合のみ、DynamoDBで主キーを選択する方法はありますか?または、これはNOSQLデータベースを使用する正しい方法ではありませんか?アイテムが3つ以上の属性によって一意にしか特定できない場合、DynamoDBで主キーを選択する方法は?
答えて
一般に、アイテムが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つ以上の部分があるときには、別のものが必要な場合があります。
- 1. 多くの属性によって定義される主キー?
- 2. 属性がプログラムによって生成されるとき、特定の属性を持つすべての要素を選択する方法は?
- 3. 特定の属性で選択する
- 4. 無効になっている場合、QAbstractItemViewアイテムを選択できません。
- 5. Azure Tableを選択する方法ParityKeyとRowKeyは既に一意の属性を持っています。
- 6. サーブレット。キーが一意でない場合にパラメータを取得する方法
- 7. フィールドが一意である場合にcount()を選択してください
- 8. jQueryの選択リスト上で選択した属性を設定
- 9. 特定のテキストをCSSで選択できないようにする方法
- 10. テーブルに主キーがない場合は、主キーとして列を設定します。
- 11. 属性が属性リストに含まれている場合、jQuery要素を選択しますか?
- 12. DynamoDBで存在しない(null)属性をクエリする方法
- 13. インターネットで10回以上ログインしようとするユーザーを一意に選択する方法
- 14. 名前属性が推奨されていない場合、ラジオボタンを排他的に選択する方法?
- 15. SQLクエリーで3つ以上の区別がある場所を選択
- 16. Kohanaのフォーム選択メソッドには、NULLでない場合はHTMLに "multiple"属性が含まれています
- 17. フィルタリングする属性が3つ以上ありますか?
- 18. 末尾に一意の番号を持つ属性を選択する
- 19. sqlite3の主キーで行を選択する方法は?
- 20. jQuery:2つの特定のオプションが選択されている場合にフィールドを作成する方法
- 21. 特定の属性を持つリンクを選択する
- 22. 複合キーが存在するときに一意のIDフィールドが主キーに含まれない
- 23. xpathアトリビュートが存在しないときに属性で選択
- 24. jquery属性セレクタで属性を選択できない
- 25. DynamoDBのキー属性をスキャンする
- 26. 独自の識別属性はなく、HTMLコメントがある場合、jQueryでHTMLを選択する方法は?
- 27. XQueryでノードの属性値を選択する方法は?以下のXMLで
- 28. メタデータが同じ場合に単一属性に結合する方法は?
- 29. イメージが選択されていない場合、以前のアクティビティに既定のイメージを渡す方法
- 30. Dynamodb内の3つの複合フィールドプライマリキー(一意の項目)
ありがとうございます。「属性を重複除外する」と説明できますか? – wz366
@ wz366もう少し詳細を追加しました。これは、2つの部分からなるキーを使用する例ですが、3つの部分からなるキー –