e コマース アプリケーション用のデータベース/ドメインを設計していますが、製品を保存する方法を理解するのに苦労しています。
このウェブサイトでは、ペン、皮ひも、タトゥー、傘など、あらゆる商品を幅広く販売します。これらの各製品には、高さ、幅、長さ、重量などのいくつかの共通の属性がありますが、一部の製品には特別なデータがあります。たとえば、ペンにはさまざまなインクの色があり、ペン先/ふたやパンフレットにはさまざまな種類の折り目があります。これまでに 20 以上の追加の属性を考えましたが、これらの属性は Web サイト上の製品の 1% にしか適用されない場合があります。
そのため、余分なデータを処理するために EAV モデルを実装することが適切かどうか疑問に思っています。顧客がフロントエンドでサイトを閲覧している場合、eBay や carsales.com.au のようなフィルタリング サイドバーが表示されることに注意してください。(そのため、かなりのクエリが発生することに注意してください)
システムの柔軟性を維持する必要があるため、クラス テーブルの継承を実装するのは実用的ではないと思います。これは、今後、新しいタイプの製品でより多くの属性が追加される可能性があるためです。
私が検討したもう 1 つのことは、NoSQL データベース (おそらく MongoDB) を使用することですが、これらのタイプのデータベースの経験はほとんどありません。問題は解決しますか?
オプションのレビュー:
- 多くの列を持つ単一の製品エンティティ
- 個別属性エンティティ (EAV)
- スキーマレス永続性に切り替える
私は、属性エンティティを使用してプロトタイプを作成し、それがどれほど柔軟であるかを確認し、パフォーマンスとクエリがどのように制御不能になるかをテストしています。
編集:もちろん、私は他の解決策を受け入れます。