0

次のように機能するeコマースプラットフォームを想像してみてください。

  • Aは、とその他Packageの混合物で構成されます。ItemsPackages
  • とのOrder混合物で構成されます。ItemsPackages
  • ユーザーは、注文するアイテムとパッケージを選択できますが、注文の一部としてパッケージからアイテムを削除することもできます。これは、元のパッケージには影響しません。
  • APackageは将来変更される可能性がOrderありますが、その時点でパッケージの一部として実際に注文されたものを表示する必要があります。

次に例を示します。

Package_A: [Large_Knife, Cutting_Board]
Package_B: [Cheese, Package_A]

Order_1: [Wine, Small_Knife, (Package_B - Large_Knife)]

Package_Aここで、次の変更を言いましょう。

Package_A: [Large_Knife, Cork_Screw]

これは、新しいPackage_BがのCork_Screw代わりにあることを意味しCutting_Boardます。

ユーザーが古い注文を見ると、実際に注文したものが表示されます。

Order_1: [Wine, Small_Knife, Package_B([Cheese, Cutting_Board])]

Large_Knifeモデル化が容易になる場合は、削除されたものを保存/表示する必要はありません。

これをモデル化する方法についてのアイデアを聞きたいです。

ありがとう。

4

1 に答える 1

1

アイテムは多くのパッケージに含めることができます。

パッケージには多くのアイテムを含めることができます。

注文には多くのアイテムとパッケージを含めることができます。

パッケージまたはアイテムは多くの注文になります。

ユーザーは多くの注文をすることができます。

注文は1人のユーザーによって行われます。

パッケージのアイテムは時間の経過とともに変更される可能性がありますが、この変更を追跡する必要はありません。

パッケージが変更された場合、そのパッケージを含む注文は影響を受けず、その内容は注文時の状態のままである必要があります。

提案されたモデル:

ユーザー:UserId(PK)、LastName、FirstName、Eメール

アイテム:ItemId(PK)、説明

パッケージ:PackageId(PK)、説明

PackageDetail:PackageId(FK)、ItemId(FK)

注文:OrderId(PK)、UserId(FK)、DateOrdered

OrderDetail:OrderId(FK)、ItemId(FK、nullではない)、PackageId(FK、アイテムの場合は「0」)

OrderにItemが含まれている場合、テーブルOrderDetailのフィールドItemIdにはそのPKが含まれている必要があり、PackageIdは「0」に設定されている必要があります。

Orderにパッケージが含まれていて、それが配置されるまでに3つのアイテムが含まれている場合は、テーブルOrderDetailsに3つの行を挿入する必要があります。これらはすべて同じPackageIdで、異なるItemdIdを持ちます。

于 2012-08-23T21:38:20.250 に答える