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

演習用 EC サイトの主要テーブル

スライド 2 of 3

本コースでは、ここまで学んだ概念を実感するために 演習用の仮想 EC サイトを題材にします。 扱うのはユーザー登録・商品一覧・注文・お気に入りという EC でおなじみの機能で、 これらのデータが 4 つのテーブルに分かれて保存されています。 第3章 SQL では、これらのテーブルに対して SELECTUPDATE を書いていきます。

前のスライドで紹介した ER 図で、この 4 テーブルの関係を表すと次のようになります。

演習用 EC サイトの ER 図。users と products がそれぞれ orders, favorites と 1 対多の関係で結ばれている。

||--o{ は「1 対 N」の関係。users と products は favorites 経由で N : M で結ばれている

users

20 件
  • id (PK) — 整数
  • name — 文字列
  • email — 文字列 UNIQUE
  • created_at — 日時

products

25 件
  • id (PK) — 整数
  • name — 文字列
  • price — 整数 CHECK ≥ 0
  • stock — 整数 CHECK ≥ 0
  • status — 整数(10/20/30)
  • sale_starts_at / sale_ends_at — 日時 NULL 可

orders

30 件
  • id (PK) — 整数
  • user_id (FK→users)
  • product_id (FK→products)
  • quantity — 整数
  • price_at_purchase — 注文時単価のスナップショット
  • status — 整数(10/20/30/99)

favorites

30 件
  • id (PK) — 整数
  • user_id (FK→users)
  • product_id (FK→products)

orders.price_at_purchase(注文時単価のスナップショット)が存在する理由として最も適切なのは?