32 lines
1.8 KiB
Markdown
32 lines
1.8 KiB
Markdown
|
|
# 設計資料庫結構 (Design Database Schema) 技能指南
|
|||
|
|
|
|||
|
|
## 概述
|
|||
|
|
`design_database_schema` 是可交付技能,用來產生資料庫結構定義,包含資料表、集合、分區鍵、索引、關係、反正規化策略與遷移策略。支援 PostgreSQL、Cassandra、MongoDB、Redis、Surrealdb。供 `design-architecture` 在產生 Database Schema 章節時參考。
|
|||
|
|
|
|||
|
|
## 核心原則
|
|||
|
|
此技能提供具體的格式要求與完整性檢查清單。Schema 定義必須具體到足以供實作使用。
|
|||
|
|
|
|||
|
|
## 支援的資料庫
|
|||
|
|
| 資料庫 | 適用場景 | 不適用場景 |
|
|||
|
|
|--------|---------|-----------|
|
|||
|
|
| PostgreSQL | 關聯資料、ACID 交易、複雜查詢 | 大量寫入吞吐量、寬列存取模式 |
|
|||
|
|
| Cassandra | 高寫入吞吐量、時間序列、寬列存取 | 複雜 JOIN、ACID 交易、隨機查詢 |
|
|||
|
|
| MongoDB | 文件資料、彈性結構、快速迭代 | 複雜 JOIN、嚴格 ACID、關聯資料 |
|
|||
|
|
| Redis | 快取、工作階段、速率限制、即時排行榜 | 持久化主資料、複雜查詢 |
|
|||
|
|
| SurrealDB | 多模型資料、即時、圖形關係 | 生態系不成熟 |
|
|||
|
|
|
|||
|
|
## 必備元素
|
|||
|
|
- **資料表/集合**:每個實體的完整定義(含欄位名稱、類型、限制式)
|
|||
|
|
- **索引**:每個索引必須有查詢模式支撐
|
|||
|
|
- **分區鍵**:Cassandra、DynamoDB 等分散式資料庫
|
|||
|
|
- **關係**:外鍵、參考完整性、 cascade 行為
|
|||
|
|
- **反正規化策略**:理由與一致性影響
|
|||
|
|
- **遷移策略**:向後相容的遷移方法
|
|||
|
|
|
|||
|
|
## 防範佔位符規則
|
|||
|
|
範例僅供說明用途。不要重複使用範例中的佔位符資料表名稱、欄位名稱、類型、索引或關係。
|
|||
|
|
|
|||
|
|
## 不應做的事
|
|||
|
|
- 不替非 PRD 要求的實體建立資料表
|
|||
|
|
- 不產生與實際需求無關的欄位或索引
|
|||
|
|
- 不產生獨立 Schema 檔案(所有內容必須嵌入 `docs/architecture/{feature}.md`)
|