QA Dojo
ハンズオン
進捗 0/47

price_at_purchase の役割

スライド 5 of 7

スライド3 で UPDATE products SET price = 500 WHERE id = 1 を実行しました。 でも「過去の注文の金額」は本来そのままであるべき。商品価格を後から下げたら、過去の注文金額も連動して下がるようでは大事故です。

そのため orders テーブルには price_at_purchase(注文時点の単価スナップショット)があります:

SELECT id, user_id, product_id, price_at_purchase FROM orders WHERE product_id = 11

product_id=11(ワイヤレスイヤホン WX-500)への注文 4 件を見ると、すべて price_at_purchase=6800products.price を変えても、過去の注文金額は変わらないことが確認できます。

📌 QA 視点:「商品価格変更後に既存注文金額が変わらないか」は EC のテスト必須項目。 スナップショットカラムの存在は、データ設計時点で「事故が起きないように」組み込まれた防御策です。

SQL を書いて「実行」を押してください