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

データベーススペシャリスト 2022年 午後1 問01


アフターサービス業務に関する次の記述を読んで、設問に答えよ。

   住宅設備メーカーのA社は、アフターサービス業務 (以下、AS 業務という)のシステム再構築で、業務分析を行って概念データモデルと関係スキーマを設計した。  
〔現状業務の分析結果〕 1.社内外の組織、人的資源の特性  (1) カスタマーセンター(以下、CCという)は、A社に一つだけある組織である。  (2) CCの要員であるカスタマー係 (以下、CC要員という)は、社員番号で識別し、氏名をもつ。  (3) ビジネスパートナー (以下、BPという)は、A社の協業先企業で、BPコードで識別し、BP名、所在地をもつ。 AS 業務の範囲のBPには、販売パートナー(以下、SLPという) と点検修理パートナー (以下、ASPという)がある。   ① SLPは、販売店、工務店など、A社の製品をエンドユーザー (以下、EUという)に販売、設置をする企業であり、後述する問合せの登録を行う。 SLPはSLPフラグで分類し、業種と前年販売高をもつ。   ② ASPは、点検修理の委託先企業で、全国を数百のサービス地域に分け、サービス地域の幾つかごとに1社と契約している。 ASPはASPフラグで分類し、後述するカスタマーエンジニア (以下、CEという) の人数であるCE数をもつ。  (4) CEは、ASPに所属する技術者で、ASPごとのCE番号であらかじめ登録している。 氏名をもつ。  (5) EUは、製品の利用者で、EU番号で識別し、氏名、住所、住所から定まるサービス地域、電話番号、更新年月日をもつ。
2.製品などのもの、点検修理項目の特性  (1) 製品は、A社が製造販売する製品で、製品コードで識別し、製品名をもつ。  (2) 製品シリーズは、製品の上位の分類で、床暖房パネル、乾燥機などがある。製品シリーズコードで識別し、製品シリーズ名をもつ。  (3) 登録製品には、販売した製品を利用するEUを登録する。   ① 登録製品は、製品製造番号で識別する。 登録製品には、製品コード、利用者のEU番号、登録製品の更新年月日を記録している。   ② 登録製品の利用者は、集合住宅での入退居や住宅の売買で変わり得るので把握の都度、利用しているEUを登録又は更新する。  (4) 点検修理項目は、出張による点検修理で発生し得るCEの作業項目で、メンテナンスコード(以下、MTコードという)で識別し、点検修理項目名をもつ。 動作確認、分解点検、ユニット交換などがある。
3.問合せの登録  (1) 製品使用者の使用上の不具合や違和感がA社に対する問合せとなる。  (2) 問合せは、製品使用者から直接又はSLP経由でCCに入る。  (3) 問合せの媒体は、Web上の問合せフォームか電話による通話である。いずれであるか媒体区分で分類する。  (4) 一つの問合せは、問合せフォームから入る1件の問合せ文又は1回の通話で、問合せ番号で識別し、問合せ年月日時刻、問合せ内容のほかに、製品使用者への連絡のための情報として、お名前と電話番号を記録する。 この段階での連絡のための情報は、登録されているEUのものとは関連付けない。  (5) 製品使用者が直接入れる問合せは通話と問合せフォームの両方があり得るが、SLP経由の場合は問合せフォームからに限定している。  (6) 入ったWeb問合せに対してCC要員が製品使用者に電話をかける。 そのWeb問合せがSLP経由だった場合、製品使用者にどのSLPから受け継いだかを伝えるために、Web問合せに経由したSLPのBPコードを記録している。  (7) 通話は、成立しなくても1回の通話としている。 通話が成立しないケースは、受信の場合はCC要員の応答前に切れるケース、発信の場合は相手が話し中又は応答がないケースである。 通話の成立は通話成立フラグで分類する。  (8) 通話の場合、通話したCC要員の社員番号、通話時間、受信か発信かの受発区分、音声データである通話音声を記録している。  (9) 問合せは、製品使用者が勘違いしていたり他社製品であったりすることもあり、この場合の問合せは、後述する案件化をすることなく終わる。
4.問合せの案件化  (1) 問合せに対して、回答のためにCCから電話をかける必要又は点検修理の必要があれば、問合せを案件化し、案件番号を発番して案件を登録する。  (2) 案件は、対象製品が登録済みの登録製品に合致すればその登録製品と、合致しなければ新たな登録製品を登録して関連付ける。 その際、EUが未登録又は更新が必要であれば、EUの登録又は更新も併せて行う。  (3) 案件には、案件の登録年月日と更新年月日、EUに対する回答内容、案件の完結を判断するための完結フラグをもつ。  (4) 案件化した問合せ及びその後の問合せは案件に従属させる。
5.出張の手配  (1) 案件に対して、どのような内容で点検修理を要するか決まると出張手配を行う。  (2) 出張手配は、案件に対して1回行い、EUに了解を得て出張年月日と出張時間帯を決める。
6.出張の実施  (1) 手配された出張を実施すると、実施年月日と実施時間帯、担当したCE, 解決したか判断するための解決フラグを記録する。  (2) また、点検修理の内訳を AS 実施記録として、実施したMTコード、実施金額を記録する。  
〔修正改善要望の分析結果〕 1.ユニット及び要管理機能部品の追加  (1) ユニットは、部品の集合で、ユニットコードで識別し、ユニット名、ユニット概要、製造開始時期、製造終了時期をもつ。 熱交換器、水流制御器などがある。   ① 製品の故障は、いずれかのユニットで発生する。   ② 製品シリーズごとに、用いているユニットを登録する。   (2) 機能部品は、主要な部品で、機能部品番号で識別し、機能部品名、後述する要管理内容、製造開始時期、製造終了時期をもつ。 ポンプや液晶板などがある。   ① 機能部品は、複数ユニット間で共通化を進めている。   ② 機能部品に起因する故障の頻発を予見した場合、その機能部品を要管理機能部品として要管理内容を登録し、組み込んでいるユニットと関連付ける。
2.FAQ及びキーワードの整備  (1) 既出の問合せ内容と回答内容の組をFAQとして登録することで、新たな問合せに対してFAQを確認して迅速に正しい回答ができるようにする。   ① FAQは、FAQ番号で識別し、問合せ内容、回答内容、点検修理の必要性を分類する要点検修理フラグ、発生度ランクをもつ。   ② FAQは、点検修理が必要となる要点検修理FAQとその必要のないその他のFAQに分類し、要点検修理 フラグで分類する。   ③ 要点検修理FAQには、対象のユニットが何か設定するとともに、対応する点検修理項目を関連付けておく。   ④ FAQには、問合せ内容の解釈によって類似のFAQが複数存在し得るので、類似するFAQを関連FAQとして関連付け、関連度合いをA〜Cの3段階に分けて関連度ランクとして設定する。  (2) FAQ中に存在するキーワード (以下、KWという)をあらかじめ登録し、FAQとその中で用いられるKWを関連付ける。 KWはKWそのもので識別し、補足説明をもつ。  (3) 案件でEUへの回答に適用したFAQは、案件適用FAQとして案件に関連付け、可能性の高いFAQの順に可能性順位を記録する。  
〔概念データモデルと関係スキーマの設計〕 1.概念データモデル及び関係スキーマの設計方針  (1) 概念データモデル及び関係スキーマの設計は、まず現状業務について実施し、その後に修正改善要望に関する部分を実施する。  (2) 関係スキーマは第3正規形にし、多対多のリレーションシップは用いない。  (3) 概念データモデルでは、リレーションシップについて、対応関係にゼロを含むか否かを表す “○” 又は“●”は記述しない。  (4) サブタイプが存在する場合、他のエンティティタイプとのリレーションシップは、スーパータイプ又はいずれかのサブタイプの適切な方との間に設定する。  (5) スーパータイプに相当する関係スキーマには、必ずサブタイプを分類する属性を明示する。  (6) 同一のエンティティタイプ間に異なる役割をもつ複数のリレーションシップが存在する場合、役割の数だけリレーションシップを表す線を引く。  
2.〔現状業務の分析結果〕に基づく設計  現状の概念データモデルを図1に、現状の関係スキーマを図2に示す。
データベーススペシャリスト試験(令和4年 午後1 問1 図1) ↩設問1(1) ↩設問2(1)
3.〔修正改善要望の分析結果〕 に関する設計  修正改善要望に関する概念データモデルを図3に、修正改善要望に関する関係スキーマを図4に示す。
 解答に当たっては、巻頭の表記ルールに従うこと。 また、エンティティタイプ名、関係名、属性名は、それぞれ意味を識別できる適切な名称とすること。 関係スキーマに入れる属性名を答える場合、主キーを表す下線、外部キーを表す破線の下線についても答えること。

