0

複数のクラスを持つ製品エンティティがあります (各製品タイプには、数千の製品タイプを持つ異なるフィールドがあります)。1 つの製品クラスは、「ハンドルの長さ」、「ヘッド重量」などのフィールドを持つハンマーである可能性があります。別の製品クラスは、「クッション素材」、「ボックス スプリング」などのフィールドを持つ椅子である可能性があります。画像カタログのキーワードのような特定のニーズ。これらは最終的に検索フィールドになりますが、製品には製品クラスに対応する特定のフォームがあるため、プレーン テキスト検索は使用したくありません。

製品は、次のような説明、画像、価格の 3 種類のフィールドに分類されます。

Product.Desc.HandleLength
Product.Desc.HeadWeight
Product.Image.FrontFace
Product.Price.RetailCost
Product.Price.ManufacturersSalePrice

単純化できるのは次のとおりです。

Product.Desc["HandleLength"]
Product.Desc["HeadWeight"]
Product.Image["FrontFace"]
Product.Price["RetailCost"]
Product.Price["ManufacturersSalePrice"]

リポジトリ エンティティを、変化するコンテンツの 3 つの配列を持つオブジェクトにするのが最善でしょうか? このようなオブジェクトを表現する良い方法についてのアイデアはありますか? ある種の「ファクトリーリポジトリ」も考えていました笑。

4

1 に答える 1

1

説明(または画像)を複数の製品間で共有できる場合は、それらに個別のテーブルを定義します。それ以外の場合HandleLengthは、メインテーブルのフィールドとしてetcを保持します。

プロパティが製品に大きく依存している場合(つまり、すべての製品で共有されていないプロパティが少なくとも10個ある場合)、クラステーブルの作成を検討する必要があります。

classId        parent
[Tool]         [NULL]
[Screwdriver]  [Tool]

、クラスプロパティテーブル

classId        property    
[Screwdriver]  Type
[Screwdriver]  Size

、および値テーブル

ItemId   classId        property    value
1        [Screwdriver]  Type        PH
1        [Screwdriver]  Size        2

価格はゆっくりと変化する傾向があります。

それらが変更される頻度と価格履歴を保持するための要件に応じて、それらを保存する方法(など)type 1のいずれかを選択する必要があります。type 2

于 2009-08-13T14:49:04.237 に答える