はじめに
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でサポートされるデータベースドライバへのリンクを次に示します(それぞれの名前の最後の部分が、そのドライバの対象データベースを表しています)。
- MDB2_Driver_fbsql
- MDB2_Driver_ibase
- MDB2_Driver_mssql
- MDB2_Driver_mysql
- MDB2_Driver_mysqli
- MDB2_Driver_oci8
- MDB2_Driver_pgsql
- MDB2_Driver_querysim
- MDB2_Driver_sqlite
データベースへの接続
目的のデータベースに接続するには、まずデータソース名(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 = array ( 'phptype' => 'mysql','hostspec' => 'localhost:3306','username' => 'root', 'password' => '', 'database' => 'bookstore' );
$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
にはそのオプションに適用する値を指定します。