設問1:現状の概念データモデル及び関係スキーマについて答えよ。

問題文を見る
(1)図1中の欠落しているリレーションシップを補って図を完成させよ。

模範解答

データベーススペシャリスト試験(令和4年 午後1 問1 設問1-1解答)

解説

解答の導き方

図1の未完成箇所を見つけるには、問題文中の「どの業務がどの情報を生成/参照するか」を順にたどれば確実です。以下は、図に補うべきリレーションシップを一つずつ導く流れです。
  1. 問合せ(媒体)の分岐(Web問合せ/通話/SLP経由)
    • 根拠として問題文に「問合せの媒体は、 Web上の問合せフォームか電話による通話である。」とあるので、問合せは少なくとも「Web問合せ」と「通話」を区別して表す必要があります。したがって図上で「問合せ」から「Web問合せ」と「通話」へ線を引き、それぞれを識別するようにします。
    • また「問合せは、 製品使用者から直接又はSLP経由でCCに入る。」かつ「SLP経由の場合は問合せフォームからに限定している。」なので、SLP経由のWeb問合せを表す「SLPweb問合せ」は「Web問合せ」側の特殊なケースとして扱い、SLPと関連付けます(Web問合せ ← SLPweb問合せ → SLP)。
  2. Web問合せと通話の関係(発信通話の扱い)
    • 「入ったWeb問合せに対してCC要員が製品使用者に電話をかける。」とあるため、あるWeb問合せがきっかけでCC要員が発信する通話が発生します。一方で「通話の場合、…受信か発信かの受発区分、音声データである通話音声を記録している。」とあり、通話自体は着信・発信の両方を含む一般的な記録です。
    • ここから導かれる設計方針は、発信で「Web問合せに紐づく通話」を明示的に結び付けることです。設計上は「発信通話」をWeb問合せと通話を結ぶ関連(連関エンティティ)としてモデル化します(Web問合せ — 発信通話 — 通話)。発信通話は「通話」の部分集合であるが、発信がWeb問合せ由来であることを明示する役割を持つため、単に「通話のサブタイプ」とするよりも、Web問合せとの結び付きを表す独立の関連で扱うほうが図意が明確になります。
  3. 通話とCC要員
    • 「通話の場合、通話したCC要員の社員番号、通話時間、受信か発信かの受発区分、音声データ…を記録している。」から、通話は必ずCC要員と関連します。従って図上で「通話」と「CC要員」を結びます(通話側にCC要員の社員番号を参照できるようにする)。
  4. 問合せと案件の関係
    • 「問合せに対して、 …問合せを案件化し、 案件番号を発番して案件を登録する。」かつ「案件化した問合せ及びその後の問合せは案件に従属させる。」とあるので、問合せは(任意に)案件に紐づきます。したがって図では問合せと案件を関連付け、問合せ側に案件番号を参照する形(問合せが案件に従属する)で表現します。
  5. 登録製品/EU/案件の流れ
    • 「登録製品には、販売した製品を利用するEUを登録する。」とあり、登録製品はEUを参照します。さらに「案件は、対象製品が登録済みの登録製品に合致すればその登録製品と…関連付ける。」とあるので、登録製品→案件の関係(案件が登録製品を参照)を図に含めます。これによりEU → 登録製品 → 案件 という流れが明確になります。
  6. 出張手配・出張実施・AS実施記録と関連
    • 「出張手配は、 案件に対して1回行い…出張年月日と出張時間帯を決める。」より、出張手配は案件に結び付くので「案件 → 出張手配」を描きます。
    • 「手配された出張を実施すると、 実施年月日と実施時間帯、 担当したCE, 解決フラグを記録する。」から、出張実施は担当CEを参照します。したがって出張実施 ←→ CE を結びます。
    • 出張実施とAS実施記録については「AS 実施記録として、 実施したMTコード、実施金額を記録する。」かつ AS実施記録が複数の点検修理項目(MTコード)を持ち得るため、出張実施とAS実施記録(さらにAS実施記録は点検修理項目のMTコードを参照)を結びます。
  7. CC要員と出張実施(重要な誤り回避)
    • 図1ではCEボックスとCC要員ボックスから出張実施ボックスへ線が伸びる意図があるため、説明する際に「CE → CC要員」のように誤って表現してはいけません。CEとCC要員は別役割であり、どちらも出張実施に役割を持つ(CEは技術担当、CC要員は手配・事務側の担当を示す等)ため、図上ではCEとCC要員それぞれから出張実施へ線を引きます(CEとCC要員を直接つなぐ線は不要・誤り)。
