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

応用情報技術者 2013年 春期 午後06


テキストマイニングツールを活用したシステムへの機能追加における設計と実装に関する次の記述を読んで、設問1〜4に答えよ。

 D社は、家電製品を製造販売する大手企業であり、顧客サポートシステムとホームページを運用している。顧客サポートシステムでは、製品に対する問合せや回答を管理している。ホームページでは、顧客と社員が発言を書き込める製品別の掲示板や活用事例が用意されている。D社では、サポート内容や製品の活用事例を検索するためのキーワードをマスタとして一元管理している。  今回、更なる製品販売・活用推進、顧客満足度向上のために、テキストマイニングツール(以下、ツールという)を導入し、顧客サポートシステムとホームページの機能を強化した新顧客サポートシステム(以下、新システムという)を構築することになった。このツールによって、掲示板への発言内容とキーワードを、キーワードマスタを用いて関連付ける。また、発言内容を分析し、肯定的か否定的かを自動的に判別する。製品に対する問合せや回答内容、製品の活用事例についても同様に、ツールとキーワードマスタを用い、キーワードを関連付ける。運用方法としては、每日、夜間にツールで処理した結果を新システムに取り込む。  新システム全体のE−R図の抜粋を図1に、各エンティティの概要を表1に示す。
応用情報技術者試験(平成25年度 午後 問06 図01)
応用情報技術者試験(平成25年度 午後 問06 表01)
 新システムでは、E-R 図のエンティティ名を表名とし、属性名を列名として、適切なデータ型で表定義した関係データベースによって、データを管理する。   〔発言キーワードへの重み付け〕  発言キーワードの重みを、掲示板上の社員以外の顧客による発言のうち、そのキーワードを含む発言数と定義する。つまり、登録されたキーワードを含む発言数が多いほど話題性が高く、重要度の高いキーワードであると定義する。発言キーワード重み表にその重みの値を集計するための SQL 文を図2に示す。ただし、掲示板上の発言に対してキーワード表だけに存在するキーワードの重みは 0 として集計する。また、発言キーワード重み表のレコードは集計の前に削除されている。  なお、関数 COALESCE(A, B) は、A が NULL でないときは A を、A が NULL のときは B を返す。
応用情報技術者試験(平成25年度 午後 問06 図02)
〔顧客サポートシステムの機能強化〕  顧客サポートシステムでは、電話やインターネットからの問合せや回答を管理している。掲示板に書き込まれた否定的な発言を、含まれるキーワードの重みの総和が大きいものから順にリストアップする機能を追加する。そのリストの上位から順に、各発言に対する回答を記入する画面を開き、回答履歴から類似した内容を照会して、適切な回答を担当者が掲示板に書き込むことで、顧客満足度向上を目指す。  否定的な発言を、含まれるキーワードの重みの総和が大きいものから順に出力するための SQL 文を図3に示す。
応用情報技術者試験(平成25年度 午後 問06 図03)
〔活用事例コンテンツの充実〕  ホームページのコンテンツの一つとして、各製品の用途に応じた活用事例紹介がある。活用事例が検索されやすくするために、活用事例ごとにキーワードを登録するだけでなく、活用シーンにもキーワードを関連付けることによって、より的確に活用シーンを検索できるようになる。  ビデオカメラの活用事例の画面例を図4に、活用シーンに登録されているキーワードの例を表2に示す。図4の活用事例は学校行事の活用シーンなので、表2に登録されている運動会や文化祭といったキーワードでも、この活用事例が検索されるようにしたい。
応用情報技術者試験(平成25年度 午後 問06 図4、表2)

設問1

図1のE-R図中のabに入れる適切な属性名及びエンティティ間の関連を答え、E-R図を完成させよ。  なお、エンティティ間の関連及び属性名の表記は、図1の凡例に倣うこと。

模範解答

a:→ b:サポート分類ID

解説

解答の論理構成

  1. 発言と発言キーワードの関連
    • 【問題文】のエンティティ概要では「発言キーワード」について「一つの発言に対して一つ以上のキーワードが関連付けられる。」と明記されています。
    • これは“1 つの発言(親) ➡ 複数の発言キーワード(子)”という 1 対多の関係であり、リレーション一覧にも「発言 → 発言キーワード(1対多)a」とあります。
    • よって a には凡例で 1 対多を表す「→」をそのまま記入するのが妥当です。
  2. サポートとサポート分類の関連
    • リレーション一覧には「サポート分類 → サポート(1対多)」とあり、サポート側に外部キーが入ることが示唆されています。
    • また、サポートエンティティの属性一覧には「b」という空欄が準備されており、ここにサポート分類を指す列を設ける必要があります。
    • サポート分類の主キーは【問題文】E-R 図中の属性「サポート分類ID」であるため、サポート側の外部キー名も同一の「サポート分類ID」となります。
    • 凡例では外部キーは点線下線で表すため、記述は「サポート分類ID」を点線下線付きで示せば完成です。
