プロが教える店舗&オフィスのセキュリティ対策術

データベースを使ったサイトを勉強しています。
始めにデータベースを作ろうと思って早速壁に当たりました。

必要なデータは
「ID,フラグ1,フラグ2,名前,住所,TEL,登録日,年代,趣味,メモ」。
IDは一意な番号、
フラグ1,フラグ2はYes/No、
年代は10個程度の決められた文字の中から1個、
趣味は10種類程度の決められた文字の中から複数。

このようなデータが入ったデータベースを作りたい場合、どのような構造にするのが良いのでしょうか。
アドバイス頂けたらと思います。

A 回答 (2件)

IDはintのauto_incrementで


フラグはsetで、名前、住所、電話はvarchar
登録日はdate、年代はENUMで
趣味はテーブルを分けて管理
メモはテキスト型かなぁ・・・
量が多いなら、テーブルわけてもいいかも
    • good
    • 0
この回答へのお礼

ありがとうございます。

table1
[ID(int),フラグ1(set),フラグ21(set),名前(varchar),住所(varchar),TEL(varchar),登録日(date),年代(NUM),趣味ID,メモ(text)]
趣味tbl
[ID(int),趣味名(varchar)]
という感じで良いのでしょうか?
趣味tblの[ID]にはtable1の[ID]が入るんですよね。
その場合、趣味が複数選ばれた場合、趣味tblは
ID 趣味名
1 サッカー
1 野球
という風に選ばれた数だけ同IDが増えていく感じで良いのでしょうか?

お礼日時:2007/09/07 20:19

/**


* table1テーブル
*/
create table table1 (
id int unsigned auto_increment,
flag1 bool default 0,
flag2 bool default 0,
name varchar(64) default '',
address varchar(256) default '',
telephone varchar(24) default '',
age tinyint unsigned, --←ageテーブルのidが入る
hobby tinyint unsigned, --←hobbyテーブルのidが入る
memo text default '',
regist_date date,
primary key (id)
);

/**
* 年代テーブル
*/
create table age (
id int unsigned auto_increment,
age varchar(32),
primary key (id)
);

/**
* 趣味テーブル
*/
create table hobby (
id int unsigned auto_increment,
hobby varchar(128),
primary key (id)
);

のように、年代と趣味テーブルの別で用意して、table1テーブルでは、ageテーブルと趣味テーブルのID(primary key)を入れるようにするかなぁ、、、。
年代と趣味カラムを文字で入れなければならないなら、varchar(xx)を使わないといけないですけど、、、。

カラムの型とかDEFAULT値とかNOTNULL制約とかはお好みですね。
    • good
    • 0
この回答へのお礼

ありがとうございます。
詳しく書いていただいて、ありがたいです。
参考にさせていただき勉強していきたいと思います。

お礼日時:2007/09/14 00:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!