まとめ(図に追加/補完すべき線の一覧と根拠)
  • 問合せ — Web問合せ:根拠「問合せの媒体は、 Web上の問合せフォームか電話による通話である。」
  • 問合せ — 通話:同上。
  • Web問合せ — SLPweb問合せ — SLP:根拠「問合せは、 製品使用者から直接又はSLP経由でCCに入る。」かつ「SLP経由の場合は問合せフォームからに限定している。」
  • Web問合せ — 発信通話 — 通話(発信通話はWeb問合せと通話を結ぶ連関):根拠「入ったWeb問合せに対してCC要員が製品使用者に電話をかける。」および「通話は受発区分を記録する。」
  • 通話 — CC要員:根拠「通話の場合、通話したCC要員の社員番号…を記録している。」
  • 問合せ — 案件(問合せが案件に従属する形で関連):根拠「問合せを案件化し、…案件化した問合せ及びその後の問合せは案件に従属させる。」
  • 登録製品 — 案件(案件は対象の登録製品を参照する):根拠「案件は、対象製品が登録済みの登録製品に合致すればその登録製品と…関連付ける。」および「登録製品には、…EUを登録する。」(EU→登録製品)
  • 案件 — 出張手配 — 出張実施 — AS実施記録 — 点検修理項目 の連鎖:根拠「出張手配は、案件に対して1回行い…」「手配された出張を実施すると、…担当したCE…を記録する。」「AS 実施記録として、 実施したMTコード、 実施金額を記録する。」
  • 出張実施 — CE:根拠「手配された出張を実施すると、…担当したCE…を記録する。」
  • 出張実施 — CC要員(図上の役割として明示):根拠(図の意図および手配・運用の流れ)と「CCから電話をかける」「案件化・手配の主体がCCである」ことから、CC要員の関与を出張実施側に表現します(CEとCC要員を直接つなぐのは誤り)。
