複合キーの主キー簡素化方法【午前2 解説】
要点まとめ
- 結論:複合キーが多属性で扱いにくい場合は、連番などの代理キーを新設して主キーとするのが適切です。
- 根拠:代理キーは単一属性で一意性を保証し、複雑な複合キーの管理負担を軽減します。
- 差がつくポイント:外部キーや代替キーとの違いを理解し、代理キーの役割と利点を正確に把握することが重要です。
正解の理由
複合キーが多くの属性から構成されると、主キーとしての管理や参照が煩雑になります。
そこで「ウ」のように、連番などの単一属性の列を新たに設けて主キーとし、元の複合キーは代理キー(surrogate key)として扱う方法が最も適切です。
代理キーはシステム側で生成される一意の識別子であり、主キーの扱いやすさを大幅に向上させます。
よくある誤解
複合キーの一部を主キーにし、残りを外部キーや代替キーにするのは誤りです。
外部キーは他のテーブルの主キーを参照するためのキーであり、同じテーブル内の属性を外部キーにすることはありません。
解法ステップ
- 複合キーの属性数が多くて扱いにくいことを確認する。
- 主キーを単一属性に簡素化する必要性を認識する。
- 連番などの新しい列を設けて一意の値を割り当てる代理キーを考える。
- 代理キーを主キーに設定し、元の複合キーは代理キーとして保持する。
- 外部キーや代替キーの役割と違いを理解し、誤った使い方を避ける。
選択肢別の誤答解説
- ア: 複合キーの一部を主キー、残りを外部キーにするのは誤り。外部キーは他テーブルの主キー参照用であり、同一テーブル内の属性に使わない。
- イ: 複合キーの一部を主キー、残りを代替キーにするのは不適切。代替キーは主キー以外の候補キーであり、複合キーの一部を主キーにすること自体が問題。
- ウ: 連番などの単一属性の列を新設し主キーとする代理キー方式は、複合キーの扱いを簡素化し最も適切。
- エ: 連番を主キーにし、複合キーを外部キーにするのは誤り。外部キーは他テーブルの主キー参照用であり、同一テーブル内の複合キーを外部キーにできない。
補足コラム
代理キー(surrogate key)はシステムが自動生成する一意の識別子で、複合キーの代わりに主キーとして使われます。
これにより、主キーのサイズが小さくなり、索引の効率化や参照の簡素化が可能です。
ただし、代理キーは意味を持たないため、業務上の意味を持つ属性は別途ユニーク制約などで管理します。
FAQ
Q: 代理キーと代替キーの違いは何ですか?
A: 代理キーはシステム生成の一意識別子で主キーに使われ、代替キーは主キー以外の候補キー(自然キー)を指します。
Q: なぜ複合キーを主キーに使うと扱いにくいのですか?
A: 複数属性の組み合わせで一意性を保証するため、参照や索引作成時に複雑になり、パフォーマンスや管理が難しくなるからです。
関連キーワード: 複合キー、代理キー、主キー、外部キー、代替キー、関係データベース、キー設計、正規化