優秀的數據庫設計不是一次畫圖,而是持續演進的工程藝術。本文彙總 20 條經驗法則,涵蓋命名、類型、約束、索引、範式、安全、備份、文檔、運維八大維度,作為設計評審核對清單。
snake_case(school_course),主鍵統一 id,外鍵 {ref_table}_id。student_course 而非 student_courses,語義更清晰。tbl_、_table 僅增加噪音,現代 IDE 已能區分對象類型。BCrypt/Argon2 + 隨機鹽,嚴禁明文/可逆加密。BIGINT UNSIGNED 容量 1844 京,性能最優,避免 UUID 亂序寫入導致頁分裂。is_active TINYINT(1) DEFAULT 1,命名以 is_ 開頭。SELECT/INSERT/UPDATE/DELETE,DROP/ALTER 僅 DBA 帳號持有。@QueryHint、二級緩存、批量操作優化。FOREIGN KEY、NOT NULL、CHECK、UNIQUE 由數據庫強制,應用層只做友好提示。pt-index-usage、sys.schema_unused_indexes 定期清理無效索引。IMAGE/BLOB 獨立表,主表僅存引用 ID/URL,避免緩衝池污染。[ ] 命名規範 snake_case / 單數表名 / 無前綴 [ ] 主鍵 BIGINT UNSIGNED AUTO_INCREMENT [ ] 密碼哈希存儲 / 敏感字段加密 [ ] 所有業務鍵建唯一索引 / 外鍵約束 [ ] 無 SELECT * / 無隱式類型轉換 [ ] 核心表冷熱分離 / 大字段拆表 [ ] 讀寫分離 / 多副本 / 異地備份驗證 [ ] 文檔入庫:ER圖、字典、遷腳本、變更記錄 [ ] 索引覆蓋率 > 90% / 無未用索引 [ ] 慢查詢預案:長查詢改寫 / 物化視圖 / 緩存
將 20 條法則內化為團隊文化,數據庫將從「故障源頭」轉型為「業務加速器」。