戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2014年 春期 午前(科目A)26


問題文

項目aの値が決まれば項目bの値が一意に定まることを、a → bで表す。例えば、社員番号が決まれば社員名が一意に定まるという表現は、社員番号→社員名である。この表記法に基づいて、図の関係が成立している項目a~jを、関係データベース上の三つのテーブルで定義する組合せとして、適切なものはどれか。
基本情報技術者 2014年 春期 午前(科目A) 問26の問題画像

選択肢

テーブル1 (a) テーブル2 (b, c, d, e) テーブル3 (f, g, h, i, j)
テーブル1 (a, b, c, d, e) テーブル2 (b, f, g, h) テーブル3 (e, i, j)(正解)
テーブル1 (a, b, f, g, h) テーブル2 (c, d) テーブル3 (e, i, j)
テーブル1 (a, c, d) テーブル2 (b, f, g, h) テーブル3 (e, i, j)

🔒 解説は解答すると表示されます

依存性保存と無損失分解【午前解説】

正解の理由

与えられた矢印は関数従属性(FD)を表します。図から取り出せる基本的なFD群は以下です。
  • a→b, a→c, a→d, a→e
  • b→f, b→g
  • c→g, c→h
  • d→i
  • e→i, e→j
選択肢のうち、(テーブル1: (a,b,c,d,e)、テーブル2: (b,f,g,h)、テーブル3: (e,i,j))は次の二点を満たすため適切です。
  1. 無損失分解(lossless):元の関係の候補キーが a であることを示せるため、テーブル1 がそのキー a を含んでおり、全体の分解は無損失となる。具体的に を計算すると全属性を含むため は候補キーです。したがってテーブル1 を含む分解は結合して元に戻せます。
  2. 可能な限りの従属性を各テーブルに局所的に保持している:b→f,b→g はテーブル2 に、e→i,e→j はテーブル3 に、a→b,c,d,e はテーブル1 に含まれ、直接検査できるようになっています。
ただし、c→g,c→h および d→i については、左辺と右辺が別テーブルに分かれているためテーブル単体では直接検査できません(依存性保存がされない)。それでも無損失であるため情報は失われない(結合すれば元の従属性が復元可能)点から、運用上は許容される構成として本問の正答は です。

解法ステップ

  1. 図から全ての基本FDを列挙する(上に示した一覧)。
  2. 候補キーを求める: の閉包を計算する。
    • は a→b,c,d,e により {a,b,c,d,e} を含む。
    • さらに b→f,g、c→h、d→i、e→i,j を順に適用すると最終的に全属性 {a…j} を含む。よって が候補キーである。
    • 表現:
  3. 各選択肢について、いずれかのテーブルが原関係の候補キーを含むか(無損失の簡便条件)、および各FDの左右が同一テーブルに含まれるか(依存性保存の観点)を確認する。
  4. 無損失かつ実務上妥当な依存性配置を満たす組合せを選ぶ。

選択肢別の誤答解説

  • ア: テーブル1 に a 単独、テーブル2 に (b,c,d,e)、テーブル3 に (f,g,h,i,j)。
    • 問題点:原関係の候補キー a を含むテーブルが a 単独では派生属性(b,c,d,e)を保持しないため、a による全属性の復元ができない。無損失条件を満たさない(少なくとも容易に示せるキー包含がない)。
  • ウ: テーブル1 (a,b,f,g,h)、テーブル2 (c,d)、テーブル3 (e,i,j)。
    • 問題点:a→c,d,e のうち c,d,e が分散している。特に a が原関係の候補キーであるにもかかわらず、候補キーを含むテーブルが完全ではなく、無損失性の簡便条件が満たされない。また c→g,h を保持する配置になっていない。
  • エ: テーブル1 (a,c,d)、テーブル2 (b,f,g,h)、テーブル3 (e,i,j)。
    • 問題点:a→b が満たされない(b が別テーブル)。結果として a が候補キーであることを利用できず、無損失の確認ができない。さらに b→f,g はテーブル2 で良いが a に関する従属性の分散が大きい。
以上より、無損失かつ実装上妥当な選択は

よくある誤解

  1. 無損失分解=依存性保存だと誤解する
    • 無損失(結合で元に戻せる)と依存性保存(各 FD を個々の分解表で検査可能)は別概念です。分解は無損失でも一部の FD がテーブル単位では検査できないことがあります(本問では c→g,c→h,d→i が該当)。
  2. トランジティブに左辺が変わると自動的に FD が保存されると考える誤り
    • a→b と b→g があっても、それが c→g を導出するわけではありません。導出可能かは属性間の関係で決まります。
  3. 「左右が別テーブルなら必ずダメ」との短絡判断
    • 別テーブルに分かれていても分解が無損失であれば情報は失われず、結合して検査すれば元の従属性を確認できます。運用上はトレードオフ(性能/制約チェックの場所)を検討します。

補足コラム

  • 依存性の投影(projection):あるテーブルスキーマに対して元の FD 群からそのスキーマ上で成立する FD を求める操作を「投影」と言います。本問では投影結果をテーブルごとに列挙すると保存される従属性が明確になります。
    • テーブル1 (a,b,c,d,e) に投影される FD: a→b,c,d,e(およびその派生)
    • テーブル2 (b,f,g,h) に投影される FD: b→f,g
    • テーブル3 (e,i,j) に投影される FD: e→i,j
      これらの合併が元の FD 群と一致しない場合、依存性は保存されていないことになります。
  • 無損失の簡便チェック:分解のうちどれか一つの分割部が原関係のスーパーキー(候補キー)を含むなら、その分解は無損失になります。本問では a が原関係の候補キーであり、テーブル1 に a が含まれるため条件を満たします。

FAQ

Q1: c→g や d→i が保存されないと実務で問題になるか?
A1: 保存されないとテーブル単体でその制約をデータベースに任せて検査できません。運用上は(1)結合して検査する、(2)トリガ/アプリケーションで検査する、(3)設計を変えて依存性保存を優先する——のいずれかを選びます。無損失であるためデータの再構成は可能です。
Q2: 依存性保存を優先すべきか無損失を優先すべきか?
A2: 原則は両方を満たすことが望ましいですが、トレードオフがあります。実務では無損失は必須に近く、依存性保存は性能や運用負荷と照らして判断します。試験的には「無損失を満たす選択」を重視する設問が多いです。

関連キーワード: 関数従属性、無損失分解、依存性保存、正規化、候補キー
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について