# 設計資料庫結構 (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`)