最終更新日:2000-11-27

Copyright (c)1999,2000
M.Dosho, DO-Building Software.

Menu
[ トップページ ]
[掲示板]
ネットワークの構成
Linuxの導入
Linuxの設定
DreamCastを接続しよう
温泉に行こう
(あつまれぐるぐる温泉)

アプリケーションの導入

SMBサーバを立ち上げよう
(Sambaの導入/設定)

プリンタサーバを構築しよう
(Sambaの設定)
ルータ環境を構築しよう
(IP forwarding / IP masqueradeの設定)
Webサーバを立ち上げよう
( Apacheの導入/設定)

データベースを立ち上げよう
(PostgreSQLの導入/設定)

Webサーバを拡張しよう
(PHPの導入/設定)
グループウェアで遊んでみよう
(SkyBoardの導入/設定)
Webアプリケーションサーバを使ってみよう
(Zopeの導入/設定)

Webアプリケーションを作ってみよう(1) PHP+PostgreSQL
  
1. 開発環境について
  2. 開発ユーザ・DBの作成
  3. 図書管理システムの開発
  4. データベースの設計

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

Webアプリケーションを開発しよう(1) PHP+PostgreSQL

 今回、WebアプリケーションをPHP+PostgreSQLを構築してみました。 簡単な内容なので、どこまで参考になるか分かりませんが、勘弁してください。

  1. 開発環境について
  2. 開発用ユーザ・DBの作成
  3. 図書管理システムの作成
  4. データベースの設計

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>