もうみんな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_itemstatus_log,return,cancellationinvoice,discount
スキーマ logistics — 倉庫、配送、ルート
在庫管理、移動、配送、ルート管理を担当。
テーブル例:
warehouse,inventory,transfershipping_method,packagedriver,carrier,route
スキーマ payment — 支払いとトランザクション
決済システム、トランザクション、ウォレット、返金の情報を保存。
テーブル例:
payment,transaction,refundwallet,wallet_transactiongateway,method
スキーマ marketing — キャンペーンと広告
プロモコード、バナー、リファラルプログラム、特集商品などのテーブルがある。
テーブル例:
campaign,promo_code,discountreferral_program,featured_product
スキーマ support — サポート
チケット、メッセージ、ステータス、サポートへのフィードバックのシステム。
テーブル例:
ticket,ticket_message,ticket_statusagent,feedback
スキーマ analytics — メトリクスとユーザー行動
セッション、ユーザーアクション、コンバージョン、メトリクスのトラッキング。
テーブル例:
event,session,click,page_viewgoal,metric_snapshot
スキーマ admin — 管理と運用
管理者、ロール、監査ログ、システム設定のテーブル。
テーブル例:
admin,admin_roleaudit_log,setting,api_token
スキーマ content — 静的ページとブロック
CMS用コンテンツ:ページ、メニュー、翻訳、バージョンなど。
テーブル例:
page,block,menu,translation,version
スキーマ ref — リファレンスとメタテーブル
タイプ、ステータス、国、返品理由など。
テーブル例:
country,currency,status,payment_statusrefund_reason,inventory_change_reason
テーブル作成
みんなの手間を減らすために、全部のテーブルを作るSQLスクリプトを用意したよ。
やることは、SQLスクリプトをダウンロードして実行するだけ!
- PostgreSQLで空のデータベースを作成します。
- スキーマをダウンロードします。
- データベース構造をインポートします:
psql -U postgres -d marketplace_db < init_schema.sql
データの読み込み
また、すべてのテーブルのデータ。
GO TO FULL VERSION