CodeZine(コードジン)

特集ページ一覧

PHPのMDB2_Schemaを使ってデータベーススキーマをXMLベースで管理する

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/11/06 14:00

 PEAR(PHP Extension and Application Repository)に含まれるMDB2_Schemaライブラリは、さまざまな種類のリレーショナルデータベース管理システムのデータベーススキーマを維持したり、利用したりする際に役立つ強力なソリューションです。本稿では、このMDB2_Schemaを利用したデータベーススキーマの管理方法を紹介します。

目次

はじめに

 PEAR(PHP Extension and Application Repository)に含まれるMDB2_Schemaライブラリは、さまざまな種類のリレーショナルデータベース管理システム(RDBMS)のデータベーススキーマを維持したり利用したりする際に役立つ強力なソリューションです。

 MDB2_SchemaはデータベーススキーマをXML形式で保存するため、特定のRDBMSに依存しません。CREATE、ALTER、DROP、INSERTなどの基本的なSQL文はMDB2_Schemaを通じて直接実行できます。MDB2_Schemaはリバースエンジニアリングをサポートしており、MDB2_Schemaのファイル形式はMicrosoft Access(.mdb)ファイルとInternet Information Server(IIS)のメタベースファイルの両方と互換性があります。

 MDB2_Schemaにまだなじみがない方は、この記事の中でわからない用語や概念が出てきたらそのつどMDB2 XML Schemaドキュメント(英語)にあたることをお勧めします。また、メタベーススキーマそのものについての詳しい解説はこの記事の範囲を超えているので、興味のある方はこちらをお読みください。

MDB2_Schemaのインストール

 次のようなPEARパッケージをインストールします(バージョン0.8.2はベータ版です)。

pear install --alldeps channel:/pear.php.net/XML_Tree-2.0.0RC2
pear install --alldeps channel:/pear.php.net/XML_DTD-0.4.2
pear install --alldeps channel:/pear.php.net/XML_Serializer-0.18.0
pear install --alldeps channel:/pear.php.net/MDB2_Schema-0.8.2
pear install --alldeps channel:/pear.php.net/MDB2_Driver_mysql-1.4.1
pear install --alldeps channel:/pear.php.net/MDB2_2.4.1

 このことから分かるように、MDB2_Schema PEARを正しく動作させるにはいくつか他のPEARパッケージが必要です。最低でもMDB2 PEARと、少なくとも1つのデータベースドライバをインストールする必要があります。MDB2_Schema PEARでサポートされるデータベースドライバへのリンクを次に示します(それぞれの名前の最後の部分が、そのドライバの対象データベースを表しています)。

データベースへの接続

 目的のデータベースに接続するには、まずデータソース名(DSN)をセットアップする必要があります。DSNは接続パラメータを定義する文字列または配列であり、RDBMSの種類、プロトコル、ホスト指定、ユーザー名、パスワード、データベース名についての情報を含みます。

 DSNの完全な構文は次のとおりです。

phptype(dbsyntax)://username:password@protocol+
   hostspec/database?option=8&another=true

 最も、この完全な形式を使用することはめったにありません。通常は、この完全な形式に基づいたもう少し単純な形式を使用します。例えば次のような形式を使用します。

  • phptype://username:password@hostspec/database_name
  • phptype://username:password@hostspec
  • phptype://username@hostspec
  • phptype://hostspec/database
  • phptype://hostspec
  • phptype(dbsyntax)
  • phptype

 DSNの例を2つ紹介します。1つ目は配列として定義したもので、2つ目は文字列として定義したものです。

配列として定義したDSN
$dsn = array ( 'phptype' => 'mysql','hostspec' =>
'localhost:3306','username' => 'root',
'password' => '', 'database' => 'bookstore' );
文字列として定義したDSN
$dsn = 'mysql://root@localhost/bookstore';

 DSNを作成したら、次のどちらかの方法を使用してRDBMSへの接続を開きます。

RDBMS接続方法(A)

 新しいMDB2接続オブジェクトを作成し、引数&$dbで表されるDSNを使用して、目的のデータベースに接続します。任意指定の引数$optionsは、オプション名と値の連想配列を表します。

bool|MDB2_Error connect( string|array|MDB2_Driver_Common &$db,
   [array $options = array()]) :
RDBMS接続方法(B)

 引数&$dbで表されるDSNを使用して、目的のデータベースタイプの新しいMDB2オブジェクトを作成します。この場合も、任意指定の引数$optionsは、オプション名と値の連想配列を表します。

bool|MDB2_Error &factory( string|array|MDB2_Driver_Common &$db,
   [array $options = array()]) :

 この方法を使う場合、$options配列は次のような形になります。

$options = array(
        'fail_on_invalid_names' => true,
        'dtd_file' => false,
        'valid_types' => array(),'force_defaults'=>true,
        'parser'=>'MDB2_Schema_Parser',
        'writer'=>'MDB2_Schema_Writer',
        'validate'=>'MDB2_Schema_Validate')

 これらのオプションは、connectおよびfactoryメソッドを使用して最初にデータベースに接続するときに設定することもできますし、setOptionメソッドを使用して1度に1オプションずつ設定することもできます。setOptionメソッドのプロトタイプを次に示します。

bool|MDB2_Error setOption( string $option, mixed $value)

 引数$optionには設定するオプションの名前、引数$valueにはそのオプションに適用する値を指定します。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Octavia Andreea Anghel(Octavia Andreea Anghel)

    経験豊富なPHP開発者。現在は、国内外のソフトウェア開発コンテストに参加するプログラミングチームの主任トレーナーを務める。国レベルの教育プロジェクト開発のコンサルティングも担当している。共著書に『XML technologies?XML in Java』があり、XML部分の執筆を担当。PHPやXML...

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5