アプリケーションのデータ モデルに対する健全なアプローチを探しています。ほとんどのスレッドは e コマース製品に焦点を当てていますが、私のシナリオは多少異なります。
目標は、顧客から受け取ったアイテムを保管し、それらについて報告することです。最初のレポートは単純なリスト (アイテムとそのキーと値のペア) になりますが、コレクション全体に対する将来のクエリに備えたいので、EAV が適切なアプローチであるかどうかはわかりません。
各アイテムは(繰り返し)タイプであり、各アイテムには柔軟な量のキーと値のペアがあります。約 15 種類のアイテムがあり、急速に成長する可能性はあまりありません。
キーと値のペアの数は少なく、4 ~ 20 であり、(要件ごとに)アイテムの種類ではなく、アイテムが属する顧客に基づいています。
明確にするために、顧客は私にアイテムの状態を保存することを望んでいるかもしれませんが、別の顧客は色または交換IDを保存することを望んでいるかもしれません. それは本当に依存します。したがって、各項目タイプがその顧客のすべてのキー/値をとにかく取得するため、セットに NULL 値が含まれる可能性が非常に高くなります。これにより、単一テーブルの継承(NULL 値を使用) は許容できると思いますが、顧客が目的のキーの名前を決定するため、何らかのマッピングを使用して、field_1 field_2 などにする必要があります。正しくないと思われるのはどれですか?
顧客アイテム (およびそのキー/値) のコレクションは、通常 20 を超えて 500 未満であるため、顧客ごとのデータ セットは確かに膨大ではありません。
おそらく、MySQL でアプリケーション自体 (顧客とその目的のフィールドを作成する) の (セミ) EAV に移行するのが良いアプローチですが、実際に収集されたアイテム レコードを「ドキュメント」として NoSQL データベース (Redis など) に移動して、さらに詳しく調べることができます。処理?
それとも、RDBMS で解決できる/解決すべきことを複雑にしすぎているのでしょうか?
私はまた、このhttp://backchannel.org/blog/friendfeed-schemaless-mysqlに出くわしました。これは解決策のようですが、私の数が非常に少ないためわかりません。