1

これが私の状況です:

状況:

ユーザーがいて、ユーザーごとに複数のカテゴリに複数の値があります。

私の見方には2つの選択肢があります。

I.新しいテーブル'values'を作成します。

 user_ID   category   value 

  ...        ...       ...
   5          1        aaa
   5          1        bbb
   5          2        ccc
   5          2        ddd
   5          2        eee
   6          1        xxx
   6          2        yyy
   6          1        zzz

II。ユーザーのいる私の実際のテーブルでは-'users':

user_ID (unique)         values  
        5             aaa,bbb$$ccc,ddd,eee
        6             xxx,zzz$$yyy

...値をテキストとして保存し、'、'分割値、および'$$'分割カテゴリで解析します。

これまで私は2番目の方法でいくつかの小さなことを行ってきましたが、今ではこのデータベースに多くの値とカテゴリが期待され、サーバーの負荷が少なくなるのではないかと思っています-非常に巨大なmySQLデータベーステーブルを持ってそれを調べますすべてのページで、現在のユーザーに属する値を確認します。または、比較的小さなテーブルからすべての値のみを取得しますが、PHPを使用して文字列を毎回解析し、使用できるようにしますか?

4

2 に答える 2

4

最初の方法-それはリレーショナルデータベースが構築される目的です。また、インデックスの利点もあり、かなり大きなデータセットでも高速に保つことができます。

また、データを他の方向からクエリすることもできます。カテゴリ2が「eee」に等しいすべてのユーザーを取得してください。

于 2011-06-19T22:02:55.490 に答える
0

未知の量のデータをフィールドに挿入することは、そもそもフィールドのディメンション化方法がわからないため、非常に悪い考えです。さらに、DBは有用な方法でインデックスを作成できなくなり、システムが成長するにつれてパフォーマンスが低下します。

カテゴリと値を別のテーブルに配置すると、スケールが適切になり、すでに述べたように、リレーショナルDBがすべてです。

「データベースの正規化」をグーグルで検索し、いくつかの結果を参照して詳細を確認することをお勧めします。

于 2011-06-19T22:08:06.540 に答える