mysqlでータベース定義
最初に  データベースを使う時、必ずしておかなくてはならない事がある。それは「データベース定義」を行うと言った事である。しっかりと定義をしておくと、後々の苦労は半分以下になる事は間違い無いだろう。使用するソフトは何でもいい。私はエクセルを使って定義をしているが、別に分りさえすれば紙に手書きで書いて定義をしても別に良いのだ。
データベースの利点  何と言ってもSQLを一つ切るだけで、サクサクデータを取得する事が出きるのが大きな利点だろう。更新作業も例えばファイルベースの場合ファイルの中から指定のデータを探して、変更して、保存すると言った作業が最低限必要となる。データベースの場合はupdate文を使って一行で実行する事ができるのだ。
mysqlの型について  普段使いそうなものを簡単にまとめておいた。
 面倒ならば全てtext型でも良いような気がするが、そうするとテーブルのサイズが自然と大きくなってしまい、後日容量が増えた時に泣く事になりかねない。
 不必要な桁数はあらかじめ制限しておいた方が良いと思う。又数値型と文字型を比較すると言った事はデータベースによっては出来ない事もあるので、数値である物を無理に文字型にする必要性は無いと思う。
初期画面 文字列
データ型 データ長(バイト) 最大文字数
char 0 1-255
varchar 1 1-255
text 2 1-65535
longtext 4 1-4294967295
整数
データ型 データ長(バイト) 数値の範囲
tynyist 1 -128-127
smallint 2 -32768-32767
integer 4 -2147483648-2147483647
bigint 8 17-18桁
その他
データ型 データ長(バイト)
date 3 yyyy-mm-dd 日付を格納
datetime 8 yyyy-mm-dd hh:mm:ss
float 4 6桁
double precision 8 15桁
*PHPプログラミングBlackBookから転載 ISBN4-8443-1649-4
まず必要項目を書き出そう  まずデータベースに格納したい情報は何なのか整理して書き出そう。
 今回は単純に会員情報を格納するデータベースを定義してみよう。
 まずは項目名を書き出して、その後データ型を表を参考に入れてみるといいだろう。

項目名 データ型 解説
id integer 重複無し。1から順に
name varchar(40) 名前
address text 住所
types char(1) 男性 1 女性2

 大概のデータベースには予約語と言うのが設けられており、その項目名を設定した場合、テーブルは作成できてもデータを追加できない場合が発生する。mysqlの予約語一覧等は手元に無いが、前記項目名addressaddなどとすると、予約語にあたってしまいエラーとなる。次いでtypesもうっかりtypeにすると予約語にあたってしまい、エラーとなってしまう。長ければ良いとは言わないが、「これ予約語に当たりそうだな……」と思ったらちょっとsなり、何なり付けておいた方が原因不明のエラーに苦しまなくて良い事になる。

プライマリキー  プライマリキーとは重複を許さない項目名の事である。今回はidが該当する。
 これはテーブル構造によって異なってくるが、プライマリキーを沢山作成すると検索は早くなるが、データ更新や追加などに時間がかかるようになるので注意が必要である。他にもインデックスを付けるといった事も検索処理を早くする効果がある。
 通常プライマリキーは見やすいようにテーブルの上の行で定義するのが普通であるようだ。

項目名 データ型 プライマリキー
id integer
name varchar(40)
address text
types char(1)
その他注意しておく事は?  データベース定義をする際、例えば都道府県を格納するフィールドを用意する場合、前もって各都道府県に番号を振っておけば、フィールドは最高でも文字列二ケで済ませる事が出来ますが、全て格納しようと思うと初期段階でかなりの量のフィールドを用意しておく必要があります。まず定義してみた後、どうやったら一レコードあたりの容量を減らせるのか、考えてみると良いかもしれません。

 又一度定義したテーブルを機能毎に複数のテーブルに展開して行く方法もあり、データベース定義は奥が深いです。一番良いのは自分で定義した後、専門家に見てもらう事であると思います。一つの大きなテーブルを持つよりは、複数のテーブルを関係して持つリレーショナルデータベースの理論など、勉強して行くと色々な事が分かってきます。とりあえず定義出来たから……ではなくて一度是非専門書等手に取る事をお勧めします。以外と情報処理試験の問題集にもデータベース定義について記述があるので、そうした試験に挑戦してみるのも良い事なのかもしれません。