web-dev-qa-db-ja.com

データベースのカーディナリティとは何ですか?

私はインターネット上で検索してきましたが、理解できる答えを見つけることができなかったようです。

だから親切に、誰かが例の助けを借りてデータベースのカーディナリティとは何かを私に説明できたら?

ありがとうございました。

72
Some Body

混乱の原因は、データモデリングとデータベースクエリ最適化という2つの異なるコンテキストでのWordの使用です。

データモデリングの用語では、カーディナリティとは、あるテーブルと別のテーブルとの関係です。

  • 1-1(表Aの1行は表Bの1行に関連します)
  • 1対多(テーブルAの1つの行は、テーブルBの多くの行に関連します)
  • 多多(表Aの多くの行は、表Bの多くの行に関連しています)

上記へのオプションの参加条件もあります(1つのテーブルの行が他のテーブルにまったく関連しないhaveがない)。

カーディナリティ(データモデリング) のウィキペディアを参照してください。


データベースクエリの最適化について説明する場合、カーディナリティとは、テーブルの列内のデータ、具体的にはテーブル内の一意の値の数を指します。この統計は、クエリの計画と実行計画の最適化に役立ちます。

カーディナリティ(SQLステートメント) のウィキペディアを参照してください。

104
Oded

コンテキストに少し依存します。カーディナリティは何かの数を意味しますが、さまざまな状況で使用されます。

  • データモデルを構築する場合、カーディナリティは、テーブルBに関連するテーブルAの行の数を指すことがあります。つまり、Aのすべての行(1:1)に対してBに1行あり、N行ありますAのすべての行(1:N)のBには、AのN行(N:M)ごとにBのM行があります。
  • B * -treeインデックスまたはビットマップインデックスを使用する方が効率的かどうか、または述語の選択性などを調べる場合、カーディナリティは特定の列の個別の値の数を指します。たとえば、PERSONテーブルがある場合、GENDERは非常に低いカーディナリティ列である可能性が高く(おそらく[GENDERには2つの値しかありません)、PERSON_IDはおそらく非常に高いカーディナリティの列になります(行ごとに値が異なります)。
  • クエリプランを見るとき、カーディナリティとは、特定の操作から返されると予想される行の数を指します。

おそらく、人々が異なるコンテキストを使用してカーディナリティについて話し、他の何かを意味する他の状況があります。

26
Justin Cave

データベースでは、Cardinalityテーブル内の行数。

enter image description hereimgソース


enter image description hereimgソース


  • 関係は、カーディナリティ(つまり、 セットの要素の数 )によって名前が付けられ、分類されます。
  • エンティティの近くに表示されるシンボルは最大カーディナリティで、もう1つは最小カーディナリティ
  • エンティティ関係。関係線の終わりを次のように示します。
    enter image description here

enter image description here

画像 ソース

4
Premraj

カーディナリティとは、列に含まれるデータの一意性を指します。列に多数の重複データがある場合(たとえば、「true」または「false」のいずれかを格納する列)、カーディナリティは低くなりますが、値が非常に一意である場合(社会保障番号など)、カーディナリティは高くなります。

2
Andrew