【システム開発技術】異なる2つの世界を繋ぐ架け橋!「O/Rマッピング」|情報処理問題1000本ノック
プログラム側の「オブジェクト」と、データベース側の「表」。設計思想が全く異なるこの2つのデータを、綺麗に自動翻訳して紐付けるシステム開発の必須技術「O/Rマッピング」を攻略しましょう。
1. 【 問題 】:システム開発・データベース(データマッピング技術)
【 問題 】 オブジェクト指向プログラミング言語を用いて開発したアプリケーションにおいて、プログラム内の「オブジェクト」が持つデータ構造を、リレーショナルデータベース(RDB)の「表(テーブル)」のレコード(行)へと相互に格納・変換するために行う、データ構造の紐付け(マッピング)技術を何と呼ぶでしょうか?
(ア) O/Rマッピング(Object-Relational Mapping)
(イ) リレーショナルマッピング
(ウ) オブジェクトマッピング
(エ) データインテグレーションマッピング
2. 正解:
正解: (ア) O/Rマッピング
3. 解説:「オブジェクトの1個」を「テーブルの1行」へ自動翻訳する
O/Rマッピング(Object-Relational Mapping:オーアールマッピング)は、オブジェクト指向の「O(Object)」と、リレーショナルデータベースの「R(Relational)」を繋ぐ技術です。
プログラミングの世界では、データは「クラス」という設計図から生まれた「オブジェクト(インスタンス)」として扱われますが、RDBの世界ではデータは「表の行(レコード)」として管理されます。この両者のデータの形状をルール化し、プログラム側でオブジェクトを操作するだけで、裏側で自動的にRDBのデータが保存・更新・抽出されるようにする仕組み(フレームワーク)を指します。
| オブジェクト指向(プログラム)側の概念 | 左右の対応 | リレーショナルデータベース(RDB)側の概念 |
|---|---|---|
| クラス(データの設計図・型) | ← 対応 → | テーブル(表の構造) |
| オブジェクト(具体的なデータの実体) | ← 対応 → | レコード(表の中の1行のデータ) |
| プロパティ/属性(オブジェクトが持つ変数) | ← 対応 → | カラム/フィールド(表の列) |
1. 理解のコツ: 「英語圏の人と日本語圏の人の共同作業」に例えてみましょう。
・プログラムくんは「英語(オブジェクト言語)」しか話せず、データベースくんは「日本語(SQL文やテーブル構造)」しか理解できません。プログラムくんがデータを保存したいとき、いちいち自分で日本語に翻訳して「INSERT INTO...」と命令文を書くのは非常に骨が折れます。
・そこで、優秀な自動翻訳機であるO/Rマッピングを間に挟みます。これがあると、プログラムくんが自分の言葉で「このオブジェクト(データ)を保存して!」と頼むだけで、O/Rマッピングが勝手にRDBに最適な「表の行データ(SQL)」へと自動変換して格納してくれます。この思想のズレを解消する仕組みがO/Rマッピングです。
2. 試験対策の視点: システム設計やアプリケーション開発技術の分野において、データの永続化(保存)に関する問題として頻出します。問題文の中に「オブジェクト指向(プログラム)」「RDB(表/リレーショナルデータベース)への格納」「マッピング(紐付け)」というキーワードの組み合わせがあれば、迷わずO/Rマッピングを選択してください。
また、もう一歩踏み込んだ応用知識として、オブジェクト指向とRDBの間にある「構造や概念の根本的なズレ・不一致」のことを「インピーダンスミスマッチ」と呼び、O/Rマッピングはこのインピーダンスミスマッチを解決するための手段である、という文脈もよく出題されます。この用語もセットで覚えておくことで、より深い設問にも対応できるようになります。
4. まとめ
「オブジェクト指向言語で扱う『オブジェクト』と、リレーショナルデータベース(RDB)が扱う『表(テーブル)』を相互に自動変換して対応付ける技術」。これがO/Rマッピングです。現代のシステム開発において生産性を高めるための必須技術として、その役割と対応関係(オブジェクト=レコード)をしっかりと記憶しておきましょう!