このVPは、1つのテーブルを複数のテーブルにカラム分割します。
イメージとしては以下のような形です。
VIEWに似ていますが、
- INSERTできる
- 複数の分割先のテーブル(子テーブル)でカラムの重複が可能。
これだけの違いでさまざまなことが可能になります。
VPもSpiderと同じくCommentを利用して設定します。
インストール方法は、Spider編1で紹介したSpiderのバイナリにVPも含まれているので、そちらを参照してください。
まずは試してみましょう。
たとえば以下のようなテーブルがあるとすると、
create table gift( id int auto_increment, shop_id int, country_id int, gift_type int, gift_name varchar(255), description text, created_at datetime, primary key(id), key shop_idx(shop_id), key country_idx(country_id) )engine=InnoDB;
は、以下のように分割できます。
create table gift_key( id int auto_increment, shop_id int, country_id int, gift_type int, gift_name varchar(255), primary key(id), key shop_idx(shop_id), key country_idx(country_id) )engine=InnoDB; create table gift_detail( id int, gift_type int, gift_name varchar(255), description text, created_at datetime, primary key(id) )engine=InnoDB; create table gift( id int auto_increment, shop_id int, country_id int, gift_type int, gift_name varchar(255), description text, created_at datetime, primary key(id), key shop_idx(shop_id), key country_idx(country_id) )engine=VP comment 'table_name_list "gift_key gift_detail"';
ここでVP化したgiftテーブルにデータを投入してみます。
mysql> INSERT INTO gift (shop_id, country_id, gift_type, gift_name, description, created_at) -> VALUES (1, 103, 1, 'ハム', 'ハムの人になれます。', CURRENT_TIMESTAMP); Query OK, 1 row affected (0.03 sec)
普通にINSERTできました。
また、それぞれの子テーブルに重複したカラムも値が投入され、かつgiftテーブルから1つのテーブルのようにSELECTできることがわかります。
mysql> select * from gift_key; +----+---------+------------+-----------+-----------+ | id | shop_id | country_id | gift_type | gift_name | +----+---------+------------+-----------+-----------+ | 1 | 1 | 103 | 1 | ハム | +----+---------+------------+-----------+-----------+ 1 row in set (0.00 sec) mysql> select * from gift_detail; +----+-----------+-----------+--------------------------------+---------------------+ | id | gift_type | gift_name | description | created_at | +----+-----------+-----------+--------------------------------+---------------------+ | 1 | 1 | ハム | ハムの人になれます。 | 2011-09-12 22:10:16 | +----+-----------+-----------+--------------------------------+---------------------+ 1 row in set (0.00 sec) mysql> select * from gift; +----+---------+------------+-----------+-----------+--------------------------------+---------------------+ | id | shop_id | country_id | gift_type | gift_name | description | created_at | +----+---------+------------+-----------+-----------+--------------------------------+---------------------+ | 1 | 1 | 103 | 1 | ハム | ハムの人になれます。 | 2011-09-12 22:10:16 | +----+---------+------------+-----------+-----------+--------------------------------+---------------------+ 1 row in set (0.00 sec)
今後いくつかVPの活用の仕方を紹介できればと思います。
以上です。