図へ具体的に線を引く際は以上の項目を順に追加してください。特に「発信通話」を通話のサブタイプと誤解せず、Web問合せとの結び付き(連関)として表現する点と、CEとCC要員を直接結ばない点に注意してください。

誤りやすいポイント

  • 発信通話を単に「通話のサブタイプ」として表現すること。発信通話は「Web問合せに紐づく発信という事象」を示すため、Web問合せと通話を結ぶ連関(あるいは発信のための交差点)として扱うほうが意図が明確になる。
  • CEとCC要員を混同して「CE → CC要員」のような関係線を引くこと。両者は別個の役割であり、どちらも出張実施に関与する点を明示する(CEとCC要員それぞれから出張実施へ線を引く)。
  • 問合せと案件の向き(誰が参照するか)を誤ること。仕様文の「案件化した問合せは案件に従属」とあるため、問合せ側に案件番号を持たせる(問合せが案件を参照する)実装が一般的である点を押さえる。
  • 通話は「成立した通話のみ」と誤解すること。仕様に「通話は、成立しなくても1回の通話としている。」とあるので、不成立の通話も記録対象である。
  • AS実施記録と点検修理項目の関連を忘れると、どのMTコードを実施したか追えなくなる。問題文に明示された通り、AS実施記録は実施したMTコード(点検修理項目)を参照する。

FAQ

