0
1

ECサイト ER図

Last updated at Posted at 2024-05-13

はじまりました

今日からはじまりました!チーム開発&ECサイト開発!
早速ER図を始めて作成したものの、難しいです...
考えるだけでは入ってこなそうなので、アウトプットしていきます!
アウトプットなので、要件定義は省略しております🙇

答えになっちゃうので念の為隠しておきます↓

全体ER図

スクリーンショット 2024-05-13 20.16.11.png

各テーブル詳しくみていきます👁️👁️

管理者テーブル

ER図

スクリーンショット 2024-05-13 20.33.12.png

管理者のデータを格納するためのテーブル
ログイン時に使用するため

・メールアドレス
・パスワード

カラム名が必要!

今回の実装要件では
管理者は一人の予定のため
他テーブルとのリレーション(関連付け)はなし

会員テーブル

ER図

スクリーンショット 2024-05-13 20.20.44.png

顧客の会員データ格納のためのテーブル
ログイン時に使用するため同じく

・メールアドレス
・パスワード

カラム名が必要!

また、氏名が姓と名に別れているのは検索機能を実装した場合に対応できるため

会員ステータスは
有効・退会済みを判別するために必要!

配達先テーブル

ER図

スクリーンショット 2024-05-13 20.39.15.png

注文時の配送先情報を格納するためのテーブル
会員自身の住所等を使用せず、プレゼントとして注文するときなどに使用

商品テーブル

ER図

スクリーンショット 2024-05-13 20.42.33.png

※価格が税抜の理由
消費税率が変わったときに効率的に修正が可能なため

販売ステータスは
販売中・販売停止中を判別するために必要!

・ジャンル
商品一つ一つのジャンル登録をすると修正の効率が悪くなるため
「ジャンル」というマスタテーブルを作成し、ジャンルidで管理

ジャンルテーブル

ER図

スクリーンショット 2024-05-13 20.58.28.png

商品分類ためのジャンルを表すテーブル

🌱商品:ジャンル は N:1 の関係になる


チョコケーキ:ケーキ
いちごケーキ:ケーキ
   N    : 1

カート内商品テーブル

ER図

スクリーンショット 2024-05-13 21.07.23.png

会員がカートに入れた商品データを、
一時的に格納するためのテーブル

※数量は同じ商品データが複数になることを防ぐためにカラムとして必要
いちごケーキ
いちごケーキ  → いちごケーキ3個
いちごケーキ

🌱会員:カート内商品 は 1:N の関係になる


会員A:いちごケーキ
会員A:チョコケーキ
 1 : N

🌱商品:カート内商品 は 1:N の関係になる


いちごケーキ:カートA
いちごケーキ:カートB
   1    : N

注文テーブル

ER図

スクリーンショット 2024-05-13 21.26.24.png

顧客が商品を注文した際に、"注文"情報を格納するテーブル

注文ステータスは
入金待ち・入金確認・製作中・発送準備中・発送済みを判別するために必要!

配送先idを使用し情報取得を(リレーション)しない
→紐付けた配送先情報を書き換えられ、過去の注文履歴の配送先が変わってしまうことを防ぐため

🌱会員:注文 は 1:N の関係になる


会員A:5/10注文
会員A:5/15注文
 1 : N

注文詳細テーブル

ER図

スクリーンショット 2024-05-13 21.30.29.png

顧客が商品を注文した際に、"商品"情報を格納するテーブル

※購入時価格がある理由
セールや値下げで商品の値段が変わっても、
注文履歴の商品単価が変わらないようにするため!

製作ステータスは
着手不可・製作待ち・制作中・製作完了を判別するために必要!

🌱商品:注文詳細 は 1:N の関係になる


チョコケーキ:5/10注文のチョコケーキ 2個
チョコケーキ:5/15注文のチョコケーキ 1個
 1 : N

🌱注文:注文詳細 は 1:N の関係になる
5/10注文:チョコケーキ 2個
5/10注文:いちごケーキ 1個
 1   : N

注文テーブルと注文詳細テーブルを分ける理由

1度の注文に複数の商品を購入した場合、
注文詳細情報以外の情報が重複するため効率が悪い...

・注文詳細テーブルがない場合

注文テーブル
注文id 会員id 配達先 支払方法 商品id 数量 価格 送料 請求金額 製作ステータス 注文ステータス
1 3 2 クレジット 100(商品A) 2 600 800 2000 制作待ち 入金確認
1 3 2 クレジット 200(商品B) 1 800 800 2000 制作待ち 入金確認

・注文テーブルと注文詳細テーブルを分けた場合

注文テーブル
注文id 会員id 商品id 支払方法 送料 請求金額 注文ステータス
1 3 100 クレジット 800 2000 入金確認
注文詳細テーブル
注文詳細id 注文id 商品id 数量 価格 製作ステータス
1 1 100 2 600 制作待ち
2 1 200 1 800 制作待ち

参照

参考にさせてもらいました。
ありがとうございます。

商品カラムに画像はいらないのか...?
と思ったのですが、どうやら今後「画像設計」フェーズがある模様!
要件定義書に記載あるのに読めていなかったです💦

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1