人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQL5.1の質問です。
フィールドが300くらいのテーブル設計ってありでしょうか?
レコード数は多くて1万ほどだと思います。
フィールドとは商品数で1万とはユーザー数を想定しています。
在庫管理を行うテーブルを作ろうと思っていますが、MySQLってこんな使い方ってするのでしょうか?
以下のようなテーブルを考えています。



テーブル名:item_tbl
id, name
1, aaa
2, bbb
3, ccc
4, ddd
5, eee


テーブル名:user_tbl
id, user
3, yama
5, kawa
6, tani
9, hoge


テーブル名:zaiko_flag
id, 1, 2, 3, 4, 5.....
3, 0, 1, 0, 0, 1.....
5, 1, 1, 0, 1, 1.....
6, 0, 0, 1, 0, 1.....
9, 0, 1, 1, 0, 0.....

●質問者: seadwell
●カテゴリ:ウェブ制作
✍キーワード:AAA CCC DDD hoge MySQL
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● うぃんど
●40ポイント

>MySQLってこんな使い方ってするのでしょうか?

100%無いとは言いませんけれど(MySQLに限らず)データベースでは基本的に行わないです

itemが1つ増減するだけでプログラムの改変が必要になるという面倒なシステムをお望みであれば別ですが…

>テーブル名:zaiko_flag

>id, 1, 2, 3, 4, 5.....

>3, 0, 1, 0, 0, 1.....

zaiko_flagテーブルは「user_id,item_id,フラグ」としてしまえばよろしいでしょう

300アイテム x 1万ユーザー = 300万レコードとなってしまってもインデックスをつけてあれば一瞬で抜き出せます

縦の物を横に並べて表の形に整えたりするのはphpなどの方で行えば良いです

(MySQL側でも出来ますがphpなどのフロントエンドで行うほうが楽です)

◎質問者からの返答

> 面倒なシステムをお望みであれば別ですが…

いえいえ、

ここは面倒にならないようちゃんと考えましたが、ただ300ものフィールドってプロの方って行うのか聞いてみました^^;

もしプログラム改変が面倒でなければ300は問題ないのでしょうか?


> 300万レコードとなってしまってもインデックスをつけてあれば一瞬で抜き出せます

それは考えてなかったです。

だいぶ頭が柔らかくなりました。

ありがとうございます。


2 ● taroe
●20ポイント

>フィールドが300くらいのテーブル設計ってありでしょうか?

実際現場でもそういうテーブルは存在します。

ありかどうかといえば、ありです。

集計表などを格納するときに、そのような設計をすることもあります。

もちろん集計表の格納を違う方法でテーブルに持つことも可能ですので

どちらかよいかは、システム要件や性能要件によります。


フィールドが300、レコード数は多くて1万ですので、どちらを選択しても

問題になることはないかと思います。

◎質問者からの返答

ご回答ありがとうございます。

MySQLっておもってたより優秀なんですね^^;

現場でのご意見勉強になります。


3 ● あすか
●20ポイント

フィールドが300くらいのテーブル設計ってありでしょうか?

実装は可能ですが、設計としてはよろしくありません。


ご質問の在庫管理テーブルのカラムが、

id 2011年1月 2011年2月 2011年3月

のようなイメージを考えておられるようでしたら、これは正規化されていません。

より正しくは、

item_id 年月 在庫数

とすべきです。

つまり、1つの商品に付き複数の在庫テーブルを有することになります。

◎質問者からの返答

こんにちは。

>実装は可能ですが、設計としてはよろしくありません。

ですよね。


今回は、あるか?ないか?だけ管理するつもりでした。

しかし、ご提案のイメージはそのような必要が出てきたときに使わせてもらいます。

ありがとうございました。


4 ● hanako393
●20ポイント

フィールドが300くらいのテーブル設計ってありでしょうか?

正規化されていてもフィールドが200を超えてるテーブルは何回も見たことはあります。


今回は、あるか?ないか?だけ管理するつもりでした。

その程度でしたら良いと思います。

◎質問者からの返答

ご回答ありがとうございます。

コメントにもありますが、回答者1の方の策で行こうと思っていたのですが、300アイテムもの在庫テーブル一括更新や登録の良い策

が見つからなければ、ほんとは嫌ですが当初の予定通り300フィールドを持たせたいと思います。


5 ● prehell
●20ポイント

>複数の在庫フラグをいっきにONにしたりOFFにする方法が解らないのでそこで止まっています。

>例えば、ユーザーが在庫フラグをすべてONにしたい場合、書き込みをforeachで300回繰り返すという処理でよろしいのでしょうか?

そうです。

理想的な設計ではどこかにひずみがある場合

あえて理想的な設計をしないというのが今回のケースではないのかな?

ケースバイケース

◎質問者からの返答

>そうです。

残念なお知らせでした。

なにか私の知らない方法があるのかと期待しましたが ^^;


更新を優先するか?抽出と後の改変を優先するか?天秤にかけないといけないのですね。

どちらが頻度が高そうかじっくり考えてみます。

ご回答ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