こんにちは、e コマース アプリケーションを開発中ですが、製品カタログ用のデータベースの設計に問題があるようです。
スタックオーバーフローに関する他の同様の質問も読みましたが、必要な答えが得られるとは思いません。
要件は次のとおりです。
製品カタログはカテゴリ別に構成する必要があります。各カテゴリには不明な数のサブカテゴリがあり、各サブカテゴリには不明な数の製品があります。
アプリケーションには、カテゴリ、サブカテゴリ、および製品を自由に追加できる機能が必要です。
サブカテゴリは、各製品タイプのプロパティを決定します。
今述べたことを考慮して、例と、私が検討した3つのオプション、およびそれらが良くないと考える理由を提供します.
コンピューターと洗濯機を考えてみましょう: コンピューターのプロパティ - VideoCard , ProcesorType,Memory 洗濯機 -Putere(w) , Maximum Preasure , Water filter
両方の製品は、異なるカテゴリとサブカテゴリに属します: コンピュータ - PC カテゴリ 洗濯機 - エレクトロニクス カテゴリ。
候補 I : この場合、名前や価格などの一般的なものを除くすべての製品プロパティが ProductType に格納されます。追加の列を追加するには、ProductType テーブルを変更する必要があります。また、私が検討したデータへのアクセス方法に関していくつかの問題がありますが、それらはこの質問には関係ないと思います。
候補 II:
この場合、すべての製品タイプには、そのプロパティを含む個別のテーブルがあります。ただし、各製品のデータにアクセスするには、データベースへの個別の呼び出しを作成する必要があり、その結果、多くの手順が繰り返されます。また、開発者がそれを行う必要なしに、アプリケーションに追加の製品、カテゴリ、およびサブカテゴリのタイプを追加できるようにする方法もわかりません。
候補 III:
この場合、すべてのプロパティを FormattedProperties 内のキーと値のペアに格納します。また、モデルであるクラスの名前を className 列に格納します。データにアクセスするときは、リフレクションを使用して特定のクラスをチェックし、両方を使用してオブジェクトを初期化します。
これがうまくいくと確信していますが、フォーマットされたキーと値のペアの文字列にすべてのプロパティを格納することが最善の方法であるとは思いませんし、おそらく良い習慣でもありません。また、リフレクションが非常に遅く、おそらくパフォーマンスが低下することもわかっています。
データベースを設計する際に考慮できる他のより良いオプションはありますか? いくつかの例やリンクをいただければ幸いです。