2011-12-20 12 views
3

私はeコマースサイトを構築しており、限られた期間、特定のアイテムの割引を提供したいと考えています。商品ごとにどれくらい割引を提示したいのですか?したがって、私は与えられた期間の製品、元の価格と割引価格の2つの値が必要です。フォローアップ:データベース内のアイテムの割引をモデル化する方法は?

  • 製品

    • PRODUCTID
    • 名前
  • これは私が

    スキーマを尋ねquestionためanswerにフォローしています

  • ProductPricing

    • PRODUCTID(FK)
    • startDateTimeStamp
    • endDateTimeStamp
    • 価格
    • 元の価格にのみ適用我々はアプローチA(後で来る)
を使用している場合

データ:

Product: 
    1 | Apple 
    2 | Banana 

T1:2011年12月21日:いいえ、この時点で取引

ProductPricing 
    1 | Dec 20, 2011, 00:00 | Jan 1, 2038, 00:00 | 10$ | 10$ 
    2 | Dec 20, 2011, 00:00 | Jan 1, 2038, 00:00 | 20$ | 20$ 

T2:2011年12月24日:ディール! 12月26日、午前14時

アプローチA. - - 指定した期間

ProductPricing 
    1 | Dec 25, 2011, 14:00 | Dec 26, 2011, 14:00 | 7.5$| 10$ 
    2 | Dec 20, 2011, 00:00 | Dec 25, 2038, 00:00 | 20$ | 20$ 

アプローチBのためのクエリの更新リンゴの価格12月25日、午前14時からリンゴに25%の割引を適用します。 。2011年12月27日: - クエリは、与えられた期間

ProductPricing 
    1 | Dec 20, 2011, 00:00 | Jan 1, 2038, 00:00 | 10$ | 10$ 
    2 | Dec 20, 2011, 00:00 | Dec 25, 2038, 00:00 | 20$ | 20$ 
    1 | Dec 25, 2011, 14:00 | Dec 26, 2011, 14:00 | 7.5$| 10$ 

T3のためのリンゴの価格で別のレコードを追加します - オプション

アプローチA.この時点で 、契約は有効期限が切れている、私はトリガを使用してendTimeStampをリセットする必要がありますか?

アプローチB. 取引が期限切れになった製品の最新レコードを削除してください。

答えて

6

ProductPricingテーブルのデザインにより、古い価格設定データを削除する必要はありません(管理者はそのデータに基づいてレポートを作成することがあります)。

ProductPricing 
    1 | Jan 1, 1970, 00:00:00 | Jan 1, 2038, 00:00:00 | 10$ | 10$ 

を今:あなたは上記したもので、あなたはこのように起動すると思います(私はそれは、システムが所定の場所に行ったとき、はい、これは元の価格だったことを選び出すのは簡単ですちょうどそう開始日を変更しました)あなたはあなたのりんごに割引価格を与えるとしましょう、あなたは積極的になりたかったと販売が終わったときのためのシステム設定:私たちはここにいた何だった

ProductPricing 
    1 | Jan 1, 1970, 00:00:00 | Dec 20, 2011, 00:00:00 | 10$ | 10$ 
    1 | Dec 20, 2011, 00:00:01 | Dec 26, 2011, 00:00:00 | 7.5$ | 10$ 
    1 | Dec 26, 2011, 00:00:01 | Jan 1, 2038, 00:00:00 | 10$ | 10$ 

を:

  1. 更新2038年の既存の記録無重複のタイムスタンプで再び

通常価格を反映するために、別の新しいレコードを挿入し、販売

  • を定義するために新しいレコードを挿入販売
  • の始まりを反映するためにendDateTimeStampフィールドを変更imestamp、あなたは」あなたの価格をデータベースに照会するときに単一のレコードを取得することが保証されています。したがって、

    SELECT p.Name, pp.price, pp.original_price 
    FROM Product p 
    INNER JOIN ProductPricing pp ON pp.productId = p.productId 
    WHERE NOW() BETWEEN pp.startDateTimeStamp AND pp.endDateTimeStamp 
    

    あなたは現在の価格で製品リストを入手できます。

  • 関連する問題