平成22年度 秋期 ITパスポート試験 問79 解説 RDBのデータ追加順序
関係データベースで管理された“業者”表,“仕入明細”表及び“商品”表がある。新たな業者から新たな商品を仕入れた場合,表にデータを追加する順序のうち,適切なものはどれか。ここで,下線は主キーを示し,破線は外部キーを示す。解答群の→はデータを追加する表の順序を示す。
- ア “業者”表 → “仕入明細”表 → “商品”表
- イ “業者”表 → “商品”表 → “仕入明細”表 ✓ 正答
- ウ “仕入明細”表 → “商品”表 → “業者”表
- エ “商品”表 → “業者”表 → “仕入明細”表
解説
この問題は、テーブル間の親子関係を理解し、親から先にデータを追加するというルールに従うことで正解できます。「親」とは、他のテーブルから参照されているテーブルのことです。
参照整合性とデータの追加順序
関係データベース(RDB)では、データの整合性を保つために、あるテーブルのデータが別のテーブルのデータを参照する仕組みがあります。このルールを「参照整合性」と呼びます。
例えば、仕入明細テーブルに「商品コード」があっても、その商品が商品テーブルに登録されていなければ、何の商品を仕入れたのか特定できません。そのため、商品テーブル(親)にデータを登録した後に、仕入明細テーブル(子)にデータを追加する必要があります。
この問題では、以下のような依存関係が読み取れます。
- 業者テーブルの「業者コード」は、商品テーブルから参照されています。
- 商品テーブルの「商品コード」は、仕入明細テーブルから参照されています。
この構造を整理すると、「業者」が親、「商品」が子(かつ孫に対する親)、「仕入明細」が孫という関係になります。データは「親から子へ」の順で追加しなければならないため、業者 → 商品 → 仕入明細の順序となります。
データの依存関係を見抜く思考プロセス
まず、各テーブルの主キー(下線)と外部キー(破線)の関係を確認します。
- 業者テーブル: 業者コードが主キーです。
- 商品テーブル: 商品コードが主キーで、業者コードが外部キーです。つまり、このテーブルは業者テーブルを参照しています。
- 仕入明細テーブル: 商品コードが外部キーです。つまり、このテーブルは商品テーブルを参照しています。
新たな業者から新たな商品を仕入れる際、まず「その業者は誰か」をシステムが知る必要があるため、業者テーブルへの登録が最初のステップとなります。次に、その業者から仕入れる「その商品」を定義するために商品テーブルへ登録します。最後に、どの商品が何個仕入れられたかという明細情報を仕入明細テーブルに記録します。
もし、この順序を逆にしようとすると、システムは「まだ存在しない業者コードを持つ商品」や「まだ存在しない商品コードを持つ明細」を登録することになり、データベース管理システム(DBMS)からエラーを返されてしまいます。
システム開発におけるデータの整合性
この知識は、実際のシステム開発において「データの登録順序」を設計する際に不可欠です。例えば、ECサイトで会員が注文を行う場合、まず会員情報が存在し、次に商品情報が存在し、その後に注文明細が作成されるという流れになります。
プログラミングでデータベースを操作する際、データの登録順序を誤るとシステムが正しく動作しません。また、逆にデータを削除する際は、子テーブル(仕入明細)を先に消して、最後に親テーブル(業者)を消すという逆の順序が必要になることも覚えておくと、応用が利くようになります。