Q: 発信通話は「通話のサブタイプ(発信のみ)」で表現してはいけないのですか?
A: 設計上は可能ですが、この業務では「Web問合せがきっかけでCC要員が発信する」という事象を明確に保持する必要があります。したがって「発信通話」をWeb問合せと通話を結ぶ連関(発信がどの問合せに対応するかを示す)として表現する方が意味が明確になります(「通話」に発信フラグだけを置くと、どのWeb問合せに紐づく発信かが分かりにくくなるため)。
Q: 問合せと案件はどちらが参照キーを持つべきですか?
A: 問合せが案件に従属するため、問合せ側に案件番号を参照する形(問合せが案件の外部キーを持つ)で設計するのが自然です。根拠は「案件化した問合せ及びその後の問合せは案件に従属させる。」という記述です。
Q: CC要員は出張実施に関係しますか?出張実施の担当キーに含めるべきですか?
A: 出張実施は「担当したCE」を確実に記録するべきですが、CC要員は出張手配や記録管理を行う主体として関与するため概念モデル上は出張実施に関与を示す線を引きます。実際の関係(出張実施テーブルにCC要員の社員番号を持たせるか否か)は業務要件(誰が記録する/担当するか)次第です。ただし図上でCEとCC要員が直接結ばれるのは誤りで、各々から出張実施へ線を引く形が正しいです。

関連キーワード: エンティティ、リレーションシップ、サブタイプ(スーパータイプ/サブタイプ)、連関エンティティ(アソシエーション)、第3正規形

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問1:現状の概念データモデル及び関係スキーマについて答えよ。

問題文を見る
(2)図2中の(ア)〜(カ)に入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ。

模範解答

ア:問合せ年月日時刻、問合せ内容、連絡先お名前、連絡先電話番号、媒体区分、案件番号 イ:SLP製品使用者入力区分 ウ:SLPBPコード エ:通話社員番号、通話時間、通話成立フラグ、通話音声、受発区分 オ:発信元Web問合せ番号 カ:出張年月日、出張時間帯

解説

解答の論理構成

  1. (ア)問合せ
    • 【問題文】“問合せは、… 問合せ番号で識別し、問合せ年月日時刻、問合せ内容のほかに、… お名前と電話番号を記録… 媒体区分で分類する。”
    • “案件化した問合せ…は案件に従属”より 案件番号 を外部キーとして追加。
  2. (イ)Web問合せ
    • 【問題文】“製品使用者が直接入れる問合せは通話と問合せフォーム… SLP経由の場合は問合せフォームからに限定”
    • SLP経由か否かを区別するため “SLP製品使用者入力区分” を設定。
  3. (ウ)SLPweb問合せ
    • 【問題文】“Web問合せに経由したSLPのBPコードを記録”
    • SLPのBPを指す SLPBPコード を外部キーとして定義。
  4. (エ)通話
    • 【問題文】“通話の場合、通話したCC要員の社員番号、通話時間、… 通話成立フラグ、… 受発区分、音声データである通話音声を記録”
    • 社員番号はCC要員表への外部キーなので下線破線。
  5. (オ)発信通話
    • 【問題文】“発信の場合… CC要員が製品使用者に電話をかける” “発信通話”はWeb問合せ起点で派生するため “発信元Web問合せ番号” を設定。
  6. (カ)出張手配
    • 【問題文】“出張手配は、… EUに了解を得て出張年月日と出張時間帯を決める”
    • 対象案件は主キー “案件番号” に統合済みなので、残る2属性 “出張年月日”、“出張時間帯” を追加。

誤りやすいポイント

  • 問合せと案件のタイミングを混同し、「案件番号」を問合せ側に置き忘れる。
  • “SLP経由”の区分を属性でなく別エンティティで表そうとして正規化条件を崩す。
  • “通話社員番号”を単なる属性とし、CC要員との外部キー関係を付け忘れる。
  • “発信元Web問合せ番号”を必須にし忘れ、発信通話とWeb問合せの対応が不明確になる。

FAQ

Q: 媒体別にテーブルを分割する必要はありますか?
A: 本問では媒体を示す “媒体区分” があるため一つの「問合せ」エンティティで管理し、媒体固有情報がある場合のみサブタイプ(Web問合せ・通話)を派生させています。
Q: “SLP製品使用者入力区分” と “SLPBPコード” を1つのテーブルに入れては駄目?
A: “SLP製品使用者入力区分” はWeb問合せ全体の属性ですが “SLPBPコード” はSLP経由のときにだけ意味を持つため、サブタイプ “SLPweb問合せ” に分離すると非該当レコードでNULLが乱立するのを防げます。
Q: “出張手配” に出張先EU情報を持たせない理由は?
A: EUは “案件” 経由で一意に決まるので冗長です。第3正規形の原則どおり部分従属を排除します。

