新しいアプリケーションを開始しましたが、現在2つのパスを調べていますが、どちらが続行するのが良いかわかりません。
私はeコマースサイトのようなものを構築しています。カテゴリとサブカテゴリがあります。問題は、サイト
にはさまざまな種類の製品があり、それぞれが異なるプロパティを持っていることです。また、サイトはこれらの製品プロパティでフィルタリングできる必要があります。
これは私の最初のデータベース設計です:
Products{ProductId, Name, ProductCategoryId}
ProductCategories{ProductCategoryId, Name, ParentId}
CategoryProperties{CategoryPropertyId, ProductCategoryId, Name}
ProductPropertyValues{ProductId, CategoryPropertyId, Value}
分析の結果、このデザインは実際にはEAVモデルであることがわかり、通常、このデザインは推奨されないことがわかりました。
すべてに動的SQLクエリが必要なようです。
それは一つの方法であり、私は今それを見ています。
私が見る別の方法は、おそらくLOT WORK WAYという名前ですが、それが良ければそこに行きたいと思います。テーブルを作るには
Product{ProductId, CategoryId, Name, ManufacturerId}
データベースでテーブル継承を作成するということは、次のようなテーブルを作成することを意味します。
Cpus{ProductId ....}
HardDisks{ProductId ....}
MotherBoards{ProductId ....}
erc. for each product (1 to 1 relation).
これは非常に大規模なデータベースと非常に大規模なアプリケーションドメインになることを理解していますが、EAV設計のオプションよりも優れており、簡単で、パフォーマンスも優れています。