以上より
a:→
b:サポート分類ID(点線下線:外部キー)

誤りやすいポイント

  • 「発言」と「発言キーワード」の多重度を逆に捉え、矢印を←にしてしまう。概要文の「一つの発言に対して一つ以上のキーワード」を読み落とさないよう注意が必要です。
  • 外部キー名を“分類ID”や“分類コード”などと省略し、本来の「サポート分類ID」と一致しない名前で書いてしまう。主キーと外部キーは完全一致が原則です。
  • 凡例に従った記号・下線の形式を忘れる。特に試験では図表の記号ミスも減点対象になります。

FAQ

Q: 矢印記号は「→」「←」どちらでも 1 対多を示せるのですか?
A: いいえ。凡例に「→:1対多」と示されているため、向きも含めて固定です。必ず親エンティティ側から子エンティティ側へ矢印を描きます。
Q: 外部キーの列名は主キーと同名にしないといけませんか?
A: 基本的には同名にすることで参照関係が分かりやすくなります。本問のように「サポート分類ID」が主キーなら、外部キーも同じ名称で統一するのが正解です。
Q: サポート分類が 1 対 1 になるケースはないのでしょうか?
A: 問合せは複数の分類に属するのではなく、一意の分類に属する前提で設計されています。そのため 1 対多(分類側 1、サポート側 多)が最適です。

関連キーワード: ER図, 外部キー, 1対多, リレーション, データモデリング

設問2

図2中のcdに入れる適切な字句又は式を答えよ。

模範解答

c:LEFT OUTER JOIN d:発言.社員番号 IS NULL

解説

解答の論理構成

  1. 【問題文】には次の要件があります。
    • 「掲示板上の発言に対してキーワード表だけに存在するキーワードの重みは 0 として集計する。」
    • 「発言キーワードの重みを、掲示板上の社員以外の顧客による発言のうち、そのキーワードを含む発言数と定義する。」
    • 「社員番号属性には、社員の発言の場合は社員番号が入り、社員以外の顧客による発言の場合はNULLが入る。」
  2. 0 も含めて全キーワードを取得するためには、キーワード表を基準に結合し、対応する発言数がなかった場合でも行が残る必要があります。これを満たすのが LEFT OUTER JOIN です。
  3. 「社員以外の顧客による発言」を抽出するには、社員の場合にのみ値が入る列が NULL であることを条件にします。したがって 発言.社員番号 IS NULL が最も直接的かつ可読性の高い式となります。
  4. 以上より、
    • c には LEFT OUTER JOIN
    • d には 発言.社員番号 IS NULL
      を挿入するのが適切です。

誤りやすいポイント

  • INNER JOIN を選択すると、キーワード表に存在するが掲示板では一度も使用されていないキーワードが欠落し、「重みは 0 として集計する」という要件を満たせません。
  • NULL 判定を = NULL で書くと一致判定ができず、結果に社員の発言が混入します。IS NULL を忘れずに使います。
  • LEFT OUTER JOIN を RIGHT OUTER JOIN と誤記すると、基準表が逆になり意図した結果が得られません。

FAQ

Q: なぜ LEFT JOIN ではなく LEFT OUTER JOIN と書くのですか?
A: ANSI-SQL では両者は同義で、どちらでも動作します。本試験では図2中の表記に合わせて完全形の LEFT OUTER JOIN を選ぶのが無難です。
Q: 社員番号 以外の列で顧客かどうか判断しても良いですか?
A: 【問題文】には「社員以外の顧客による発言の場合はNULLが入る。」と明示されているため、社員番号 列の NULL 判定が最短で確実です。
Q: COALESCE を使う理由は?
A: 外部結合で得た発言数が NULL(件数 0)になる場合を 0 に置き換え、「重みは 0 として集計する」という要件を実現します。

関連キーワード: 外部結合, NULL判定, 集計関数, サブクエリ, テキストマイニング

設問3

図3中のefに入れる適切な字句又は式を答えよ。

模範解答

e:発言.否定的フラグ = '1' f:ORDER BY WEIGHT DESC

解説

解答の論理構成

  1. 抽出対象の確認
    【問題文】に「掲示板に書き込まれた否定的な発言を、含まれるキーワードの重みの総和が大きいものから順にリストアップする」とあります。
    否定的かどうかは表1の「発言」エンティティ説明にある「否定的フラグ属性には、否定的な発言内容の場合は‘1’が、そうでない場合は‘0’が入る」で判定します。
    したがって WHERE 句 e には
    sql 発言.否定的フラグ = '1'
    を記述し、否定的な発言のみを対象にします。
  2. 並べ替え条件の決定
    同じく【問題文】に「含まれるキーワードの重みの総和が大きいものから順にリストアップ」と明記されています。
    図3の SELECT 句で SUM(発言キーワード重み.重み) AS WEIGHT と総和を WEIGHT という列別名で算出しているので、
    ORDER BY 句 f では
    sql ORDER BY WEIGHT DESC
    とし、総和が大きい順(降順)に整列させます。
  3. 以上より
    e:発言.否定的フラグ = '1'
    f:ORDER BY WEIGHT DESC