関連キーワード: データモデリング、正規化、外部キー、サブタイプ、関係スキーマ

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問2:修正改善要望に関する概念データモデル及び関係スキーマについて答えよ。

問題文を見る
(1)次の問いに答えて図3を完成させよ。  (a)図3中の(あ)〜(う)には、図1に示した現状の概念データモデル中のエンティティタイプ名のいずれかが入る。(あ)〜(う)に入れる適切なエンティティタイプ名を答えよ。  (b)図3中の欠落しているリレーションシップを補え

模範解答

(a):  あ:製品シリーズ  い:点検修理項目  う:案件 (b): データベーススペシャリスト試験(令和4年 午後1 問1 設問2-1解答)

解説

解答の導き方

図3の空欄(あ)〜(う)と、図4の網掛け部分a〜fは、問題文の設計条件と各記述から「どのエンティティ/どの関連を表すべきか」を順に読み取れば決まります。以下はその思考過程を省かずに示します。
  1. (あ)=製品シリーズ
  • 根拠:「製品シリーズごとに、用いているユニットを登録する。」という記述があり、図3の(あ)からユニットへ向かう経路(最終的に網掛けaにつながる構造)と整合します。したがって(あ)は製品シリーズと判断します。
  • 補足:設計方針で「多対多のリレーションシップは用いない」とあるため、製品シリーズとユニットの関係は中間の関係スキーマ(a)として実装します。
  1. (い)=点検修理項目
  • 根拠:「要点検修理FAQには、対象のユニットが何か設定するとともに、対応する点検修理項目を関連付けておく。」という記述により、要点検修理FAQ(図3中に明示)と点検修理項目が関連することが明らかです。図3で(い)が要点検修理FAQとfで結ばれている配置から、(い)は点検修理項目と解します。
  1. (う)=案件
  • 根拠:「案件でEUへの回答に適用したFAQは、案件適用FAQとして案件に関連付け、可能性の高いFAQの順に可能性順位を記録する。」という記述があり、図3で(う)から下の網掛けdへ向かい、FAQも同じdへつながっていることから、dは案件とFAQを結ぶ「案件適用FAQ」を表します。したがって(う)は案件です。
以上で(あ)=製品シリーズ、(い)=点検修理項目、(う)=案件と決まります。
(b) 欠落しているリレーションシップ(図3の網掛けa〜fを関係スキーマとして完成する)
以下は各網掛け(a〜f)について、関係名(説明的名称)、属性、主キー、外部キー、および根拠を示します。主キー/外部キーは本文で明示します(主キーは下段の「主キー:」で、外部キーは「外部キー:」で示します)。
a. 製品シリーズユニット(製品シリーズとユニットの関連)
  • 属性:製品シリーズコード、ユニットコード
  • 主キー: 製品シリーズコード, ユニットコード(複合)
  • 外部キー: 製品シリーズコード → 製品シリーズ(製品シリーズコード)、ユニットコード → ユニット(ユニットコード)
  • 根拠:「製品シリーズごとに、用いているユニットを登録する。」を実現するための中間表(多対多を避けるための実装)です。
b. ユニット要管理機能部品(ユニットと要管理機能部品の関連)
  • 属性:ユニットコード、機能部品番号
  • 主キー: ユニットコード, 機能部品番号(複合)
  • 外部キー: ユニットコード → ユニット(ユニットコード)、機能部品番号 → 要管理機能部品(機能部品番号)
  • 根拠:「その機能部品を要管理機能部品として要管理内容を登録し、組み込んでいるユニットと関連付ける。」および「機能部品は、複数ユニット間で共通化を進めている。」から、ユニット⇔要管理機能部品は中間表で表します。
