0

私はphp/mysqlを使用して非常に小さなショッピングカートシステムを構築しています。現在、実際のショッピングカート(商品やカテゴリなどのテーブルは少ない)は2つのテーブルで構成されています。

次の列を含むshoppingCartsという名前の1つのテーブル:

  • id(PK)
  • userId(FK)
  • dateCreated

ShoppingCartItemsという名前のもう1つのテーブルは、次のもので構成されます。

  • productId(FK)
  • ShoppingCartId(FK)
  • dateCreated

1つの製品の量を追加するために、2つの可能なシナリオを考えることができます。

  1. ショッピングカートに追加されたアイテムごとに新しい行を追加します。
  2. 'amount'列を追加し、そこに金額を格納します。

どのオプションが最適か疑問に思っていますが、浮き沈みは何ですか?多分私が考えていなかったさらに良い解決策がありますか?

4

2 に答える 2

1

正しい解決策は、アイテムごとに1つの行があるという利点はなく、より冗長なデータがあるため、金額に追加の列を用意することだと思います。顧客が50個のアイテムを必要としている場合、50個の同じ行のデータが得られると想像してください。また、GROUP BY選択を使用するか、プログラムで行をカウントする必要があります。追加の金額列を使用すると、データを保存でき、クエリはそれほど複雑ではありません。

于 2012-05-19T17:33:26.837 に答える
0

私が提案するのは、金額の列だけを使用することは使用されないということです。私はあなたがアイテムID、詳細とその価格を持っているアイテムテーブルを持っていると信じています。したがって、フローは次のようになります。顧客がログインしてユーザーIDを使用してショッピングカートに行を作成し、カートにアイテムを追加するたびに、ショッピングカートアイテムに新しい行が作成されます。これで、すべてのアイテムの累積価格を検索して表示できます(集計関数の合計を使用)。これにより、新しい列「金額」を作成する目的が解決されます。将来的には、たとえば、割引クーポンの概念や忠実な顧客への割引を統合する場合、アプリケーションで統合するのは難しいでしょう。したがって、私が提案するのは、2つの列を追加することです。1)合計価格2)割引価格/支払額疑問がある場合は、元に戻してください。

于 2012-05-19T17:59:47.287 に答える