属性がn個ある関係の異なる射影は幾つあるか【午前2 解説】
要点まとめ
- 結論:属性がn個ある関係の異なる射影の個数は2n通りです。
- 根拠:射影は属性の部分集合を選ぶ操作であり、属性の全ての部分集合の数は2nだからです。
- 差がつくポイント:元の関係と同じ射影や空の射影も含めるかどうかで数え方が変わるため、問題文の条件を正確に理解することが重要です。
正解の理由
射影とは、関係の属性の一部または全部を選択して新しい関係を作る操作です。属性がn個ある場合、その属性の部分集合は空集合も含めて2n個存在します。問題文では「元の関係と同じ結果となる射影」や「属性を全く含まない射影」も含めると明記されているため、空集合も含めて全ての部分集合が射影の個数となります。したがって、正解はイ: 2nです。
よくある誤解
射影の個数を属性の数nや2nと誤解しがちですが、射影は属性の部分集合の数であるため、指数関数的に増えます。空集合を含めるかどうかも混乱の原因です。
解法ステップ
- 射影とは属性の部分集合を選ぶ操作であることを理解する。
- 属性がn個あるとき、部分集合の総数は2nであることを思い出す。
- 問題文で空集合や元の関係と同じ射影も含むと明示されていることを確認する。
- 以上より、射影の個数は2nと判断する。
選択肢別の誤答解説
- ア: 2n
属性の部分集合の数は線形ではなく指数関数的に増えるため誤りです。
- イ: 2n
正解。属性の全ての部分集合の数を表しています。
- ウ: log2n
対数は部分集合の数を表すのに適さず、射影の個数とは無関係です。
- エ: n
属性の数そのものを射影の個数と誤解しています。射影は部分集合の数なので誤りです。
補足コラム
射影はリレーショナルデータベースの基本操作の一つで、属性の選択により必要な情報だけを抽出できます。部分集合の数が2nであることは集合論の基本であり、データベース設計やクエリ最適化の理解にも役立ちます。
FAQ
Q: 射影に空集合を含める意味は何ですか?
A: 空集合の射影は属性を全く選ばない操作で、結果は空の関係となります。理論的には存在しますが、実務ではあまり使われません。
Q: 元の関係と同じ射影はなぜ含めるのですか?
A: 射影は部分集合の選択なので、全属性を選ぶ場合は元の関係と同じ結果になります。問題文で含めると明示されているため、数にカウントします。
関連キーワード: 射影、部分集合、リレーショナルデータベース、属性数、集合論