c. FAQ_KW(FAQとKWの関連)
  • 属性:FAQ番号、KW
  • 主キー: FAQ番号, KW(複合)
  • 外部キー: FAQ番号 → FAQ(FAQ番号)、KW → KW(KW)
  • 根拠:「FAQ中に存在するキーワードをあらかじめ登録し、FAQとその中で用いられるKWを関連付ける。」をそのまま関係スキーマ化したものです。
  • 注意点(サブタイプとの関係):「サブタイプが存在する場合、他のエンティティタイプとのリレーションシップは、スーパータイプ又はいずれかのサブタイプの適切な方との間に設定する。」という設計方針から、KWとFAQの関連はスーパータイプであるFAQに設定します。要点検修理FAQ(サブタイプ)はFAQをスーパータイプとして持つため、KWはFAQ側で扱えばサブタイプにも適用可能です。
d. 案件適用FAQ(案件に適用したFAQの記録)
  • 属性:案件番号、FAQ番号、可能性順位
  • 主キー: 案件番号, FAQ番号(複合)
  • 外部キー: 案件番号 → 案件(案件番号)、FAQ番号 → FAQ(FAQ番号)
  • 根拠:「案件でEUへの回答に適用したFAQは、案件適用FAQとして案件に関連付け、可能性の高いFAQの順に可能性順位を記録する。」に対応する関係です。可能性順位は属性として保持します。
e. 関連FAQ(FAQの自己参照的関連)
  • 属性:FAQ番号(関連元)、関連FAQ番号(関連先)、関連度ランク
  • 主キー: FAQ番号, 関連FAQ番号(複合)
  • 外部キー: FAQ番号 → FAQ(FAQ番号)、関連FAQ番号 → FAQ(FAQ番号)
  • 根拠:「類似するFAQを関連FAQとして関連付け、関連度合いをA〜Cの3段階に分けて関連度ランクとして設定する。」ので、FAQ同士を結ぶ自己参照の中間表を置き、両方ともFAQを参照します。図3でFAQからeへ二本の線が出ているのは、FAQが「関連元」「関連先」の二つの役割を持つためです。
f. 要点検修理FAQ_点検修理項目(要点検修理FAQと点検修理項目の関連)
  • 属性:FAQ番号、ユニットコード、MTコード
  • 主キー: FAQ番号, ユニットコード, MTコード(複合)
  • 外部キー: (FAQ番号, ユニットコード) → 要点検修理FAQ(FAQ番号, ユニットコード)、MTコード → 点検修理項目(MTコード)
  • 根拠:「要点検修理FAQには、対象のユニットが何か設定するとともに、対応する点検修理項目を関連付けておく。」とあるため、既に図4で要点検修理FAQが (FAQ番号, ユニットコード) をキーとして持つ構造になっていることに注意し、点検修理項目(MTコード)との関連はその複合キーを外部キーとして参照する中間表で表現します。これにより、ある要点検修理FAQ(特定のFAQと その対象ユニット)に対して複数の点検修理項目を関連付けられます。
以上で、図3の網掛けa〜fを関係スキーマとして完成させることができます。特に重要なのは、fにおいて要点検修理FAQ側の複合キー (FAQ番号, ユニットコード) を外部キーとして正しく参照する点です。

誤りやすいポイント

  • cとeを取り違える(cはFAQとKWの中間表、eはFAQ同士の自己参照(関連FAQ))。問題文の「FAQとその中で用いられるKWを関連付ける」と「類似するFAQを関連FAQとして関連付ける」を区別すること。
  • 要点検修理FAQのキー構成を見落とす(要点検修理FAQは図4で (FAQ番号, ユニットコード) を持つ)。fを作るときにFAQ番号 のみを参照してしまうとユニットとの関係を失う。
  • 案件適用FAQに「可能性順位」を入れ忘れる。問題文で順序を保存することが明記されている。
  • 関連FAQを単方向(ただの関連先のみ)で定義してしまうと、FAQが二つの役割を持つこと(関連元・関連先)を表現できない。設計ルール通り「役割の数だけ線を引く」ことを実装上反映する。
  • サブタイプの扱いを誤る(関係を不適切にサブタイプ側だけに作る)。設計方針の「スーパータイプ又はいずれかのサブタイプの適切な方との間に設定する」を踏まえる。

FAQ

