CodeGym /コース /SQL SELF /Marketplace Database Architecture

Marketplace Database Architecture

SQL SELF
レベル 61, レッスン 0
使用可能

もうみんなSQLの基礎はバッチリだよね?じゃあ、そろそろリアルなプロジェクトで腕試ししてみよう!普通、実際のプロジェクトのDBはこんな感じで分かれてる:

  • 小規模 - 100テーブルまで
  • 中規模 - 100〜1000テーブル
  • 大規模 - 1000テーブル以上

経験がないと「100個以上もテーブルって何に使うの?」って思うよね。だから今日は、その世界をちょっと覗いてみよう :)

e-commerceプラットフォーム向けのリアルなリレーショナルDB(Marketplace)を用意したよ。このDBはスキーマごとに分かれてて、それぞれが「ユーザー」「商品」「注文」「物流」「マーケ」「サポート」みたいなドメインを担当してる。

このプロジェクトは109テーブル、11スキーマに分かれてる。全部のテーブルに外部キーがついてて、リファレンスやシステムテーブルで拡張もできるようになってるよ。

データベース構造

スキーマ user — ユーザーとアクティビティ

userスキーマにはアカウント、プロフィール、連絡先情報、ログイン履歴、レビュー、ソーシャル連携のテーブルが入ってる。

テーブル例:

  • account — 登録データ
  • profile — 個人情報
  • review, comment — レビューとコメント

スキーマ product — 商品とカタログ

productスキーマには商品の説明、バリエーション、属性、画像、ステータス、変更履歴が入ってる。

テーブル例:

  • product, variant — 商品とバリエーション
  • attribute, tag — 特徴とタグ
  • supplier, composition — メーカーと構成

スキーマ order — 注文とカート

注文の作成・追跡、ステータス、返品、支払いの仕組みが入ってる。

テーブル例:

  • order, order_item
  • status_log, return, cancellation
  • invoice, discount

スキーマ logistics — 倉庫、配送、ルート

在庫管理、移動、配送、ルート管理を担当。

テーブル例:

  • warehouse, inventory, transfer
  • shipping_method, package
  • driver, carrier, route

スキーマ payment — 支払いとトランザクション

決済システム、トランザクション、ウォレット、返金の情報を保存。

テーブル例:

  • payment, transaction, refund
  • wallet, wallet_transaction
  • gateway, method

スキーマ marketing — キャンペーンと広告

プロモコード、バナー、リファラルプログラム、特集商品などのテーブルがある。

テーブル例:

  • campaign, promo_code, discount
  • referral_program, featured_product

スキーマ support — サポート

チケット、メッセージ、ステータス、サポートへのフィードバックのシステム。

テーブル例:

  • ticket, ticket_message, ticket_status
  • agent, feedback

スキーマ analytics — メトリクスとユーザー行動

セッション、ユーザーアクション、コンバージョン、メトリクスのトラッキング。

テーブル例:

  • event, session, click, page_view
  • goal, metric_snapshot

スキーマ admin — 管理と運用

管理者、ロール、監査ログ、システム設定のテーブル。

テーブル例:

  • admin, admin_role
  • audit_log, setting, api_token

スキーマ content — 静的ページとブロック

CMS用コンテンツ:ページ、メニュー、翻訳、バージョンなど。

テーブル例:

  • page, block, menu, translation, version

スキーマ ref — リファレンスとメタテーブル

タイプ、ステータス、国、返品理由など。

テーブル例:

  • country, currency, status, payment_status
  • refund_reason, inventory_change_reason

テーブル作成

みんなの手間を減らすために、全部のテーブルを作るSQLスクリプトを用意したよ。

やることは、SQLスクリプトをダウンロードして実行するだけ!

  1. PostgreSQLで空のデータベースを作成します。
  2. スキーマをダウンロードします。
  3. データベース構造をインポートします:
psql -U postgres -d marketplace_db < init_schema.sql

データの読み込み

また、すべてのテーブルのデータ。

コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION