大きなテーブルレコードは複合キーによって識別されますが、このキーのコンポーネントは何ですか?それを複合化するメリットは何ですか?大きなテーブルと複合キー
答えて
非常に大きなテーブル(行ごと)の場合、個々の行に一意のIDを与えることは、一意のIDを表すデータ型によって制限されます。たとえば、一意のIDを基本的なint32として格納する場合、2147483647個以上のエントリ(最大値はint32)があるとどうなりますか?
Amazonの例を使って、顧客が見たアイテムを追跡しようとします。あなたは "items_customer_has_viewed"というテーブルを想像することができます。単一の顧客の場合、このテーブルの一意のIDを持つことは問題にはなりません。たぶん顧客は1年でアマゾンで50アイテムしか見ないかもしれませんし、そのデータベースは2147483647の制限にとどまり、しばらくの間は小さく留まることができます。しかし、何百万人ものユーザーがいる場合、一意のIDの値が大きくなりすぎます。
一意のIDを文字列またはBLOBとして保存することもできますが、データベースが遅くなり、追加の計算が必要になります。
解決策は、複合キーを使用することです。 1つの「ビュー」または「顧客が見たアイテム」を識別する一意のIDを持つ代わりに、2つの外部キー(一緒になって1つの複合プライマリキーを形成)で「ビュー」を識別します。今は2147483647人の顧客と2147483647人未満の商品しか必要とせず、あなたは大丈夫です。 IDの格納に問題はありません。
このような理由から、ほとんどのデータベースでは、非常に大きな数値データ型が許可されるため、文字列、ブロブ、または複合キーを使用する必要はありません。たとえば、PostgreSQLシーケンスはデフォルトで2^63-1まで生成され、大きな整数型は9,223,372,036,854,775,807までの範囲です。数値型は、小数点の前に131,072桁まで扱います。ですから、そのようなトリックの1つを使用してその行を格納する必要がある場合、データベースの選択肢は非常に貧弱です。 –
- 1. 大きなテーブルと小さいテーブルを持つ外部キー
- 2. SQL - 複数のテーブルと1つの大きなテーブル
- 3. 複合キーと外部キー
- 4. 参加複数の大きなテーブル
- 5. Spring OneToMany複合キーを持つ別のキーとの複合キー
- 6. 大きなキーを複数のキーで並べ替え、ストアマッピング
- 7. React.jsと大きなテーブル
- 8. データベースデザインと大きなテーブル?
- 9. サロゲートキーと複合キー
- 10. 複合キーとフォーム
- 11. 複合キーを持つテーブルのCakePHPビュー
- 12. 自己参照テーブルの複合キー
- 13. Rails - 大きなテーブルと分散テーブル
- 14. 1つの大きなテーブルと複数の小さなテーブルのMySQL JOINパフォーマンス
- 15. 外部複合キーのMysql複合キー
- 16. 大きなテーブルへのLiquibaseと複数のALTERステートメント
- 17. 外部キー(SQL)などの複合キー
- 18. JPA @ManyToMany結合テーブルの主要な複合キーを持たない関係
- 19. 異なるテーブルへの外部複合キー
- 20. 複合キーの大文字と小文字を区別しないハイバネート基準
- 21. EbeanとPlayFrameworkの複合キー
- 22. 2つのテーブル間のテーブルのSQLite複合キー
- 23. 複合外部キーの場合、主キーとの列の組み合わせに必要な参照先テーブルの複合UNIQUE制約は/ whyですか?
- 24. Symfony 2.3複合キーを使用した結合テーブル
- 25. 複合キー
- 26. 複合主キー
- 27. ループバック - 複合キー
- 28. 複合キー
- 29. グループ複合キー
- 30. 複合キー
「このキー」はどのキーですか? – philipxy
<複合キー> – Abdussalam
あなたの質問は不明です。あなたは "コンポジットキーのコンポーネント"が何を意味するのか尋ねていますか? – philipxy