TOP書籍連動> はじめに
SQLiteの高度な活用術
SQLiteの高度な活用術

第1回:画面レベルのテストを自動化して効率化をはかろう

著者:Peter Lavin   2006/3/27
前のページ  1  2
はじめに

   SQLiteはPHP5に組み込まれています。そのため、PHPコードを使ってすぐにデータベースを作成し、テーブルやインデックスを作っていくことができます。しかし、PHP5にあらかじめ組み込まれているSQLiteをそのまま使うと、不便な点が出てきます。

   例えば、データを見たり、データベースの構造を調べたりするためだけにコードを書く必要が出てきます。そのため、コマンドライン版のSQLiteをダウンロードすることをお勧めします。PHP 5.1 RC1ではSQLite2.8.14がバンドルされており、バージョン2系のSQLiteを使う範囲では問題は生じません。

   ただし、バージョン3ではファイル形式が異なっており、バージョン2とは互換性がないので注意が必要です。コマンドライン版のSQLite(SQLiteという実行ファイル名です)を使ってデータベースを作成するには、以下のように入力します。

SQLite<データベース名>

   指定したデータベースファイルが見つからない場合は新しく作成し、すでに存在する場合はそのデータベースを読み込みます。実行するとSQLiteのコマンドプロンプトが出現し、任意のSQLコマンドを実行できます。

   ここでもう1点の注意点があります。データベースの内容をダンプする際に、このコマンドプロンプトから入力したSQL文は綺麗に出力されません。そのため、あらかじめエディタでCREATE TABLE文を記述したファイルを作成しておき、そのファイルをデータベースにリダイレクトします。そうすることで、より見やすいダンプ結果になります。

   今回アプリケーションが使用するデータベースは、dbdirフォルダのresources.SQLiteファイルに格納します。このときデータベースに内容を登録するには、コマンドラインにて以下のコマンドを実行します。

sqlite resources.sqlite < dump.sql


テーブルの作成

   tblresourcesテーブルで利用するSQL文は、リスト1のようになります。詳しく見ていきましょう。

リスト1
CREATE TABLE tblresources(
    id INTEGER PRIMARY KEY,
    url VARCHAR(255) NOT NULL UNIQUE default '',
    email VARCHAR(70) NOT NULL default '',
    precedingcopy VARCHAR(100) NOT NULL default '',
    linktext VARCHAR(255) NOT NULL default '',
    followingcopy VARCHAR(255) NOT NULL default '',
    target VARCHAR(35) default '_blank',
    category VARCHAR(100) NOT NULL default '',
    theirlinkpage VARCHAR(100) default NULL,
    whenaltered TIMESTAMP default '0000-00-00',
    reviewed BOOLEAN default 0,
    whenadded DATE default '2005-01-01');

   自動採番型のフィールドを作成する場合、SQLiteではINTEGER型でPRIMARY KEY属性を設定します。これは、MySQLでINTEGERauto_increment PRIMARY KEYと記述するのと同じです。SQLiteでは、フィールドの定義の際にデータ型を指定する必要はありません。

   その場合は、フィールドは文字列型として認識されます。とはいえ、データ型を入れておいた方が、どのような値が入っているのかを判断する際に便利です。しかし、FLOAT型のフィールドに文字列を入れることも、BOOLEAN型のフィールドに整数値を入れることもできてしまいます。

   さらに、文字数を制限したVARCHAR型を作成しても意味はありません。そのため、フィールドに入れるデータには特に気をつける必要があります。今回のテーブルで使用するフィールドに関しては、特に説明する必要はないでしょう。reviewedフィールドがtrueにセットされるまでは、リンクは表示されません。

   また、TIMESTAMP型のwhenalteredフィールドとwhenaddedフィールドは、トリガーを使って自動的に値がセットされます。

前のページ  1  2


Peter Lavin
著者プロフィール
Peter Lavin
カナダ、トロントでWebデザイナ/Web開発者として働いています。現在、PHPのオブジェクト指向をテーマにした本を執筆しており、No Starch Press社より出版される予定です。


INDEX
第1回:画面レベルのテストを自動化して効率化をはかろう
  SQLiteの機能
はじめに