テーブルを設計する

In: Ruby / Rails| technology

18 3月 2007

前回の最後で、これでDBと接続できました、と簡単に言ったものの。
テーブルをまだ作っていませんでした。
これでは、本当につながったかについては確信が持てませんね。

ということで、実際にテーブルを作ってみましょう。


まずは、テーブルに入れる情報をイメージします。
こんな感じでしょうか。

チーズスイートホーム(2)

カテゴリー:コミック
商品名:チーズスイートホーム(2)
評価:☆☆☆☆☆
レビュー:これは癒される。
状態:プライベート(他人には公開されていません)
最終更新日:2007/03/18

これをテーブルに落としていきます。
テーブルの作成は前回ご紹介したMySQL Administratorや、コマンドラインから打ち込むような形で作ります。
MySQL Administratorからなら、カタログ → スキーマの選択 → Create Tableボタン でテーブル作成画面になるので、それで作ってしまうのがよいでしょう。

今回作成したテーブルは以下のようになります。
「desc」という単語の後に続いているのがテーブル名、その下がカラム名です。

mysql> desc categories;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned |      | PRI | NULL    | auto_increment |
| name  | varchar(50)      |      |     |         |                |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> desc items;
+------------------+-------------------+------+-----+---------------------+----------------+
| Field            | Type              | Null | Key | Default             | Extra          |
+------------------+-------------------+------+-----+---------------------+----------------+
| id               | int(10) unsigned  |      | PRI | NULL                | auto_increment |
| category_id      | int(10) unsigned  |      | MUL | 0                   |                |
| title            | varchar(100)      |      |     |                     |                |
| stars            | char(1)           |      |     |                     |                |
| review           | text              | YES  |     | NULL                |                |
| status           | enum('0','1','2') |      |     | 0                   |                |
| last_update_date | datetime          |      |     | 0000-00-00 00:00:00 |                |
+------------------+-------------------+------+-----+---------------------+----------------+
7 rows in set (0.00 sec)

ちなみに、これはMySQL専用のコマンドラインから打っています。
MySQL Administratorなら、上の メニュー → Tools → MySQL Command Line Client を選択すると見られます。

CUIなやり方でもいろんな設定を確認することもあるかと思うので、覚えておくといいでしょう。

また、作成したテーブルのSQLは、コピペして秀丸などテキストエディタで保存しておくと、後々いろいろ使いまわせたりできて便利です。
作成したファイル(DDLファイルと言います)は、プロジェクト内のapp/dbフォルダの下に入れておくと後々混同しなくていいかと思います。

なお、作成したDDLの中身は以下のとおり。
[mysql]
drop table if exists `categories`;
CREATE TABLE `categories` (
`id` INTEGER UNSIGNED NOT NULL DEFAULT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
)
ENGINE = InnoDB
CHARACTER SET utf8 COLLATE utf8_general_ci;

drop table if exists `items`
CREATE TABLE `dummytunes-development`.`items` (
`id` INTEGER UNSIGNED NOT NULL DEFAULT NULL AUTO_INCREMENT,
`category_id` INTEGER UNSIGNED NOT NULL,
`title` VARCHAR(100) NOT NULL,
`stars` CHAR(1) NOT NULL,
`review` TEXT,
`status` ENUM(“0″, “1″, “2″) NOT NULL DEFAULT 0,
`last_update_date` DATETIME NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `category_id` FOREIGN KEY `category_id` (`category_id`)
REFERENCES `categories` (`id`)
ON DELETE RESTRICT
ON UPDATE RESTRICT
)
ENGINE = InnoDB
CHARACTER SET utf8 COLLATE utf8_general_ci;
[/mysql]

ここまでの結果

テーブルを設計、実際にCREATE文を実行させてみましたよ。


Comment Form

About this blog

ゆるーく、ふわーっと、興味のままに。

自分のかたわらに置いておくメモ代わり。

Photostream