	リレーショナルデータベースとの連携

------------------------------------------------------------
1	PostgreSQL へのアクセス
1.1	必要なもの
1.2	config.ph の設定例
1.3	some pointers

2	MySQL へのアクセス
2.1	config.ph の設定例

Appendix A	おもちゃのモデル
Appendix A.1	PostgreSQL Case
Appendix A.2	MySQL Case
------------------------------------------------------------


LDAP の呼び出しについては LDAP 1 参照

1	PostgreSQL へのアクセス

注意: 現在の toymodel は postgresql 7.1 以降では
      うまく動かないようです。理由は off というエントリが
      SQL '99 の規格にある予約語とぶつかっているからです。

      とりあえずの回避策は

	1. postgresql 7.0.x を使う
	2. toymodel の off のエントリを他の名前に変える

  TODO:
	互換性のために現在の toymodel はそのままにし、別途 SQL'99 でも
	使えるドライバを用意しようと思います。

1.1	必要なもの

Pg.pm です。DBI 版もあります。一応 toymodel.pl はまだ Pg.pm 版です。

	/usr/local/fml/databases/postgresql/Pg_toymodel.pl
	/usr/local/fml/databases/postgresql/DBI_toymodel.pl

1.2	config.ph の設定例

ポイントは

	$DATABASE_DRIVER

で指定するファイルです。デフォールトでは LDAP のおもちゃのモデル
( Appendix A 参照)を使うようになっています。
PostgreSQL の玩具モデルの見本は

	/usr/local/fml/databases/postgresql/toymodel.pl

を見て下さい。このファイルには

	どのような SQL 文で呼び出すのか
	エラー処理はどうするのか

などの泥くさい部分が全て封じ込められています。この toymodel.pl を手本
に自分の使っているスキーマに合わせて定義を書き換えてみてください。
そのファイルを

	/var/spool/ml/etc/fml/mysqldriver.pl

などをするとよいでしょう。スキーマの詳細はこの中に封じ込めて下さい。
この場合 config.ph に書くべき項目の見本はこのようになります。

    $USE_DATABASE        = 1;
    $DATABASE_METHOD     = 'PostgreSQL';
    $SQL_SERVER_HOST     = 'postgres.fml.org';
    $SQL_SERVER_USER     = 'fukachan';
    $SQL_DATABASE_NAME   = 'fml';
    $DATABASE_DRIVER     = 'mysqldriver.pl';
    
    1;

もしくは FULL PATH でかいてください。

$DATABASE_DRIVER     = '/var/spool/ml/etc/fml/mysqldriver.pl';

1.3	some pointers

	http://www.sra.co.jp/people/t-ishii/
	ftp://ring.so-net.ne.jp/
	ftp://ring.asahi-net.or.jp/
	http://member.nifty.ne.jp/hippo2000/

2	MySQL へのアクセス

2.1	config.ph の設定例

ポイントは

	$DATABASE_DRIVER

で指定するファイルです。デフォールトでは LDAP のおもちゃのモデル
( Appendix A 参照)を使うようになっています。
mysql の玩具モデルの見本は

	/usr/local/fml/databases/mysql/toymodel.pl

を見て下さい。このファイルには

	どのような SQL 文で呼び出すのか
	エラー処理はどうするのか

などの泥くさい部分が全て封じ込められています。この toymodel.pl を手本
に自分の使っているスキーマに合わせて定義を書き換えてみてください。
そのファイルを

	/var/spool/ml/etc/fml/mysqldriver.pl

などをするとよいでしょう。スキーマの詳細はこの中に封じ込めて下さい。
この場合 config.ph に書くべき項目の見本はこのようになります。

    $USE_DATABASE        = 1;
    $DATABASE_METHOD     = 'mysql';
    $SQL_SERVER_HOST     = 'mysql.fml.org';
    $SQL_SERVER_USER     = 'fukachan';
    $SQL_SERVER_PASSWORD = 'uja';
    $SQL_DATABASE_NAME   = 'fml';
    $DATABASE_DRIVER     = 'mysqldriver.pl';
    
    1;

もしくは FULL PATH でかいてください。

$DATABASE_DRIVER     = '/var/spool/ml/etc/fml/mysqldriver.pl';

Appendix A	おもちゃのモデル

おもちゃなので、実用的なモデルかどうかは不明、というより多分教育的効果
以上のものは期待されないモデルのようにおもいます。
それぞれのテーブルの定義は以下のようになっています。

Appendix A.1	PostgreSQL Case

  create table ml (ml text,
		file text, 
		address text,
		off int,
		options text);

    fml> select * from ml
    
      ml   |  file   |          address           | off | options 
    -------+---------+----------------------------+-----+---------
     elena | actives | fukachan@sapporo.iij.ad.jp |   0 | 
     elena | members | fukachan@sapporo.iij.ad.jp |   0 | 
     elena | actives | fukachan@fml.org           |   0 | 
     elena | members | fukachan@fml.org           |   0 | 
    (4 rows)
    
Appendix A.2	MySQL Case

  create table ml (
	ml char(64),
	file char(64),
	address char(64),
	off int,
	options char(64)
  );


		INDEX

