いよいよ、Transfer だ。
ちょうど、Transfer 1.0 RC がリリースされたようだ。
気になったのは、この2点。
・Composite Key Support
・Transaction Support
Composite Key ってなんぞや?
今まで、データベースの主キーとして、カラム一つしか指定できなかったっぽいのが、複数のカラムが指定できるようになったということなのだろうか?
どうやら、複数のカラムが指定できるようになったらしい。が、項目として指定できるのは、1つのみで、あとは、外部参照の項目を指定することのようだ。
基本的に正規化してテーブル設計すれば、問題はなさそうだけど、大丈夫なんだろうか。
古いシステムのテーブル設計によく見られる、4つとか、5つとかの項目からなる主キー設定で、なおかつ、
正規化してある訳じゃないテーブルには、使えないということか。
いよいよ、Transfer を読み解いていくことになるわけだが、まずは、データベースを作らなければいけない。
データベースは、環境に非常に影響を受けるので、著しく汎用性が落ちてしまうのが困りものだけど、仕方ない。
とりあえず、慣れている PostgreSQL で作成する。
バージョンは、8.1 だ。

各テーブルの意味は、そのまんまだから、わかるだろう。
ちなみに、SERIAL 型というのは、データ挿入でオートインクリメントしてくれる INT 型。
データベース作成
createdb -E UNICODE SHOPPING
テーブル作成
CREATE TABLE public.CATEGORYMST (
categoryid INT NOT NULL
, categoryname TEXT NOT NULL
, PRIMARY KEY (categoryid)
);
CREATE TABLE public.ITEMMST (
itemid SERIAL NOT NULL
, lnkcategoryid INT NOT NULL
, itemname TEXT NOT NULL
, price INT NOT NULL
, PRIMARY KEY (itemid)
);
CREATE TABLE public.CARTDATA (
sessionid CHAR(32) NOT NULL
, lnkitemid INT NOT NULL
, categoryname TEXT NOT NULL
, itemname TEXT NOT NULL
, price INT NOT NULL
, PRIMARY KEY (sessionid, itemid)
);
データ登録
INSERT INTO CATEGORYMST (categoryid, categoryname) VALUES (1, 'マウス');
INSERT INTO CATEGORYMST (categoryid, categoryname) VALUES (2, 'キーボード');
INSERT INTO ITEMMST (itemid, lnkcategoryid, itemname, price) VALUES (1, 1, '光学式マウス', 2600);
INSERT INTO ITEMMST (itemid, lnkcategoryid, itemname, price) VALUES (2, 1, 'ボールマウス', 1100);
INSERT INTO ITEMMST (itemid, lnkcategoryid, itemname, price) VALUES (3, 1, 'レーザー式マウス', 4800);
INSERT INTO ITEMMST (itemid, categoryid, itemname, price) VALUES (4, 2, 'テンキー付きUSBキーボード', 1800);
INSERT INTO ITEMMST (itemid, lnkcategoryid, itemname, price) VALUES (5, 2, 'テンキーなしUSBキーボード', 1200);
INSERT INTO ITEMMST (itemid, lnkcategoryid, itemname, price) VALUES (6, 2, 'テンキー付きPS/2キーボード', 1100);
INSERT INTO ITEMMST (itemid, lnkcategoryid, itemname, price) VALUES (7, 2, 'テンキーなしPS/2キーボード', 900);
SELECT SETVAL('ITEMMST_itemid_seq', MAX(itemid)) FROM ITEMMST;
これで、データベースの準備はできた。次は、Transfer の設定だ。