誤りやすいポイント

  • 肯定・否定両方を判定しようとして 発言.肯定的フラグ = '0' まで条件に加えると、肯定・否定がともに ‘1’ の発言を除外してしまいます(表1に「両方のフラグに‘1’が入る場合もある」と明示)。
  • ORDER BY で列名ではなく SUM(発言キーワード重み.重み) と関数を書くと可読性が落ち、RDBMS によってはエイリアスが優先されない場合があります。
  • 重み降順を ASC と誤記すると、重要度の低い発言が先頭に並んでしまいます。

FAQ

Q: 否定的フラグが文字列 '1' か数値 1 か迷います。
A: 【問題文】は「‘1’」と引用符付きで示しているので文字列リテラルで記述するのが安全です。RDBMS が数値型を許容する場合でも、設計書の表記に合わせるのが基本です。
Q: ORDER BY でエイリアス WEIGHT を使わず列番号 2 を書いても動きますか。
A: 動作する製品もありますが、列の追加・順序変更に弱いため推奨されません。エイリアスを明示しましょう。
Q: 肯定・否定双方のフラグが ‘1’ の発言も抽出対象ですか。
A: はい。否定的フラグが ‘1’ であれば肯定的フラグの値にかかわらず抽出対象になります。

関連キーワード: SQL集計, INNER JOIN, フラグ設計, ORDER BY, データ抽出

設問4

図1のE-R図には、〔活用事例コンテンツの充実〕を実現するために必要なエンティティを一つ追加する必要がある。解答欄中央の空白のエンティティに、そのエンティティ名として格納するデータの意味を表す名前を付け、その属性を全て挙げよ。さらに、関連するエンティティ名を解答欄左右のエンティティに記入し、解答欄中央のエンティティとの関連を図1の凡例に倣って示せ。

模範解答

応用情報技術者試験(平成25年度 午後 問06 設問4 解答)

解説

解答の論理構成

  • 着眼点①:要件の追加
    問題文の〔活用事例コンテンツの充実〕では、
    「活用事例ごとにキーワードを登録するだけでなく、活用シーンにもキーワードを関連付ける」
    と明記されています。現行の E-R 図には「活用シーン」と「キーワード」を直接結ぶ関連が存在しないため、新しい関連を設計する必要があります。
  • 着眼点②:多対多関係の解消
    一つの活用シーンに複数のキーワードが付く可能性があり(例:学校行事→「運動会」「文化祭」)、逆に一つのキーワードが複数の活用シーンに付く可能性もあります(例:「運動会」→学校行事・スポーツ)。すなわち多対多関係なので、中間エンティティを設けて正規化します。
  • 着眼点③:エンティティ名と属性
    多対多を解消する中間エンティティには、両方の主キーを複合主キーとして持たせるのが定石です。したがって
    エンティティ名:活用シーンキーワード
    属性:活用シーンID, キーワードID
    が最小構成となります。
  • 着眼点④:関連の向きと記号
    図1の凡例に従い、
    ・「活用シーン」―(1)⇔(多)→「活用シーンキーワード」
    ・「キーワード」―(1)⇔(多)→「活用シーンキーワード」
    を記述すれば要件を満たす E-R 図になります。

誤りやすいポイント

  • 活用シーンに直接「キーワードID」を入れる誤設計
    →多対多を 1 列で表そうとすると、同一シーンに複数キーワードを持てず失敗します。
  • 主キーの取り違え
    →中間エンティティは両外部キーの複合主キーであり、別途連番を持つ必要はありません。
  • 関連の矢印向き
    →図1の凡例では「1 対多」を→で表現します。方向を逆に描くと減点対象です。

FAQ

Q: 中間エンティティに「登録日時」などを追加すべきですか?
A: 本設問は“必要なエンティティを一つ追加”という趣旨です。要件で日時管理は求められていないため、最小構成の2属性で十分です。
Q: エンティティ名を「シーンキーワードリンク」としても良いですか?
A: エンティティ名は「格納するデータの意味を表す名前」と指示されています。どちらでも意味は通りますが、両者の語をそのまま繋げた「活用シーンキーワード」の方が直感的で採点上も安全です。
Q: 活用事例キーワードとの違いが分かりません。
A: 「活用事例キーワード」は活用事例とキーワードを結ぶ中間エンティティです。今回追加した「活用シーンキーワード」は活用シーンとキーワードの中間エンティティで、対象となる上位概念が異なります。

関連キーワード: 多対多, 正規化, 複合主キー, 外部キー, 中間テーブル
戦国ITクイズ機能

\ せっかくなら /

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

クイズ画面へ遷移する

すぐに利用可能!

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

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