データベースの作成は簡単です。ただし、以下の SHOW TABLES の結果でわかるように、現在は空のままです。
mysql> SHOW TABLES; Empty set (0.00 sec)
難しいのは、データベースの構造、すなわち必要なテーブルとそれぞれのカラムを決めることです。
まず、ペットごとのレコードを持つテーブルを作成します。このテーブルには pet という名前を付けて、少なくとも動物の名前だけは格納する必要があります。名前だけではテーブルを作成する意味があまりないので、ほかの情報も格納する必要があります。たとえば、家族の中の複数の人物がペットを飼っている場合、ペットごとの飼い主を知りたい場合があります。また、種類や性別などの基本情報を記録することもできます。
年齢についてはどうでしょうか。年齢も重要な情報ですが、それをデータベースに格納するのは適切ではありません。年齢は時間の経過とともに変化するので、記録を頻繁に更新する必要があるためです。代わりに、誕生日などの固定値を格納するほうが適切です。そうすれば、必要なときに現在の日付と誕生日との差分を計算して年齢を知ることができます。MySQL には日付計算を行うための関数が用意されているので、これは難しいことではありません。年齢の代わりに誕生日を格納することには、ほかの長所もあります。
データベースを使用して、ペットの今度の誕生日を知らせる、などの作業を実行できる(注意: ペットの誕生日を知らせるクエリなどばかばかしいと考えるかもしれないが、人間的な行動をするためにコンピュータを使用するという意味では、ビジネスデータベースを使用して誕生日祝いを贈る必要がある顧客を調べる場合のクエリと同じである)。
現在の日付以外の日付に関連した年齢を計算できる。たとえば、データベースに命日を格納すれば、ペットが死んだときの年齢を簡単に計算できる。
pet テーブルに格納すると便利な情報をほかにも思いつくかもしれませんが、これまでに挙げた名前、飼い主、種類、性別、誕生日、命日だけで、現在は十分です。
CREATE TABLE ステートメントを使用してテーブルのレイアウトを指定します。
mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
name、owner、および species の各カラムの値は長さが固定ではないので、データ型としては VARCHAR が適しています。これらのカラムの長さはすべて同じである必要はありません。また、20 文字である必要もありません。1 から 255 の範囲で最適と思われる長さを指定できます(指定した長さが適切ではなく、後からもっと長いフィールドが必要なことがわかった場合のために、MySQL には ALTER TABLE ステートメントが用意されている)。
ペットの記録で性別を表すには、"m" と "f"、または "male" と "female" など、さまざまな表記が考えられます。ここは、"m" と "f" の 1 文字の値を使用するのが最も簡単です。
birth および death の各カラムに DATE データ型を使用するのは自明な選択です。
これでテーブルが作成できました。SHOW TABLES を実行すると、以下の情報が出力されます。
mysql> SHOW TABLES; +---------------------+ | Tables in menagerie | +---------------------+ | pet | +---------------------+
テーブルが想定どおりに作成されたことを確認するために、DESCRIBE ステートメントを実行します。
mysql> DESCRIBE pet; +---------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+-------------+------+-----+---------+-------+ | name | varchar(20) | YES | | NULL | | | owner | varchar(20) | YES | | NULL | | | species | varchar(20) | YES | | NULL | | | sex | char(1) | YES | | NULL | | | birth | date | YES | | NULL | | | death | date | YES | | NULL | | +---------+-------------+------+-----+---------+-------+
DESCRIBE は、テーブルのカラムの名前やそのデータ型を忘れた場合など、いつでも使用できます。















