SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

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

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

 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にはそのオプションに適用する値を指定します。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
データベースのダンプ

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

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

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Octavia Andreea Anghel(Octavia Andreea Anghel)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3115 2008/11/06 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング