このページはNetscape Navigator 4.0以上、もしくはInternet
Explorer 4.0以上でご覧になってください。
このページはMacromedia Dreamweaver 3.0Jで作成しています。
このページの画像、記事等の無断転載を禁止します。

Webアプリケーションを開発しよう(1)
PHP+PostgreSQL
今回、WebアプリケーションをPHP+PostgreSQLを構築してみました。 簡単な内容なので、どこまで参考になるか分かりませんが、勘弁してください。
- 開発環境について
- 開発用ユーザ・DBの作成
- 図書管理システムの作成
- データベースの設計
1.
開発環境について
今回のWebアプリケーション開発環境ですが、下記の通りです。
- Apache 1.3.12 - httpサーバ
- PHP 4.0.3pl1 - サーバサイドスクリプト言語
- PostgreSQL 7.0.2 - リレーショナルデータベースマネージメントシステム

2.
開発用ユーザ・DBの作成
まず、開発ユーザを作成します。ユーザの作成はroot権限で行ないます。今回、ユーザは「dual」、グループは「users」、ホームディレクトリは「/home/dual」にしています。
[root@linux01]# useradd dual -g users -d /home/dual |
次にこのユーザでログオンし、PostgreSQLのユーザ、データベースを作成します。今回は「APPS」にします。まず事前準備として、.bsh_profileに下記の設定を追加します。
# added PostgreSQL
export PGHOME=/usr/local/pgsql
export PGLIB=$PGHOME/lib
export PGDATA=/home/postgres/data
export PATH=$PGHOME/bin:"$PATH"
export LD_LIBRARY_PATH="$PGLIB":"$LD_LIBRARY_PATH" |
追加後、下記コマンドで変更を反映させます。
bash$ source .bash_profile |
次にPostgreSQLのユーザとデータベースを作成します。作成はPostgreSQLの管理者ユーザで行ないます。このユーザにはデータベースの作成権限は与えますが、新規ユーザの作成権限は与えないので下記のようにします。
bash$ createuser dual
Shall the new user be allowed to create databases? (y/n) y
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER |
また、Webからのアクセス用のユーザ「nobody」を作成します。「nobody」にはデータベース、ユーザ双方の作成権限は持たせません。
bash$ createuser nobodyl
Shall the new user be allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER |
次にデータベースを作成します。データベースは「apps」で作成します。作成後、psqlで内容を確認します。
[dual@linux01 dual]$ createdb apps
CREATE DATABASE
[dual@linux01 dual]$ psql -l
List of databases
Database | Owner | Encoding
-----------+----------+----------
apps | dual | EUC_JP
masters | postgres | EUC_JP
template1 | postgres | EUC_JP (3 rows)
|

3.
図書管理システムの作成
今回仕事で必要になったので、部門用の図書管理システムを作成してみました。といっても、画面よりエントリされたデータをリストで見ることが出来るだけの簡単なシステムです。今回のシステム化要件は下記の通りです。
- エントリ画面(図書名、著者、出版社、価格)
- 検索画面(一覧表示、編集、削除機能あり)

4.
データベースの設計
まずは図書情報を格納するマスタを設計します。今回は特に正規化を行なわず、1テーブルで構成します。
さてリレーショナルデータベースのテーブルを作成する際にまず重要となるのはテーブルの中でデータを一意に特定するための主キーの設定です。今回格納する情報は「図書名、著者、出版社、価格」ですが、この中で主キーとなる要素はありません(図書は同じタイトルの場合があり、著者は複数の図書の著者の場合があり、出版社は複数あります。価格は言うまでもないでしょう)。まぁ、図書名、著者、出版社の組み合わせで主キーの要素となり得ますが、キーが長くなりすぎてしまうので、今回は代替キーとして、「図書管理番号」を追加します。
以上を踏まえてデータベースを設計し、今回は下記のスキーマにしました。
表名 |
図書マスタ(books_master) |
列名 |
FIELD名 |
型 |
サイズ |
キー |
制約 |
備考 |
図書管理番号 |
book_id |
SERIAL |
|
PK |
- |
ユニークな連番を付加する。 |
図書名 |
book_name |
VARCHAR |
40 |
|
Not Null |
|
著者名 |
auth_name |
VARCHAR |
20 |
|
Not Null |
|
出版社 |
publish_name |
VARCHAR |
30 |
|
Not Null |
|
価格 |
price |
INIT4 |
|
|
- |
|
このテーブルを作成するCREATE文は下記の通りです。
CREATE TABLE books_master
(
book_id serial primary key,
book_name varchar(40) not null,
auth_name varchar(20) not null,
publish_name varchar(30) not null,
price int4
);
|
このテーブルを作成すると、テーブルbooks_masterの他に、主キーインデックスbooks_master_pkとシーケンスbooks_master_book_id_seqが作成されます。


Copyright (c)1999,2000 M.Dosho, DO-Building Software
このページへのご意見、ご感想はこちらまで\
土性雅史<dual@po.jah.ne.jp>
|