フォーラムの概要は大体決めたので、設計したテーブルを作成します。
mysqlコマンドを実行して順次必要なテーブルを作成することもできますが
今回は、スキーマーを定義したスクリプトファイルを作ってスキーマーを
作成します。
テキストファイルにcreate table文を記述していきます。
create database forum; use forum; create table category( cat_id smallint(5) UNSIGNED auto_increment, cat_name varchar(100), PRIMARY KEY (cat_id) ); create table forum( forum_id smallint(5) UNSIGNED auto_increment, cat_id smallint(5) UNSIGNED, forum_name varchar(100), topic_count mediumint(8) UNSIGNED default 0, PRIMARY KEY (forum_id) ); create table topic( topic_id mediumint(8) UNSIGNED auto_increment, forum_id smallint(5) UNSIGNED, reply_count mediumint(8) UNSIGNED default 0, last_post_date datetime, PRIMARY KEY (topic_id) ); create table post_message( post_id mediumint(8) UNSIGNED auto_increment, topic_id mediumint(8) UNSIGNED, post_subject varchar(100), post_msg text, post_user varchar(30), post_date datetime, parent_post_id mediumint(8) UNSIGNED default 0, PRIMARY KEY (post_id) ); insert into category(cat_name) values ('Programming'); insert into forum(cat_id,forum_name) values (1,'VC++'); insert into forum(cat_id,forum_name) values (1,'php');
このスクリプトは、1行目でDatabaseを作成しています。
2行目は、その後のSQL文を実行する対象となるデータベースを
forumに指定しています。
以降、テーブルの作成とサンプルデータの追加です。
(SQL文の区切りはセミコロンです。忘れないように!)
スクリプトができたら実際に流してみます。
$ mysql -u root -p mysql>source スクリプトファイル
・use文はconnect文でも同じようなことができます。
・auto_incrementはサイクリックではないようです。微妙ですね。
ちなみにOracleのようなSequence(順序)は無いようです。
後日発覚したのですが、MySQLはOracleのようにdefaultでsysdateなどとできないようです。
その代わりとしては、timestamp型を使うとINSERTやUPDATE時に自動的に更新されるようです。
post_dateにtimestamp型を指定するとよさそうですね。
ただし、1つのテーブルにtimestamp型が2つ以上ある場合は自動更新されるのは
最初の1つだけが自動更新されます。
Copyright 1997-2010 BBB All rights reserved.