db-engineering
Installation
SKILL.md
十一條鐵則(不可妥協)
-
雙環境、雙資料庫 — development 與 production 兩套,各自連到不同的資料庫實例。兩者的資料、金鑰、URL 完全隔離。絕不可用「同一個實例 + 不同 schema」這種偷懶分法。
-
預設開發環境 — 任何啟動服務的指令、任何資料庫連線,預設一律連 development。連 production 必須是明確、刻意、有額外確認的動作。
-
改動只走 migration,並納入 git — 凡是能寫成 migration 的結構改動(建表、改欄位、加索引、trigger…)一律寫成 migration 檔放進 version control。絕對禁止直接在資料庫上改了結構卻沒留下 migration 檔。
-
優先軟刪除 — 刪除預設用軟刪(
deleted_at設時間戳),不做硬刪。硬刪只保留給法遵抹除、測試垃圾資料等明確情境。 -
正式環境神聖不可侵犯 — 開發完全基於 development 資料庫。production 資料庫不能亂改、亂刪、亂動,任何碰它的動作都必須先取得使用者明確同意。
-
全操作留稽核 log — 至少做兩層:
- Tier 1 DB-layer audit(trigger 寫
audit_log,抓狀態變更) - Tier 2 Application/Request audit(middleware 寫
request_log,抓 IP/UA/path/status/actor/request_id) - 缺 Tier 2 等於失明(DB trigger 抓不到 IP/UA)
- failed auth 也要走 request_log,不能靜默 401/403
- 保留期照法規分流:業務憑證類至少 5 年、運算 cache 類 90 天、request_log 30-90 天
- Tier 1 DB-layer audit(trigger 寫