Piece Frameworkによるブログアプリケーションの作成

第8回 データベース設計とデータアクセスコードの実装(1)

この記事を読むのに必要な時間:およそ 8.5 分

前回までの作業で,すべてのフローの画面設計とバリデーション定義が一旦完了となりました。今回から2回に渡って,画面設計によって洗い出された項目に基づいてデータベースのテーブルを作成し,アプリケーションにPiece_ORMを使ったデータアクセスを組み込んでいきます。

データベース設計とテーブル定義

データベースのテーブルを作成するためには,当然ながら作成対象の項目(フィールド)がわかっていなければいけません。今回の開発プロセスでは,すでに各画面のフィールドが洗い出されていますので,それを利用することにしましょう。下記は画面と画面のフィールドの対応表になります。

画面フィールド1フィールド2
新規エントリー入力画面 タイトル内容
新規エントリー入力確認画面 タイトル内容
エントリー一覧画面 タイトル
エントリー参照画面 タイトル内容
エントリー編集画面 タイトル内容
エントリー削除確認画面 タイトル内容

ごらんの通り,今回は「タイトル」「内容」の2つのフィールドしかありませんので,これらを「エントリー」テーブルとして表現することにします。また,これらの2つのフィールドでは1つのエントリーを特定できないため,連番型のフィールドも用意し,そのフィールドをプライマリキーに指定します。以上を表現するテーブル作成用のSQLは下記のようになります。

/path/to/pieceblog/data/schemas/entry.ddl

CREATE TABLE entry (
  id serial,
  title varchar(255) NOT NULL,
  content text NOT NULL,
  PRIMARY KEY(id)
);

データベース及びユーザの作成

次に,データベースサービスを起動し,PostgreSQLのデータベースとユーザを作成します。なお,今回はデータベース及びユーザ,パスワードのいずれもpieceblogという文字列を使うことにします。下記はpgbashを使った作成例です。

pgbashによるデータベース及びユーザの作成

> connect to template1@localhost user postgres password;
# PostgreSQL 8.2.1 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.4 (mingw special)
# CONNECT TO  template1@localhost:5432  AS  template1  USER  postgres
> create user pieceblog with password 'pieceblog';
CREATE ROLE
> ?u
[ List of user names ]
 Username         | SupperUser | CreateDB
------------------+------------+----------
 postgres         | yes        | yes
 pieceblog        | no         | no
(2 rows)
> create database pieceblog owner pieceblog encoding 'UTF8'; CREATE DATABASE > ?l [ List of databases ] Name | Owner | Encoding ------------------+------------------+---------- pieceblog | pieceblog | UTF8 postgres | postgres | EUC_JP template0 | postgres | EUC_JP template1 | postgres | EUC_JP (4 rows)

作成が完了したら,接続のテストをしておきましょう。

pgbashによる接続のテスト

> connect to pieceblog@localhost user pieceblog pieceblog;
# PostgreSQL 8.2.1 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.4 (mingw special)
# CONNECT TO  pieceblog@localhost:5432  AS  pieceblog  USER  pieceblog
> ?m
# Connected Databases List (C: current database is '*')
+---+--------------+-----------+---------------------------+-----------------+
| C | connect_name | user_name | target_name(db@host:port) | client_encoding |
+---+--------------+-----------+---------------------------+-----------------+
|   | template1    | postgres  | template1@localhost:5432  |                 |
| * | pieceblog    | pieceblog | pieceblog@localhost:5432  |                 |
+---+--------------+-----------+---------------------------+-----------------+
(2 rows)

テーブルの作成

続いて,先ほどのテーブル作成用のSQLを使ってテーブルを作成します。

pgbashによるテーブルの作成

> CREATE TABLE entry (
>   id serial,
>   title varchar(255) NOT NULL,
>   content text NOT NULL,
>   PRIMARY KEY(id)
> );
NOTICE:  CREATE TABLE will create implicit sequence "entry_id_seq" for serial column "entry.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "entry_pkey" for table "entry"
CREATE TABLE
> ?d entry
[ "entry" data definitions ]
 Attribute | Type                   | NotNull  | Default
-----------+------------------------+----------+-----------------------------------
 id        | integer                | not null | nextval('entry_id_seq'::regclass)
 title     | character varying(255) | not null |
 content   | text                   | not null |
(3 rows)

PrimaryKey: entry_pkey

以上でデータベース側の準備は完了です。

著者プロフィール

久保敦啓(くぼあつひろ)

Piece Frameworkのアーキテクト及びプログラマー。PEARのNet_UserAgent_Mobileの開発者でもある。今春に株式会社アイテマンを設立。

URLhttp://iteman.typepad.jp/

コメント

コメントの記入