質問 |
||
| 質問者:takagoo100 | 種別カラムのデータ型について | |
|---|---|---|
困り度:
|
MySQLバージョン4.1.16を使用しています。 数種類の種別(青が1、赤が2、緑が3として)を保持するカラムの場合、 そのデータ型はTINYINTなのか、VARCHAR(1)なのか、どちらが良い方法なのでしょうか? それとも(青をblue、赤がred、緑がgreenとして) VARCHAR(10←(少し多めに確保))として英字(blue、red、green)を 保存するやり方もあるのでしょうか? テーブル「好きな色」(TINYINTの場合) +----------+---------+ | 人_id | 色の種別 | +----------+---------+ | 田中 | 3 | +----------+---------+ | 鈴木 | 1 | +----------+---------+ テーブル「好きな色」(VARCHAR(1)の場合)←この場合は 文字として数字を保存することになるのでしょうか? +----------+---------+ | 人_id | 色の種別 | +----------+---------+ | 田中 | 3 | +----------+---------+ | 鈴木 | 1 | +----------+---------+ テーブル「好きな色」(VARCHAR(10)の場合) +----------+---------+ | 人_id | 色の種別 | +----------+---------+ | 田中 | green | +----------+---------+ | 鈴木 | blue | +----------+---------+ |
|
質問投稿日時:08/03/18 23:44 質問番号:3874968 |
||
回答良回答20pt |
|
| 回答者:chukenkenkou | TINYINTで構わないですが、比較するのがCHAR(1)でなく、VARCHAR(1)なのはなぜでしょうか? VARCHARにすれば、長さの情報が余分に付きます。 また、MySQL限定なら、ENUMという特殊なデータ型があります。 色の種別を文字で個々の人で持つのではなく、色の管理表を作って、色コードと色を管理し、色コードで人と対応付けるというのが、普通に考えられる方法です。 |
|---|---|
| 種類:アドバイス どんな人:専門家 自信:参考意見 |
|
| |
回答日時:08/03/19 01:14 回答番号:No.1 |
|
| この回答へのお礼 | ご返答ありがとうございます。 なるほど、数値型として格納できるならそうした方がいいということですね。 またテーブルを作成するにあたっての考え方もなんとなくですが分かりました。 ありがとうございます。 |