既然你們都已經懂基本的東西了,現在是時候在真實專案上試試你的本事啦。一般來說,實際專案的資料庫會分成:
- 小型的 - 100 張 table 以下
- 中型的 - 100 到 1000 張 table
- 大型的 - 1000 張 table 以上
沒經驗的話,真的很難想像為什麼會需要 100+ 張 table。所以今天就讓你體驗一下這種規模的資料庫 :)
我會給你一個很真實的 e-commerce 平台(Marketplace)關聯式資料庫。這個資料庫分成好幾個schema,每個 schema 都負責不同的領域:用戶、商品、訂單、物流、行銷、客服等等。
這個專案總共有109 張 table,分在 11 個 schema 裡。每張 table 都有 foreign key,還有設計好可以用 lookup table 跟 system table 來擴充。
資料庫結構
Schema user — 用戶與活動
Schema user 包含帳號、個人資料、聯絡資訊、登入紀錄、評論還有社交關係的 table。
table 範例:
account— 註冊資料profile— 個人資訊review,comment— 評論跟留言
Schema product — 商品與目錄
Schema product 包含商品描述、不同規格、屬性、圖片、狀態還有異動紀錄。
table 範例:
product,variant— 商品與規格attribute,tag— 屬性跟標籤supplier,composition— 供應商跟組成
Schema order — 訂單與購物車
這裡有訂單建立、追蹤、狀態、退貨跟付款的機制。
table 範例:
order,order_itemstatus_log,return,cancellationinvoice,discount
Schema logistics — 倉庫、配送、路線
管理庫存、調度、配送跟路線。
table 範例:
warehouse,inventory,transfershipping_method,packagedriver,carrier,route
Schema payment — 支付與交易
存放支付系統、交易、錢包跟退款的資訊。
table 範例:
payment,transaction,refundwallet,wallet_transactiongateway,method
Schema marketing — 活動與廣告
這裡有促銷碼、banner、推薦計畫跟精選商品的 table。
table 範例:
campaign,promo_code,discountreferral_program,featured_product
Schema support — 技術支援
ticket 系統、訊息、狀態還有客服回饋。
table 範例:
ticket,ticket_message,ticket_statusagent,feedback
Schema analytics — 指標與行為
追蹤 session、user 行為、轉換率跟各種指標。
table 範例:
event,session,click,page_viewgoal,metric_snapshot
Schema admin — 管理與設定
admin、角色、稽核紀錄還有系統設定的 table。
table 範例:
admin,admin_roleaudit_log,setting,api_token
Schema content — 靜態頁面與區塊
CMS 用的內容:頁面、選單、翻譯跟版本。
table 範例:
page,block,menu,translation,version
Schema ref — 參考資料與 meta-table
類型、狀態、國家、退貨原因等等。
table 範例:
country,currency,status,payment_statusrefund_reason,inventory_change_reason
建立 table
為了讓你輕鬆一點,我會直接給你所有 table 的建立 script。
你只要下載 SQL script,然後跑一下就好。
- 在 PostgreSQL 中建立一個空的資料庫。
- 下載結構描述。
- 匯入資料庫結構:
psql -U postgres -d marketplace_db < init_schema.sql
載入資料
還有所有資料表的資料。
GO TO FULL VERSION