データベーススペシャリスト 2011年 午前2 問10
問題文
関係データモデルにおいて属性 A, B を考える。属性 A のドメイン (定義域)はm個の要素から成る集合であり、属性 B のドメインはn個の要素から成る集合であるとする。このとき、関係 R を R (A, B) とすると、Rには最大何個のタプルがあるか。
選択肢
ア:
イ:
ウ:
エ:(正解)
🔒 解説は解答すると表示されます
属性ドメインの直積要素数【午前2解説】
正解の理由
関係 R(A, B) は属性 A の値と属性 B の値の組(順序対)からなる集合であり、これは集合 と の直積 の要素の部分集合です。集合 の要素数が 、集合 の要素数が のとき、直積 の要素数は と の全ての組合せの数であり、その数は です。したがって、R が最大になる(すなわち直積全体を含む)場合のタプル数は であり、該当する選択肢は エ です。
解法ステップ
- 属性 A, B のドメインを集合 として、要素数をそれぞれ と定義する。
- 関係 R(A, B) の可能なタプルは の形の順序対で、これは (直積)の要素であると認識する。
- 直積 の要素数は、各 に対して の全 個の要素と組になれるため、 となる。
- よって R の最大タプル数は 。
選択肢別の誤答解説
- ア:
これは が集合 の部分集合の個数、 が集合 の部分集合の個数であり、部分集合の組合せの数を表す。タプル(順序対)の数とは無関係で、誤りです。また となり、意味が全く異なります。 - イ:
要素数を単純に足して二乗する根拠が無く、直積や順序対の組合せを正しく表していません。例えば のとき ですが、直積の要素は1個しかありません。 - ウ:
単に要素数を足すと、各ペアの組合せ(掛け算)を表さないため不足します。例えば の場合、 ですが実際の最大タプル数は です。 - エ: (正答)
それぞれの の要素に対して の全要素が組合せとなるため、全組合せは 個が 個ずつ、合計 個となります。
よくある誤解
- 「 や を使うのは正しいのでは?」
は集合の部分集合の個数を表すため、タプル(順序対)の個数を求める問題では適用できません。 - 「属性の組合せだから足し算で良い」は誤り
組合せの総数は各要素の“全組み合わせ”を考えるので掛け算で求めます(独立な選択の基本原理)。
補足コラム
- 最小値:関係 R は空集合(タプル0個)であり得るため、タプル数の下限は です。
- 最大値:前述の通り直積全体を含む場合は 。
- 実務面:実際のデータベースでは主キー制約や外部キー制約、NULL 値の扱い、ドメインに特殊値が含まれるかどうかにより実際の行数はこの最大値より小さくなることが一般的です。
- 記法:直積は 、関係の要素は順序対 と表記します。
FAQ
Q1: 属性が同じドメインを共有しているときはどうなる?
A1: ドメインが同じでも集合 の要素数をそれぞれ と数えるため、最大タプル数はやはり です(同じ集合を使う場合は なら )。
A1: ドメインが同じでも集合 の要素数をそれぞれ と数えるため、最大タプル数はやはり です(同じ集合を使う場合は なら )。
Q2: NULL を許すと数え方は変わるか?
A2: 問題の前提がドメインの要素数を とするなら、そのドメインに NULL を含めるかどうかが問題設定で決まります。NULL をドメインの一要素として数えるなら に含めて計算します。一般的な理論問題では NULL を別扱いにしないことが多いです。
A2: 問題の前提がドメインの要素数を とするなら、そのドメインに NULL を含めるかどうかが問題設定で決まります。NULL をドメインの一要素として数えるなら に含めて計算します。一般的な理論問題では NULL を別扱いにしないことが多いです。
Q3: 関係に同一タプルを複数持てるか?
A3: 関係モデルでは集合として扱うため同一タプルの重複は許されません(重複を許す多重集合は別の概念)。
A3: 関係モデルでは集合として扱うため同一タプルの重複は許されません(重複を許す多重集合は別の概念)。
関連キーワード: 関係モデル、直積、ドメイン、タプル、集合論

\ せっかくなら /
データベーススペシャリストを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