Q: c(KWに関する網掛け)はなぜFAQ番号 とKWの二つを持つのですか?
A: 問題文に「FAQとその中で用いられるKWを関連付ける」とあるため、FAQとKWは多対多の可能性があり、多対多は直接使わない方針なので中間表を置きます。したがって属性はFAQ番号 とKWの複合キーになります。
Q: 要点検修理FAQはどう扱うべきですか?FAQ側にフラグがあるのでそれだけで十分では?
A: FAQには「要点検修理フラグ」があり、スーパータイプ側でサブタイプを識別できますが、図4で要点検修理FAQは (FAQ番号, ユニットコード) の別エンティティとして定義されています。サブタイプ固有の属性(ここではユニットコード)はサブタイプ側に持たせ、必要な関連(点検修理項目との関連)はサブタイプ側のキーを参照する中間表で表現します。
Q: 関連FAQの主キーは何にすべきですか?
A: 一般的には (FAQ番号, 関連FAQ番号) の複合主キーとし、関連度ランクを属性として持たせます。これにより一つのペアに対してランクが一意に定まります。

関連キーワード: 多対多の中間表、サブタイプ/スーパータイプ、自己参照リレーションシップ、外部キー制約、第3正規形

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

設問2:修正改善要望に関する概念データモデル及び関係スキーマについて答えよ。

問題文を見る
(2)図4中の(キ)~(シ)に入れる一つ又は複数の適切な属性名を補って関係スキーマを完成させよ。

模範解答

キ:製品シリーズコード、ユニットコード ク:ユニットコード、機能部品番号 ケ:FAQ番号、KW コ:案件番号、FAQ番号、可能性順位 サ:FAQ番号、関連FAQ番号、関連度ランク シ:FAQ番号、MTコード

解説

解答の論理構成

  1. ユニット関連
    • 【問題文】「製品シリーズごとに、用いているユニットを登録する」→「製品シリーズ」と「ユニット」は多対多。よって中間表(キ)に両方の主キー製品シリーズコード、ユニットコードを配置。
  2. 機能部品関連
    • 「機能部品を…ユニットと関連付ける」→多対多。「ユニット」「機能部品番号」を主キーとする中間表(ク)を作る。
  3. FAQと KW
    • 「FAQ…を登録し、FAQとその中で用いられるKWを関連付ける」→多対多。FAQの主キーFAQ番号とKWの主キーKWで(ケ)。
  4. FAQと案件
    • 「案件でEUへの回答に適用したFAQは、案件適用FAQとして案件に関連付け、可能性順位を記録する」→「案件」対「FAQ」が多対多で付加属性あり。主キー案件番号、FAQ番号+非キー属性「可能性順位」→(コ)。
  5. FAQの自己関連
    • 「類似するFAQを関連FAQとして関連付け、関連度ランクを設定」→FAQの自己多対多。自分と関連先を区別するためFAQ番号、関連FAQ番号を主キーとし「関連度ランク」を持つ(サ)。
  6. FAQと点検修理項目
    • 「要点検修理FAQ…対応する点検修理項目を関連付けておく」→多対多。FAQ側キーFAQ番号と点検修理項目のキーMTコードで(シ)。

誤りやすいポイント

  • FAQとKWを「カンマ区切りの列」で持たせてしまい第1正規形違反になる。
  • FAQ間自己関連で「FAQ番号」しか置かず重複を許してしまい主キーが欠落。
  • 「可能性順位」を主キーに含めてしまい、FAQを重複登録できなくなる。
  • 点検修理項目との関連を「要点検修理FAQ」の中に埋め込み、多値属性扱いにして正規化を崩す。

FAQ

Q: なぜ(コ)に「可能性順位」が必要なのですか?
A: 【問題文】「可能性の高いFAQの順に可能性順位を記録する」と明記されているため、案件とFAQの組に属する属性として保持します。
Q: FAQとKWの関係は1対多ではないのですか?
A: FAQ内には複数KWが含まれ、逆に同じKWが複数FAQで繰り返し使われるため多対多となります。
Q: FAQ自己関連で循環参照は問題になりませんか?
A: 主キーをFAQ番号、関連FAQ番号で定義すれば通常の外部キー制約で整合性を取れるので問題ありません。

関連キーワード: 第3正規形、多対多解消、中間テーブル、スーパータイプ、外部キー

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

戦国ITクイズ機能

\ せっかくなら /

データベーススペシャリストを
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

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

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