DBデータベーススペシャリスト試験 午後Ⅰ
平成22年度春期 データベーススペシャリスト 午後Ⅰ 問2
事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。
問題








解き方のヒントを見る
変更前後の整合性を追う視点
表の設計や制約の変更を読むときは、個々の用語を暗記するより、変更によってデータの意味と整合性を保つ仕組みがどう影響を受けるかを順に確認し、全体のつながりを整理しましょう。
この問題で問われていること
特に、変更の対象と、それが既存データ・関連する表・今後の登録条件に及ぼす影響を区別し、変更後も同じ目的と整合性を保てるかという観点だけに集中して考えてください。
視点
設計変更を検討するときは、変更箇所だけを切り離して見るのではなく、データの意味、他の情報とのつながり、利用時の前提が変わらないかを順に整理します。
確認ポイント
- 変更によって、既に保存されている情報の意味や扱いに不整合が生じないか
- 関連する情報とのつながりが、変更後も同じ目的に沿って保たれるか
- 新しく登録・更新する場面で、意図しない状態を防ぐ前提が崩れていないか
正解と解説を見る
解説
クレジットカード業務の会員登録、契約、カード利用、請求を題材に、業務ルールを関係データベースへ反映する方法を問う問題です。既存設計のキーや列の意味を読み取り、制約を決定表で整理し、制度変更によるテーブル改修まで考えます。
問題の全体像
B社のクレジットカード業務では、会員、契約、カード、カード利用履歴、請求、請求利用明細を関係付けて管理しています。設問1は図2のテーブル構造から導出項目、列の意味、候補キーを読み取る問題です。設問2は会員種別や職業に応じたNULL不可項目を表で管理する方法と、利用区分・支払区分ごとの利用可能額の判定を問います。設問3は、家族カードの複数登録や分割払いの追加という業務変更を、既存テーブルの列変更だけで表現する問題です。出題趣旨・採点講評では、業務ルールや制約をデータベース設計へ反映し、変更による影響を分析する力が重視されています。
設問1(1)
図1の請求情報と、図2の請求テーブルを対応させます。請求金額合計などは請求利用明細から集計でき、契約者の住所や氏名も他のテーブルから求められるため、列として持ちません。一方、図1の支払明細には、ショッピングリボとキャッシングリボについて前回支払後残高が必要です。したがって、公式解答例では「SHリボ前回支払後残高,CAリボ前回支払後残高」としています。
設問1(2)
同じ「会員番号」という列名でも、参照している業務上の対象を区別します。契約は本会員と結ぶため、契約テーブルの会員番号は本会員の番号に限られます。一方、カードは本会員カードにも家族カードにも発行されるため、カードテーブルの会員番号は本会員・家族会員を含む全会員の番号です。公式解答例の趣旨を60字以内で簡潔に対比します。
設問1(3)
請求利用明細は、契約単位の請求に含まれる利用明細を管理します。本文では利用区分ごとに利用明細番号を付けるため、「契約番号,支払年月日,利用区分,利用明細番号」で一意に識別できます。また、カード利用履歴側の「カード番号,利用履歴番号」と請求の支払年月日を組み合わせても一意になります。公式解答例はこの二つを候補キーとして挙げています。
設問2(1)
NULL不可かどうかは、会員区分や職業区分によって項目ごとに変わります。例えば、家族会員だけに家族番号や続柄が必要で、本会員の職業によって勤務先や学校名などの必須項目が変わります。そのため、会員列ごとに固定のNOT NULL制約を置かず、どの条件でどの列を必須とするかを行として管理します。公式解答例では、行を識別する「一連番号」と、対象を表す「会員列名称,会員区分,職業区分」を示しています。列や職業区分の追加にも、項目チェック表の行追加で対応できます。
設問2(2)(c)
決定表のcの行は、利用区分2、つまりキャッシングの場合にだけ判定されています。本文では利用金額が、利用区分に対応するCR枠からCR残高を引いた範囲内であることを確認します。したがって、CAについての利用可能額である「CA枠-CA残高」となります。
設問2(2)(d)
決定表のdの行は、ショッピングの支払区分2及び3で判定されています。表3では、SHの2回払いとボーナス1回払いを合計してS2残高として管理し、対応する上限をS2枠としています。よって、dは「S2枠-S2残高」です。
設問2(2)(e)
決定表のeの行は、利用区分2かつ支払区分1、すなわちキャッシングの1回払いに対応します。表3ではこの残高をC1残高、上限をC1枠として管理しています。したがって、eは「C1枠-C1残高」です。決定表のY・Nの並びを、表2・表3の管理単位と照合することがポイントです。
設問3(1)(a)
会員登録方法を改善しても、会員テーブルには家族番号と続柄が一組しかありません。本文の図3のように、同一人物が複数の本会員に対する家族カードを持つ場合、一つの会員レコードに複数の家族関係を全て登録できません。公式解答例では、会員テーブルについて「複数の家族会員がいたとき,家族番号と続柄を全員分登録できない」としています。35字以内では、テーブル名とこの不具合の因果関係を簡潔に書きます。
設問3(1)(b)
家族番号と続柄は、会員本人に固定された属性ではなく、どの本会員に対して発行された家族カードかによって決まる情報です。したがって、会員テーブルの「家族番号,続柄」を削除し、カードテーブルに同じ列を追加します。これにより、同一会員が複数の家族カードを持つ場合でも、カードごとの家族関係を保持できます。公式解答例もこの変更を示しています。
設問3(2)
分割払いでは、元の利用に設定された分割回数と、各請求時に今回が何回目かを区別して管理する必要があります。そのため、カード利用履歴には利用時点の契約条件として「分割回数」を追加します。請求利用明細には請求ごとの「今回回数」と、その回数分として請求する「今回請求金額」を追加します。公式解答例ではこの三つの列を挙げています。
学習のポイント
業務上の事実を、データの管理単位・キー・制約・変更影響へ変換する力を養います。
出典:独立行政法人 情報処理推進機構(IPA)平成22年度春期 データベーススペシャリスト試験 午後Ⅰ 問2(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針