ITパスポート試験 / 平成22年度 秋期 ITパスポート試験 / 問79
certification-simodake-work

平成22年度 秋期 ITパスポート試験 問79 解説 RDBのデータ追加順序

設問図

関係データベースで管理された“業者”表,“仕入明細”表及び“商品”表がある。新たな業者から新たな商品を仕入れた場合,表にデータを追加する順序のうち,適切なものはどれか。ここで,下線は主キーを示し,破線は外部キーを示す。解答群の→はデータを追加する表の順序を示す。

  1. ア “業者”表 → “仕入明細”表 → “商品”表
  2. イ “業者”表 → “商品”表 → “仕入明細”表 ✓ 正答
  3. ウ “仕入明細”表 → “商品”表 → “業者”表
  4. エ “商品”表 → “業者”表 → “仕入明細”表

解説

この問題は、テーブル間の親子関係を理解し、親から先にデータを追加するというルールに従うことで正解できます。「親」とは、他のテーブルから参照されているテーブルのことです。

参照整合性とデータの追加順序

関係データベース(RDB)では、データの整合性を保つために、あるテーブルのデータが別のテーブルのデータを参照する仕組みがあります。このルールを「参照整合性」と呼びます。

例えば、仕入明細テーブルに「商品コード」があっても、その商品が商品テーブルに登録されていなければ、何の商品を仕入れたのか特定できません。そのため、商品テーブル(親)にデータを登録した後に、仕入明細テーブル(子)にデータを追加する必要があります。

この問題では、以下のような依存関係が読み取れます。

  1. 業者テーブルの「業者コード」は、商品テーブルから参照されています。
  2. 商品テーブルの「商品コード」は、仕入明細テーブルから参照されています。

この構造を整理すると、「業者」が親、「商品」が子(かつ孫に対する親)、「仕入明細」が孫という関係になります。データは「親から子へ」の順で追加しなければならないため、業者 → 商品 → 仕入明細の順序となります。

データの依存関係を見抜く思考プロセス

まず、各テーブルの主キー(下線)と外部キー(破線)の関係を確認します。

  • 業者テーブル: 業者コードが主キーです。
  • 商品テーブル: 商品コードが主キーで、業者コードが外部キーです。つまり、このテーブルは業者テーブルを参照しています。
  • 仕入明細テーブル: 商品コードが外部キーです。つまり、このテーブルは商品テーブルを参照しています。

新たな業者から新たな商品を仕入れる際、まず「その業者は誰か」をシステムが知る必要があるため、業者テーブルへの登録が最初のステップとなります。次に、その業者から仕入れる「その商品」を定義するために商品テーブルへ登録します。最後に、どの商品が何個仕入れられたかという明細情報を仕入明細テーブルに記録します。

もし、この順序を逆にしようとすると、システムは「まだ存在しない業者コードを持つ商品」や「まだ存在しない商品コードを持つ明細」を登録することになり、データベース管理システム(DBMS)からエラーを返されてしまいます。

システム開発におけるデータの整合性

この知識は、実際のシステム開発において「データの登録順序」を設計する際に不可欠です。例えば、ECサイトで会員が注文を行う場合、まず会員情報が存在し、次に商品情報が存在し、その後に注文明細が作成されるという流れになります。

プログラミングでデータベースを操作する際、データの登録順序を誤るとシステムが正しく動作しません。また、逆にデータを削除する際は、子テーブル(仕入明細)を先に消して、最後に親テーブル(業者)を消すという逆の順序が必要になることも覚えておくと、応用が利くようになります。

参考リンク

学習の記録にははてなブックマーク!

気づいたこと・覚えたことをコメントにメモしよう