データベースの一つのテーブル内の項目数の現実的な数の制限は?


商品管理用のテーブルを作ろうとします。ある商品Aの商品に関する情報の項目が100、その商品の在庫情報が100、その他の情報が100あるとします。

このような場合、一つのテーブルに300項目入れるのはよくない方法でしょうか?
別のテーブルにしてjoinすればいいとも思いますが、処理の負荷の面で、それぞれ必要な情報だけを取り出す処理をしていれば、300項目あっても別に構わないのかなとも思いますが、分けるのと分けないのはどちらがいいでしょうか?

ちなみにこのテーブルは参照80%、アップデート20%くらいの仕様頻度です。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/01/12 12:43:22
  • 終了:2007/01/12 14:42:18

回答(2件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012007/01/12 12:57:32

ポイント28pt

入れるなとは誰も言えないですけど正規化を行わないテーブル構成は破綻をきたしますよ(Accessでは255フィールドまでといったようにデータベースによっては300フィールド自体がダメって場合もありますが、それはまた別の話ですね。)

http://www.kogures.com/hitoshi/webtext/db-seikika/index.html

「商品Aの商品に関する情報の項目が100」

「その商品の在庫情報が100」

「その他の情報が100」

少なくとも、この3つ実際にはそれぞれが複数に分かれると思うので合計で6~10個程度のテーブルに分かれるはずです。

id:dingding

ありがとうございます。

2007/01/12 14:41:32
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/01/12 12:59:30

ポイント42pt

DBにも寄りますが、MySQL の InnoDB の場合で、

http://dev.mysql.com/doc/refman/4.1/ja/innodb-restrictions.html

1 つのテーブルに作成できるカラムは 1,000個 までである。

300 程度であればさほど問題ではないと思います。


それぞれの情報が1対1で対応しているなら JOIN のコストの方が高くつきます。

1対多、もしくは多対多の関連であれば正規化の意味で当然分割すべきでしょう。


基本的には以前の回答と同じです。

question:1163072424

id:dingding

前回100項目で質問していたのですが、その後、追加項目が増え、200項目が目前になってきて、心配になり質問させていただきました。

1対1の情報ですので、今のテーブルを分けずに進めようと思います。

とても安心できました。

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

2007/01/12 14:40:44
  • id:b-wind
    性能は問題ないし、正規化されているならいいんだけど、
    さすがに2~300カラムとなると本当に正規化されているのか疑問は出てくるなぁ。

    実際それが本当に必要ならば問題ないけど、一応再確認はしたほうがいいと思う。
    性能ではなく設計の問題として。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません