Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Database (データベース)

インピーダンスミスマッチとは?を分かりやすく説明

投稿日:2021年5月25日 更新日:

<目次>

(1) インピーダンスミスマッチとは?を分かりやすく説明
 (1-1) 概要
 (1-2) 具体例

(1) インピーダンスミスマッチとは?を分かりやすく説明

(1-1) 概要

「インピーダンスミスマッチ」というのは「オブジェクト指向言語(※注1)」と「リレーショナルデータベース(※注2)」との間の構造のギャップの事です。

(図111)

(※注1)
オブジェクト指向言語はソフトウェア開発の手法で、「オブジェクト」と呼ばれるデータ(変数、プロパティ)と手続き(関数、メソッド)を一体化した基本単位をベースに、様々な役割を持ったオブジェクトが相互にやり取りする事でアプリケーションの処理を行うスタイルです。
 
オブジェクトは現実世界の物体と似ていて、例えば「車」には「トヨタ」や「日産」や「ホンダ」など様々ありますが、オブジェクト指向でも「車」オブジェクトを作り、それを「継承」した「トヨタ」オブジェクトや「日産」オブジェクトなどを定義するような形となり、人間が直感的に理解しやすい構造になっています。
 
(※注2)
「リレーショナルデータベース」はデータベースの一種で、データを行と列を持つ表形式にして保持するデータベースです。表同士の情報が関連しあって結合する事が出来る事から「リレーショナル」と呼ばれています。
 

(1-2) 具体例

例えばフルーツを例に考えてみると、オブジェクト指向では「Fruitsクラス」は次のように表せます。

(サンプルクラス)

public class Fruits {

    private String name;
    private int price;
    private String origin;

    Fruits(String name,int price,String origin){
        this.name = name;
        this.price = price;
        this.origin = origin;
    }

    public void setName(String name) {this.name = name;}
    public void setPrice(int price) {this.price = price;}
    public void setOrigin(String origin) {this.origin = origin;}

    public String getName() {return this.name;}
    public int getPrice() {return this.price;}
    public String getOrigin() {return this.origin;}

}

(図121)Fruitsクラス
 
一方リレーショナルデータベースにおいて「フルーツ」を表す次のようなテーブルがあるとします。
(※カラムの列数とか若干不一致ですが、あくまでイメージです)
 
(図122)

項目的には、テーブルもクラスも同じ「名前」「価格」「原産地」等の項目を持っていますが、実際にデータベース⇒クラス(あるいはその逆)にデータを受け渡しするには、逐一データをマッピングする必要があり、簡単ではあるものの、非常に手間のかかる非効率な受け渡しになってしまいます。
 
例えば、JavaとOracleDBの組み合わせの例ですと、JDBCドライバを使ってConnection⇒Statement⇒ResultSetと生成していき、ResultSetからwhile文等で各カラムの値を取り出し、それをクラスのメンバ変数にマッピング・・・と行っていくのは単純な作業ですが、非常に手間が掛かります。
 
(図123)
 
このような不一致(ギャップ)がインピーダンスミスマッチになります。
 

Adsense審査用広告コード


Adsense審査用広告コード


-Database (データベース)

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

システム開発におけるデータモデリングの方法とER図描画ツール紹介

(0)目次&概説 (1) 項目を洗い出す  (1-1) 現行システムが存在する場合  (1-2) 新規システムを開発する場合 (2) エンティティを定義する  (2-1) エンティティの作成  (2- …

SQLでCASE文の結果をWHERE句に指定する方法およびコスト面の考察

本記事では、 ・SQLでCASE文の結果をWHERE句に指定する方法について記述します。 ・CASE文を使う場合のコストについて考察します。 (0)目次&概説 (1) NG例 (2) OK例&解説 ( …

データベースのテーブル定義の検討ポイント及びカラムのデータ型や桁数・バイト数について

(0)目次&概説 (1) テーブル定義の検討項目 (2) データ型について  (2-1) char  (2-2) nchar  (2-3) varchar  (2-4) nvarchar (3) 桁数 …

  • English (United States)
  • 日本語
Top