系統學習資料庫從基礎概念入手:SQL 三大語句類別、範式設計原則、系統資料庫角色。本文以「通俗易懂、深入理解」為目標,拆解晦澀定義。
| 類別 | 縮寫 | 核心動詞 | 典型語句 |
|---|---|---|---|
| 資料定義語言 | DDL | 定義結構 | CREATE、ALTER、DROP |
| 資料操作語言 | DML | 操作資料 | SELECT、INSERT、UPDATE、DELETE、TRUNCATE、MERGE |
| 資料控制語言 | DCL | 控制權限 | GRANT、REVOKE、DENY |
範式本質:消除修改異常、最小化冗餘。層層遞進,滿足高階必滿足低階。
口訣: 一鍵定乾坤,屬性不可分。
前提: 滿足 1NF。
核心: 非鍵屬性必須完全函數依賴於整個候選鍵,不能只依賴複合鍵的部分。
反例: 訂單表 (OrderID, ProductID) 為複合主鍵,OrderDate 僅依賴 OrderID → 部分依賴 → 違反 2NF。

修正: 拆分為訂單主表 + 訂單明細表。

口訣: 非鍵靠全鍵,部分依賴要不得。
前提: 滿足 1NF + 2NF。
核心: 非鍵屬性之間不得有傳遞依賴,即非鍵屬性不可依賴另一非鍵屬性。
反例: 訂單表含 CustomerID、CompanyName,CompanyName 依賴 CustomerID → 傳遞依賴(OrderID → CustomerID → CompanyName) → 違反 3NF。

修正: 抽離客戶表。
統一口訣: 非鍵屬性依賴鍵,依賴全鍵,不依賴非鍵。

| 資料庫 | 核心職責 | 關鍵特徵 |
|---|---|---|
| master | 實例級元數據、伺服器配置、所有資料庫資訊、啟動資訊 | 損壞則實例無法啟動,務必定期備份 |
| Resource | 隱藏唯讀,存放所有系統對象定義 | 不直接操作,升級/修補時更新 |
| model | 新資料庫模板,每個新庫均為其副本 | 修改 model 影響後續建庫預設值 |
| tempdb | 暫存物件(暫存表、表變數)、排序空間、行版本控制 | 重啟實例時重建(基於 model),高併發瓶頸常在此 |
| msdb | SQL Server Agent 作業/排程/警報、備份/還原歷史、複寫、SSIS 套件 | 自動化維護核心,亦需備份 |