中小企業診断士 過去問
令和6年度(2024年)
問167 (経営情報システム 問7)
問題文
以下に示す表は、ある小売店が利用している受注管理表の一部である。この表を正規化した構造として、最も適切なものを下記の解答群から選べ。ただし、単価は商品コードによって一意に定まるものとする。

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
中小企業診断士試験 令和6年度(2024年) 問167(経営情報システム 問7) (訂正依頼・報告はこちら)
以下に示す表は、ある小売店が利用している受注管理表の一部である。この表を正規化した構造として、最も適切なものを下記の解答群から選べ。ただし、単価は商品コードによって一意に定まるものとする。

正解!素晴らしいです
残念...
この過去問の解説 (2件)
01
正規化に関する問題です。与件文で「正規化した構造として、最も適切なもの」「単価は商品コードによって一意に定まるものとする」という設定になっていることに注意してください。
正規化のプロセスは第3正規化までありますが、「単価は商品コードによって一意に定まり」「正規化した構造として、最も適切なもの」であれば第3正規化まで行なう必要はないことが分かれば、かけなくてもよい手間を省くことができます。
与件文に与えられている受注管理表の「商品コード」「受注数量」「単価」の項目には、1つのセル内に複数の値が含まれており、非正規形であることが分かります。
1つのセル内に含まれている複数の値を分離・独立させた状態を、第1正規形といいます。なお、値を分離・独立させただけでは何も値が含まれないセルが存在してしまうため、赤字で示したように値を追記しています。(下図参照)
続いて、第2正規化では第1正規形で重複しているデータを別の表に分離しますが、ここで与件文の設定「単価は商品コードによって一意に定まるものとする」を思い出してください。
「単価は商品コードによって一意に定まるものとする」とは、具体的には以下の状態をいいます。
商品コードAの単価は1000のみ、商品コードBの単価は2000のみ、商品コードCの単価は3000のみで、単価は商品コードによって一意に定まっており、「商品コード」「単価」の組み合わせが含まれる選択肢は3つに絞り込まれます。
「商品コード」「単価」以外の組み合わせについては、各選択肢で解説します。
左表は「受注番号」で紐づけると「受注日」「得意先コード」「合計金額」の組み合わせが一致しており、一意に定まっています。
(10001、2024-04-01、3011、13000の組み合わせは1つしかありません。※注意:3行あるので3つある=一意に定まっていない、という意味ではありません)
右表は「商品コード」で紐づけると「受注番号」「受注数量」の組み合わせで同じパターンがなく、一意に定まっています。
(10001、A、5の組み合わせは1つしかありません)
したがって、正解の選択肢となります。
3つの表とも、色を付けている部分が一意に定まっておらず、不適切な選択肢です。
左表は「受注番号」で紐づけると「受注日」「得意先コード」「合計金額」の組み合わせが一致しており、一意に定まっています。
(10001、2024-04-01、3011、13000の組み合わせは1つしかありません。※注意:3行あるので3つある=一意に定まっていない、という意味ではありません)
しかし、真ん中と右の表は色を付けている部分が一意に定まっていないため、不適切な選択肢です。
左表は「受注番号」で紐づけると「得意先コード」「合計金額」の組み合わせが一致しており、一意に定まっています。
(10001、3011、13000の組み合わせは1つしかありません。※注意:3行あるので3つある=一意に定まっていない、という意味ではありません)
しかし、真ん中と右の表は色を付けている部分が一意に定まっていないため、不適切な選択肢です。
(右の表は、受注番号10001と10002で受注日が重複しています)
いずれの表とも、色を付けている部分が一意に定まっておらず、不適切な選択肢です。
【補足】
「一意に定まる」という表現が分かりにくいかも知れません。一意に定まるとは「ある条件を満たすものが、1つだけ存在すること」という意味であり、ユニーク(unique)な状態であるともいえます。
各選択肢で一意に定まっていない正規形の表に色を付けていますが、色を付けている項目を外すと一意に定まります。
(正規化された表を横=行で見て、1つしかない組み合わせであるかどうかを確認する)
正規化は頻出論点のため、きちんと理解できることが求められますが、どうしても苦手意識が払拭できない方は正規化の手順をマスターすることは諦めて、過去問題の解答例から逆算して正解のパターンを覚えることで対応しても構いません。(あらゆる論点について、教わったとおりにマスターしなければ正答できないわけではありません)
参考になった数8
この解説の修正を提案する
02
本問は、受注管理データを適切に正規化する能力を問う問題です。問題文では「単価は商品コードによって一意に定まる」という重要な条件が示されています。この条件を踏まえて、最も適切な正規化構造を選ぶ必要があります。
正規化の基本的な考え方は、データの重複を排除し、更新時の不整合を防ぐことです。そのためには、データ間の依存関係を分析し、適切にテーブルを分割する必要があります。
元の受注管理表の構造
解説から推測すると、元の受注管理表は以下のような構造であったと考えられます:
受注番号
受注日
得意先コード
商品コード(複数の値を含む)
受注数量(複数の値を含む)
単価(複数の値を含む)
合計金額
例えば、受注番号10001の行には、商品コード欄に「A,B,C」、受注数量欄に「5,2,1」、単価欄に「1000,2000,3000」というように、複数の値がカンマ区切りで格納されています。これは非正規形の状態です。
この選択肢は正しいです。2つのテーブルに分割された構造になっています。
左側のテーブルは「受注テーブル」で、受注番号を主キーとして、受注日、得意先コード、合計金額が含まれています。例えば、受注番号10001に対して、受注日は2024-04-01、得意先コードは3011、合計金額は13000という一意の組み合わせが格納されています。
右側のテーブルは「受注明細テーブル」で、受注番号と商品コードの組み合わせを主キーとして、受注数量が含まれています。例えば、受注番号10001、商品コードAに対して、受注数量は5という具合です。
この構造は、「受注番号」で紐づけると「受注日」「得意先コード」「合計金額」の組み合わせが一意に定まり、また「商品コード」と「受注番号」の組み合わせで「受注数量」が一意に定まるため、適切に正規化されていると言えます。
この選択肢は誤りです。3つのテーブルに分割されていますが、いずれのテーブルも一意に定まっていない属性が含まれています。
正規化の基本原則として、テーブル内の非キー属性は主キーに完全に依存する必要があります。この選択肢では、その原則が守られていないため、不適切です。
この選択肢は誤りです。左側のテーブルは適切に正規化されていますが、中央と右側のテーブルには一意に定まらない属性が含まれています。
左表は「受注番号」を主キーとして、「受注日」「得意先コード」「合計金額」の組み合わせが一意に定まっていますが、他の表では主キーと非キー属性の間に完全な依存関係がありません。
この選択肢は誤りです。左側のテーブルは「受注番号」を主キーとして「得意先コード」「合計金額」の情報が一意に定まっていますが、中央と右側のテーブルには一意に定まらない属性が含まれています。
特に右側のテーブルでは、受注番号10001と10002で受注日が重複しており、主キーに完全に依存していません。
この選択肢は誤りです。すべてのテーブルにおいて、一意に定まらない属性が含まれています。
正規化の目的は、データの冗長性を排除し、更新時の不整合を防ぐことですが、この選択肢ではその目的が達成されていません。
本問の正解は選択肢1です。
データベース正規化の基本は、データの重複を排除し、一貫性を維持することです。正規化の第一段階は、繰り返しグループを排除することで、元の受注管理表の「商品コード」「受注数量」「単価」の項目を分離します。次の段階では、属性間の依存関係を分析し、適切なテーブル構造に分割します。
選択肢1は「受注テーブル」と「受注明細テーブル」の2つのテーブルに分割されており、それぞれのテーブル内で主キーに対して非キー属性が完全に依存する構造になっています。また、与えられた条件「単価は商品コードによって一意に定まる」を考慮すると、単価の情報は別のテーブル(商品マスタなど)で管理することが適切です。
正規化は、データベース設計の基本的かつ重要な概念です。適切に正規化されたデータベースは、データの整合性を保ちやすく、また拡張性や柔軟性も高まります。
参考になった数2
この解説の修正を提案する
前の問題(問166)へ
令和6年度(2024年) 問題一覧
次の問題(問168)へ