平成21年度 秋期 ITパスポート試験 問99 解説 データベースの表参照回数
問99 図2の請求書を発行するのに図1の4種類の表を参照する必要がある。1枚の請求書を発行するとき, 4種類のレコードのそれぞれを参照する回数の大小関係を示したものはどれか。 なお, 請求書の発行作業の時点で, 取引先コード, 名前, 部署名, 購入した商品ごとの商品コードと数量が分かっており, これらの値を使って各表を参照する。参照では, 主キーによって一つのレコードを取り出す操作を1回と数える。また, “商品表>販売単価表”という記述は, 商品表の方が販売単価表より表の参照回数が多いことを示している。
- ア 販売単価表 = 商品表 = 取引先担当者表 = 取引先
- イ 販売単価表 = 商品表 ≧ 取引先担当者表 = 取引先 ✓ 正答
- ウ 販売単価表 ≧ 商品表 ≧ 取引先担当者表 = 取引先
- エ 販売単価表 ≧ 商品表 ≧ 取引先担当者表 ≧ 取引先
解説
この問題は、1枚の請求書を発行する際に各マスタデータを何回読み込む必要があるかという「データの構造」を整理することで解くことができます。
データの性質による参照回数の違い
請求書の構成要素を考えると、各表の参照回数が自然と決まってきます。
- 請求書ヘッダ部分:1枚の請求書につき、取引先情報は1回、担当者情報も1回参照すれば確定します。つまり「取引先」と「取引先担当者表」の参照回数は1回で一定です。
- 請求書明細部分:請求書には複数の商品行が含まれることがあります。購入した商品がN種類ある場合、それぞれの商品の詳細情報を取得するために「商品表」をN回参照する必要があります。
- 紐付く単価情報:商品表から得られた情報をもとに、その商品の単価を特定するために「販売単価表」も同様にN回参照することになります。
以上のことから、明細の数に応じて参照回数が増える「商品表」と「販売単価表」は同じ回数(N回)になり、明細数にかかわらず1回で済む「取引先」や「取引先担当者表」よりも回数が多くなる(もしくは等しくなる)という関係が導かれます。
データベースと業務プロセスの理解
ITパスポートでこの問題が出題される背景には、データベースの正規化という概念があります。
リレーショナルデータベースでは、同じ情報を何度も重複させないためにデータを複数の表に分けて管理します。例えば、請求書に直接「商品名」や「単価」を書き込むのではなく、請求書データには「商品コード」だけを記録しておき、必要に応じて「商品表」を参照して商品名や単価を引き出す仕組みにします。
この設計によって、商品名が変わったときや価格改定があったときに、商品表だけを修正すればすべての過去データや未発行の請求書にも一括で変更が反映されるようになります。本問は、このデータベースの構造を利用して「システムがどのようにデータを読み込んでいるか」という処理の流れを可視化する能力を問うています。
システムの実務への応用
この問題の思考法は、プログラミングやシステム設計の現場で「パフォーマンスのボトルネック」を特定する際に不可欠です。
例えば、Webアプリケーションで多数の請求書を一度に生成する処理を書く場合、ループの中で何度もデータベースを参照しすぎると処理速度が極端に低下することがあります。明細行が多い請求書を何百枚も発行する際に、単価を取得するために毎回別々の表へ問い合わせを行っていると、それだけで数秒〜数十秒のタイムラグが発生します。
実務では、この問題のように「どのデータが何回参照されているか」を分析し、あらかじめメモリ上に必要なデータを読み込んでおくキャッシュの活用や、一度のSQL発行で複数の情報を取得する結合(JOIN)処理を設計することで、システムを高速化させます。この問題で学べる「データ参照の仕組み」は、単なる試験勉強にとどまらず、効率的なシステム運用を考えるための基礎的な視点となります。