(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

図1●読者アンケートのWeb版の画面
図2●リレーショナル・データベースのテーブルは行と列で構成する
図3●Webアンケート・システムのデータベースは,メインになるテーブルと五つのサブ・テーブルで構成する
表1●Webアンケート・システムのテーブル構造
 筆者が執筆した日経ソフトウエアの特集記事「これから始める人のPHPガイド」は,読んでいただけたでしょうか?

IT Proオープンソースでも公開したこの特集記事では,HTMLフォーム*1の書き方,データベースへのアクセスの仕方など基本的なテクニックについて解説しましたが,実際のWebアプリケーション開発で,それらの技術をどのように使うべきか迷った方がいらっしゃったかもしれません。

 一般的にプログラムには,処理(設計)のパターン,言い換えれば「型(コツ)」があります。実際,現場で「こういう処理は,こんなふうに書けばいいんだよ」と「型」を提示できるリーダーは開発チームになくてはならない存在です。

 そこで本セミナーでは,具体的なWebアプリケーションの開発を通して,PHP(Hypertext Preprocessor)*2プログラミングで知っておくと必ず役立つであろうさまざまな「型」を解説していきます。「PHPプログラミングはこれから」という人もぜひ一緒に学んでいきましょう!

お題は,日経ソフトウエアのアンケート・システム

 最初に,本セミナーで扱う環境を紹介しておきます。開発プラットフォームはWindows 2000/XP*3,Webアプリケーションの開発用スクリプトにPHP 4.2.3,WebサーバーにApache 1.3.27,データベース・サーバーにMySQL 3.23.54を使います*4。これらのソフトウエアの入手方法,インストール方法,PHPの基本的なプログラミング手法,データベース・プログラミング手法などについては,前述の特集「これから始める人のPHPガイド」をご覧ください。

 「ところでサンプル・アプリケーションとして何を作るの?」――いい質問ですね。Webアプリケーションというと,掲示板,スケジュール管理システム,チャット・システムなどいろいろありますが,本連載ではその中から「Webアンケート・システム」を取り上げます。それも,ずばり日経ソフトウエアの読者アンケートのシステムを作ります*5

 ちょっと巻末の読者アンケートのページを見てみましょう(今読んでいるページを見失わないでくださいね)。細かい質問がたくさん並んでいます。皆さんは,この質問の答えをハガキに書いてプレゼントに応募していると思います。この仕組みをWebに置き換えたものが,本連載で作っていくWebアンケート・システムです。アンケートの質問も回答の選択肢もプレゼントの情報もすべてデータベースに格納し,必要に応じてHTMLフォームとして出力しようというわけです(図1[拡大表示])。

 「雑誌を買わずに,プレゼント目的でアンケートにだけ答える人も出てくるのでは?」――するどいですね。そこで本システムでは,必ずパスワードを入力させることにします。パスワードは日経ソフトウエアの誌面のどこかに書いてある,ということにしましょう。立ち読みされたらアウトですが,基本的には本誌を買わないとプレゼントに応募できないようにするのです*6

 では,このシステムを作るにあたってどんな「型」が登場するのか,さっそく見ていきましょう。

第一の「型」
メインとサブに分けてテーブルを設計しよう

 アプリケーション開発において,最初に考えなくてはならないのは,「どんなデータがあるのか」「そのデータをどう扱うのか」ということです。今回はデータベースを使いますから,データベースの設計ということになります。

 連載で扱うMySQLのようなデータベース管理システムは,通常,複数のデータベースを扱うことができます。それぞれのデータベースは,複数のテーブルを格納できます。テーブルは行と列で構成された表のようなもので,列をフィールド(項目),行をレコードと呼びます(図2[拡大表示])。たくさんあるレコードを一意に識別するフィールドを,主キー(プライマリ・キー)と呼びます。

 図3[拡大表示]が,今回のWebアンケート・システムで使用するテーブルの一覧です。データベースの名前は「アンケート(enqdb)」。その中で,中心になるアンケート・テーブル(enqtb)の周りを,衛星のようにサブのテーブルが5個取り囲んでいます*7。質問テーブルは質問内容を,アンケート・テーブルはアンケートへの回答内容を保存するのがその役割です。コントロール・テーブルには,アンケートに答えるためのパスワードを格納します。

 それぞれのテーブルの構造は,表1[拡大表示]のように設計しました。パッと見てわかるのは,アンケート・テーブル以外の五つのテーブルは,フィールド数の少ない単純なテーブルばかりということでしょう。アンケート・テーブルは,30問までアンケートの質問を追加できるようにするため項目数が多くなっています。

 このように「項目数の多い複雑なテーブルを扱う場合は,それを補完する単純なテーブルを複数個配置する」というのが,今回,最初に学んでほしい「型」です。



金宏和實(かねひろ・かずみ)氏

株式会社イーザー代表取締役副社長。
富山県高岡市在住。