一、邏輯資料庫設計
正規化與反正規化平衡
- 前三正規化(1NF 無重複群、2NF 非鍵全函數依賴主鍵、3NF 非鍵不傳遞依賴)減少冗余、節省頁面,但可能產生 4+ 路 JOIN 降低效能。
- 反正規化技巧:
- 頻繁多表 JOIN → 在實體表新增冗余欄位(如外鍵關聯的描述欄位)。
- 常用彙總欄位(總計、最大值)直接儲存,配合 Trigger 維護一致性。
- 垂直分割:將頻繁存取欄位與冷門欄位分置不同表,共享主鍵。
- 水平分割:歷史資料與熱門資料分表,或依業務區域(部門、地區)分割。
二、物理資料庫實作
- 資料類型最小化:能用
SMALLINT 勿用 INT,索引更窄、單頁容納更多列、I/O 更少。
- 檔案群分離:資料表置於一實體裝置,非叢集索引置於另一裝置;大表跨多磁碟控制器分散 I/O。
- TEXT/IMAGE 獨立檔案群:將大型物件移至專用磁碟/控制器,避免干擾一般查詢。
三、硬體系統規劃
CPU
最低 Pentium 100(2-3 用戶);關鍵應用建議 Pentium Pro / Pentium II 以上,支援 SMP 平行處理。
記憶體 (RAM)
SQL Server 緩衝池極度依賴 RAM。建議:
- 小型:256 MB 以上
- 中型:1-2 GB
- 大型:4 GB+(配合 AWE / 64-bit 突破 4GB 限制)