データベーススペシャリスト令和6年秋期 午前Ⅱ 問5

問5

あるエンティティを関係データベース上に実装しようとしたとき,その主キーが多くの属性から構成される複合キーとなることが分かった。主キーとして扱う属性を少なくして扱いやすくしたい。この対応として,適切なものはどれか。
  • 複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を外部キー(foreign key)にする。
  • 複合キーを構成する属性のうち,エンティティの性格を最もよく表している一つの属性を主キーとし,残りの属性を代替キー(alternate key)とする。
  • 連番などを値としてとる列を新たに設けて主キーとし,複合キーの代理キー(surrogate key)とする。
  • 連番などを値としてとる列を新たに設けて主キーとし,複合キーを外部キー(foreign key)にする。
  • [出題歴]
  • データベース H16春期 問27
  • データベース H18春期 問26
  • データベース H20春期 問30
  • データベース H22春期 問4

分類

テクノロジ系 » データベース » データベース設計

正解

解説

複合キーは、複数の属性を組み合わせて主キーとして用いる方法です。複合キーには既存の属性だけでテーブルを構成できるという利点がありますが、主キーの属性数が多すぎると、❶SQLの結合演算記述が煩雑になる、❷テーブル間の依存度が高くなる、❸コードの仕様変更の影響を受けやすい、などの問題が生じる可能性があります。

このような問題を避けたい場合、レコードを一意に識別できる新たな属性を加え、それで主キーを置き換える方法が採用されます。このようにして追加された主キーはサロゲートキー(surrogate key)と呼ばれ、通常は連番コードなど、容易に一意性を持たせられるものが選ばれます。注文番号や会社IDなど、値自体に特定の業務的意味を持たないものが典型的な例です。

サロゲートキーが主キーとなった場合、元の複合キーは主キーではなくなります。このように、主キーの条件を満たしていながら主キーに選ばれなかった属性は、オルタネートキー(alternate key)という扱いになります。

したがって「ウ」の記述が正解です。
  • 複合キーは、それを構成するすべての属性の値を使用しなければテーブルのレコードを同定できません。複合主キーのうち1つの属性だけでは一意性を満たせないので、主キーとして使用することはできません。
  • 「ア」と同じ理由で不適切です。
  • 正しい。複合キーの代わりにサロゲートキーを主キーとします。元の複合キーはオルタネートキーとなります。
  • 外部キーは、他のテーブルの主キーを参照するために使用される属性なので用途が異なります。主キーに選ばれなかった候補キーは、オルタネートキーとなります。
※本問では、サロゲートキーを代理キー、オルタネートキーを代替キーとしていますが、代理キー、代用キー、代替キーなど日本語での呼び方は必ずしも統一されていません。サロゲートキー、オルタネートキーのほうで覚えましょう。
© 2016-2024 データベーススペシャリストドットコム All Rights Reserved.

Pagetop