從第一原理到進階特性的完整 PostgreSQL 學習路徑,基於 DDIA 原則和實際電商平台場景。
本教學從資料庫的本質出發,循序漸進涵蓋 PostgreSQL 基礎到專家級特性。包含:
- 32 章完整課程,從基礎到專家級
- 32 張表的電商平台 Schema,提供實戰練習
- 整合 DDIA (Designing Data-Intensive Applications) 核心概念
- PostgreSQL 18 最新特性解析
- 效能優化與生產環境最佳實踐
適用對象:零基礎到進階使用者。每章標示難度等級與先修要求。
- PostgreSQL 18+
- Go 1.25+��選用,用於程式碼範例)
- Docker & Docker Compose(建議)
# 複製專案
git clone https://github.com/Koopa0/postgres-tutorial.git
cd postgres-tutorial
# 啟動 PostgreSQL 和 pgAdmin
docker-compose up -d
# 等待 PostgreSQL 啟動完成(約 5-10 秒)
docker-compose exec postgres pg_isready -U postgres
# 匯入 Schema(會自動執行 shared/sql/ 下的 SQL 檔案)
# 如需重新匯入:
docker-compose exec -T postgres psql -U postgres -d ecommerce_dev < shared/sql/complete_schema.sql
# 產生測試資料
docker-compose exec -T postgres psql -U postgres -d ecommerce_dev < scripts/generate_test_data_small.sql
# 連接資料庫
docker-compose exec postgres psql -U postgres -d ecommerce_dev
# 或使用 pgAdmin(瀏覽器打開 http://localhost:5050)
# 帳號:admin@example.com 密碼:admin理解核心資料庫概念與 PostgreSQL 基礎。
| 章節 | 標題 | 主題 | 狀態 |
|---|---|---|---|
| 1 | 資料庫的本質 | 為何需要資料庫、聲明式 vs 命令式 | 已完成 |
| 2 | SQL 設計哲學 | 關聯式模型、集合論 | 已完成 |
| 3 | 關聯式模型深入 | 正規化理論、函數相依性、Schema 設計 | 已完成 |
| 4 | ACID 特性深入 | 交易、隔離層級、MVCC、並發控制 | 已完成 |
| 5 | OLTP vs OLAP | 工作負載特性、設計取捨 | 已完成 |
| 6 | PostgreSQL 入門 | 安裝、設定、工具 | 已完成 |
PostgreSQL 資料型別、查詢、操作。
| 章節 | 標題 | 主題 | 狀態 |
|---|---|---|---|
| 7 | 資料型別系統 | 數值、字串、時間、JSONB、陣列 | 規劃中 |
| 8 | Schema 設計 | 正規化、索引策略、約束 | 規劃中 |
| 9 | SELECT 查詢 | 基本查詢、排序、分頁 | 規劃中 |
| 10 | WHERE 過濾 | ��件運算式、模式比對 | 規劃中 |
| 11 | 資料操作 | INSERT、UPDATE、DELETE | 規劃中 |
| 12 | 聚合與分組 | GROUP BY、HAVING、聚合函式 | 規劃中 |
複雜 JOIN、CTE、視窗函式。
索引原理、查詢優化、MVCC、並發控制。
PostgreSQL 18 特性、分區表、複製、OLAP 設計。
postgres-tutorial/
├── chapter-*/ # 各章內容
│ └── README.md # 理論、教學與實戰練習
├── shared/sql/ # 資料庫 Schema(32 表的電商系統)
├── scripts/ # 測試資料產生器
├── docker-compose.yml # 開發環境配置
└── README.md # 本檔案
完整的學習資源都整合在各章節的 README.md 中,包含:
- 理論講解與概念建立
- 實際操作範例與 SQL 代碼
- 引導式思考問題
- 整合式練習與參考答案
- 真實業務場景分析
歡迎提交 Issue 或 Pull Request。請確保:
- 遵循現有的文檔風格
- 測試所有 SQL 範例在 PostgreSQL 18 上運行正常
- 保持教學內容的清晰與準確
本專案採用 MIT License 授權。
- Kleppmann, Martin. Designing Data-Intensive Applications. O'Reilly, 2017.
- PostgreSQL 18 Documentation