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





解き方のヒントを見る
項目どうしの決定関係を確かめる
データベース設計の設問では、ある項目の値が決まると他のどの項目の値が決まるのかという関係を、業務上の意味に照らして一つずつ確かめることが検討の出発点になります。記述された業務ルールと項目の対応を丁寧に読み取りましょう。
この問題で問われていること
問われているのは、各項目がどの項目の組合せによって一意に定まるかを業務の約束事から読み解けるかどうかです。値の出現例だけで判断せず、ルールとして常に成り立つ関係かを見極める視点が問われます。
視点
表の分け方、行を識別する項目、項目の値に課す条件は、どれも「どの項目の値が決まれば、別の項目の値が決まるのか」という関係の捉え方に左右されます。この関係は、たまたま手元にあるデータの並びから決まるものではありません。業務の約束事として常に成り立つかどうかで判断します。まず業務の説明から、何が何を決めるのかを自分の言葉で書き出してください。そのうえで、問われている内容と照らし合わせる進め方が有効です。
確認ポイント
- 業務の説明の中で、ある項目の値が決まれば別の項目の値も決まると読み取れる記述を拾い出したか
- その関係が一時的な例ではなく、業務ルールとして常に成り立つものかを確かめたか
- 書き出した関係と問われている内容を突き合わせ、根拠を業務の記述に戻って説明できるか
正解と解説を見る
解説
部品製造業者J社の生産管理システムについて、L君が設計したテーブルをK部長の指摘に沿って見直す問題です。問われているのは、顧客担当テーブルの第3正規形への分割、顧客仕様製品テーブルの主キー選定(NULLになり得る候補キーを避ける)、部品構成の日付とLTの間の制約の整理、部品テーブルの部品・製品・調達品への再設計、部品区分フラグの意味付けです。いずれも本文の業務ルールから関数従属性・多重度・日付の大小関係を読み取れば、公式解答例の内容を導けます。
問題の全体像
J社は部品製造業者で、部品を階層構造で管理しています。部品は三つの観点で区分されます(調達品か製造品か、製品かどうか、顧客仕様部品かどうか)。リードタイムには製造LT・調達LT・全階層LTがあり、部品構成表では構成適用期間が管理されます。L君が作った図2のテーブルに対して、K部長は四つの指摘をしました。①主キー・外部キーの未設定、②顧客担当テーブルを第3正規形にすべき、③部品構成の日付制約の整理、④部品テーブルの主キー設定の誤り、です。出題趣旨によると、この問題のねらいは項目数の多い業務でデータ項目を整理する能力を問うことです。具体的には、正規化によるテーブル分割、区分列の追加によるサブタイプの識別、データ項目間の制約の分析とテーブル設計への織り込みが問われています。
設問1(1)
本文2.(2)に注目します。1顧客には1人の営業担当者が割り当てられますが、担当者は変わることがあり、過去の担当者も特定する必要があります。さらに、同じ担当者が再び同じ顧客を担当することもあります。そのため、顧客担当テーブルの1行は「ある顧客のある担当期間」を表し、{顧客番号、 顧客担当開始日}が候補キーになります(担当社員番号は再担当があるため識別に使えません)。一方、顧客名は顧客番号だけで決まります。公式解答例では、非キー列の顧客名が候補キー{顧客番号、 顧客担当開始日}の一部である顧客番号に部分関数従属するため、としています。答案には「候補キーの具体的な列」「部分関数従属する非キー列」「従属先の顧客番号」の三要素を60字以内で入れます。
設問1(2)
まず、顧客番号だけで決まる列(顧客名、企業コード、顧客取引開始日、顧客取引終了日)を顧客テーブルに分けます。本文2.(1)にあるとおり、取引の開始・終了は顧客単位で管理され、取引を再開すると新しい顧客番号が付与されるためです。次に、企業名は顧客番号→企業コード→企業名という推移的関数従属になるので、企業テーブルに分けます。公式解答例の構成は次のとおりです。顧客(顧客番号、 顧客名、 企業コード、 顧客取引開始日、 顧客取引終了日)の主キーは顧客番号で、企業コードは企業テーブルを参照する外部キーです。企業(企業コード、 企業名)の主キーは企業コードです。顧客担当(顧客番号、 顧客担当開始日、 顧客担当終了日、 担当社員番号)の主キーは{顧客番号、 顧客担当開始日}で、担当社員番号は図2の社員テーブルの主キーである社員番号を参照する外部キーです。営業担当者は社員なので、指摘事項①にある外部キーの設定もここで満たします。なお、主キーの一部である顧客番号は顧客テーブルの顧客番号に対応し、顧客担当の各行がどの顧客のものかを示しています。新しいテーブル名には、本文の用語「顧客」「企業」を使います。
設問1(3)(a)
本文3.によると、顧客仕様製品を登録すると、対応する部品番号がシステムで一意な値として自動採番されます。一方、顧客仕様製品コードは顧客ごとに一意なので、{顧客番号、 顧客仕様製品コード}ももう一つの候補キーです。しかし、この顧客仕様製品コードは登録時に未定(NULL)の場合があります。登録時点で必ず値が決まるのは部品番号だけです。公式解答例でも主キーは部品番号です。
設問1(3)(b)
本文3.には、受注時に顧客仕様製品名と顧客仕様製品コードが未定の場合はNULLのまま登録する、とあります。主キーを構成する列はNULLにできないので、{顧客番号、 顧客仕様製品コード}は主キーに向きません。公式解答例では、候補キーである顧客番号・顧客仕様製品コードのうち顧客仕様製品コードが空値のまま登録される場合があるから、としています。答案には「候補キーを具体的に示すこと」と「顧客仕様製品コードがNULLで登録され得ること」の二点を60字以内で入れます。
設問2(1)
本文1.(5)(b)に注目します。部品手配開始日は、構成適用開始日に子部品をそろえられるよう手配する日です。また、全階層LTはすべての子部品をそろえる期間に組立期間を加えたもので、子部品を種類ごと変更する場合は、変更後の子部品をゼロからそろえる必要があります。さらに、本文1.(3)によると部品は製造・調達した日の翌日から使用可能です。そのため、手配開始から全階層LTちょうどでは間に合わず、差が全階層LTより大きい必要があります。公式解答例では、変更後の子部品の構成適用開始日から部品手配開始日を引いた日数が全階層LTよりも大きいこと、としています。答案には「構成適用開始日−部品手配開始日」と「全階層LTより大きい」という不等式を50字以内で書きます。
設問2(2)
親部品を新規に製造する場合を考えます。部品構成表の構成適用開始日は、子部品を使い始める日、つまり子部品がそろって親部品の組立を始められる日です。製造LTは、子部品がすべてそろった状態での親部品の組立期間です(本文1.(2)(a))。親部品は製造した日の翌日から使用可能なので、親部品の部品使用開始日から製造LTをさかのぼった日付は、構成適用開始日より後である必要があります。公式解答例では、親部品の部品使用開始日から製造LTを引いた日付が、新規作成された部品構成表の構成適用開始日よりも後であること、としています。答案では、比較する二つの日付と「後である」という大小関係を60字以内で明確にします。
設問3(1)
図2の部品テーブルは部品番号だけを主キーにしていますが、本文には二つの1対多の関係があります。一つ目は、1部品に複数の製品番号を付与する場合があること(本文1.(4))です。そのため、製品番号・製品名・製品仕様・部品販売開始日・部品販売終了日は製品番号で決まります。二つ目は、同じ調達品を複数の調達先から仕入れ、調達LTは調達先ごとに設定されること(本文1.(1)(a)、1.(2)(a))です。そのため、調達LTは{部品番号、 調達先コード}で決まります。公式解答例の構成は次のとおりです。部品(部品番号、 部品名、 部品使用開始日、 部品使用終了日、 部品仕様、 製造LT、 全階層LT)の主キーは部品番号です。製品(製品番号、 製品名、 部品販売開始日、 部品販売終了日、 製品仕様、 部品番号)の主キーは製品番号で、部品番号は部品テーブルを参照する外部キーです。調達品(部品番号、 調達先コード、 調達LT)の主キーは{部品番号、 調達先コード}です。この主キーの構成列のうち、部品番号は部品テーブルを参照し、調達先コードは図2の調達先テーブルの主キーである調達先コードを参照する外部キーでもあります。つまり、調達品テーブルは部品と調達先の多対多の関係を表す連関のテーブルで、調達LTはその組合せの属性です。テーブル名には本文の用語「製品」「調達品」を使います。
設問3(2)
表3では、組合せ1・2(部品区分1=Y、部品区分2=Y)だけが「部品無」です。本文1.(1)(b)に「製造品だけが製品として販売され、調達品はそのまま製品として販売されることはない」とあるので、区分1=製品、区分2=調達品と対応させると矛盾がありません。組合せ3(Y、 N、 Y)が顧客仕様製品を表すという条件は、製品であり、製造品であり、顧客仕様部品であるという意味になり、本文1.(1)(c)と一致します。公式解答例では、部品区分1はYが製品・Nが製品以外、部品区分2はYが調達品・Nが製造品、部品区分3はYが顧客仕様部品・Nが顧客仕様部品以外です。本文の用語をそのまま使って答えるのがポイントです。
学習のポイント
本文の業務ルールから関数従属性と多重度を読み取り、正規化とキー設定に結び付ける力が必要です。あわせて、LTと日付の制約を不等式として正確に表現する練習をしましょう。
出典:独立行政法人 情報処理推進機構(IPA)平成21年度春期 データベーススペシャリスト試験 午後Ⅰ 問2(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針