問題本文
商品の仕入状況を管理している関係データベースの"仕入一覧"表を正規化して,"仕入"表と"商品"表に分割したい。分割後の二つの表に共通して必要なフィールドとして,最も適切なものはどれか。ここで,仕入れは一度に一つの商品だけを仕入れることとし,仕入番号で一意に識別できる。また,商品は商品番号で一意に識別できる。 仕入一覧
解説
関係データベースで「仕入一覧」表を「仕入」表と「商品」表に分割する正規化では,主キーの異なる単位ごとにテーブルを分離する. 仕入は仕入番号で一意,商品は商品番号で一意に識別されるため,商品の属性(商品名,単価など)を商品表に分離し,仕入表は仕入番号を主キーに持つ. このとき仕入表が商品を参照できるように共通フィールドが必要で,商品番号を仕入表に外部キーとして持たせ,商品表の主キーである商品番号と結合できるようにする. したがって両表に共通して必要なフィールドは商品番号となる. 仕入番号は仕入表にのみ,商品名は商品表にのみ存在するため不適切となる.
選択肢ごとの解説
- ア.誤り. 仕入番号は個々の仕入を一意に識別するためのキーであり,仕入表にのみ主キーとして保持する. 商品表には個々の仕入を一意に表す情報は不要であるため,仕入番号は二つの表に共通して必要なフィールドにはならない. したがって本選択肢は分割後の共通フィールドとしては不適切である.
- イ.誤り. 支払方法は仕入ごとに記録される属性であり,仕入表に持たせるべき項目で,商品の属性ではないため商品表には不要である. 二つの表に共通して必要なフィールドにはならないため,本選択肢は分割後の共通フィールドとしては適切ではなく,本問の答えにはならない.
- ウ.正しい. 商品番号は商品表で主キーとして商品を一意に識別するためのフィールドであり,仕入表側では商品との関連を持たせるための外部キーとして必要となる. 仕入表と商品表に共通して持たせて結合できるようにすることが正規化の基本であり,本選択肢が共通フィールドとして最も適切となる.
- エ.誤り. 商品名は商品の属性で商品表に持たせるべきフィールドであり,仕入表に重複して持たせる必要はない. 重複保持は正規化の趣旨に反し更新異常の原因となるため,共通フィールドとしては不適切である. 結合に使う共通フィールドは主キー・外部キーである商品番号であり本選択肢は適切ではない.
ITパスポート 2016年 (平成28年 春期) の過去問一覧へ戻る・問94