問題
問94
商品の仕入状況を管理している関係データベースの“仕入一覧”表を正規化して、“仕入”表と“商品”表に分割したい。分割後の二つの表に共通して必要なフィールドとして、最も適切なものはどれか。ここで、仕入れは一度に一つの商品だけを仕入れることとし、仕入番号で一意に識別できる。また、商品は商品番号で一意に識別できる。

- 仕入番号
- 支払方法
- 商品番号
- 商品名
[出典:ITパスポート試験 平成28年度春期 問94]
正解
正解は「ウ」です。
解説
リレーショナルデータベースの正規化とは、データの重複をなくし、整合性を保ち、効率よくデータを管理するためのプロセスです。問題文にある「仕入一覧」表を「仕入」表と「商品」表に分割(正規化)する場合、二つの表が関連付けられる共通の項目(フィールド)が必要となります。 「仕入」表は、いつ、どの商品を、いくつ、いくらで仕入れたか、支払方法、納品日といった仕入れの具体的な情報を管理するものです。ここには「仕入番号」で仕入れを一意に識別できるとあります。
一方、「商品」表は、商品の名前、単価、商品番号といった、商品そのものの情報を管理するものです。ここでは「商品番号」で商品を一意に識別できるとあります。 「仕入一覧」表には「商品番号」と「商品名」が含まれていますが、「商品名」は「商品番号」によって決まる情報(関数従属関係にある)です。
正規化の原則として、商品の詳細情報(商品名など)は「商品」表に移動させ、「仕入」表には「商品」表と関連付けるためのキーとなる「商品番号」だけを残すのが適切です。 したがって、「仕入」表と「商品」表を関連付ける共通のフィールドは「商品番号」になります。
例えば、スーパーで牛乳(商品番号101)とパン(商品番号102)を仕入れた場合、「仕入」表には「仕入番号」と「商品番号」(101と102)が記録され、「商品」表には「商品番号」(101)と「商品名」(牛乳)、「商品番号」(102)と「商品名」(パン)が記録されるイメージです。
ア(仕入番号):
仕入番号は「仕入」表を一意に識別するための項目であり、「商品」表とは直接関連しません。
イ(支払方法):
支払方法は仕入れに関する情報であり、「仕入」表に含まれるべきですが、「商品」そのものの情報ではないため、「商品」表とは共通になりません。
エ(商品名):
商品名は「商品番号」によって一意に決まる情報であり、正規化の際には「商品」表にのみ持たせるべきです。「仕入」表と「商品」表を関連付ける共通のキーとしては「商品番号」が適切です。
難易度
この問題はデータベースの正規化に関する基本的な理解を問うものです。正規化の概念や、主キー・外部キーの関係を理解していれば比較的容易に解答できます。しかし、正規化の目的や具体的な手順について知識がないと、どのフィールドが共通のキーとして適切か判断が難しいかもしれません。初心者にとっては、データベースの概念を学ぶ上での重要なポイントとなるでしょう。
用語補足
正規化:
データベースにおいて、データの冗長性(重複)を排除し、データの整合性を保ち、データ更新時の不整合を防ぐためのプロセスです。例えば、顧客情報と注文情報が混在した表を、顧客表と注文表に分けることで、顧客の名前や住所が変更されたときに、複数の箇所を更新する必要がなくなり、データの誤りを減らせます。
関係データベース:
データをテーブル(表)の形式で管理し、テーブル間の関係を関連付けることで、柔軟にデータを扱えるデータベースの種類です。例えば、社員情報テーブルと部署情報テーブルを部署IDで関連付けることで、社員の所属部署を簡単に参照・管理できます。
フィールド:
データベースのテーブルにおける列のことで、各レコードが持つ属性を表します。例えば、顧客テーブルであれば「顧客ID」「氏名」「住所」などがフィールドです。
主キー:
データベースのテーブルにおいて、レコードを一意に識別するためのフィールド(またはフィールドの組み合わせ)です。同じ値を持つレコードが存在しないため、特定のデータを正確に検索したり、他のテーブルと関連付けたりする際に使われます。例えば、社員テーブルの「社員番号」は、各社員を唯一特定できるため主キーとして使われます。
対策
この問題は、データベースの正規化の基本的な考え方を理解しているかが問われます。特に、どの情報がどのエンティティ(実体)に属し、どのフィールドがエンティティ間の関連付けに必要かを明確にすることが重要です。第一正規形から第三正規形までの正規化の各段階の目的と、主キー・外部キーの役割をしっかりと学習し、実践的な問題演習を重ねることで、応用力が身につきます。

