第二章資料庫系統架構 資料庫系統設計理論李紹綸著
本章內容 資料庫系統的成員 使用者 資料 硬體 軟體 資料庫系統環境 (Database System Environment) 資料庫管理系統架構 ANSI/SPARC 三階層綱目架構 資料獨立性 (Data Independence) 資料庫語言 (Database Languages) 資料定義語言 (Data Definition Language) 資料操作語言 (Data Manipulation Language) 資料控制語言 (Data Control Language) 2
資料庫系統的成員 使用者 (User) 資料 (Data) 硬體 (Hardware) 軟體 (Software) 3
終端使用者 (End Users) 使用者 臨時使用者 (Casual Users) 初級 / 參數型使用者 (Naïve / Parametric Users) 應用程式設計師 (Application Programmers) 資料庫管理師 (Database Administrator) 4
初級或參數型使用者 由程式設計師事先寫好的預存程序 SalesByCategory CREATE PROCEDURE SalesByCategory @CategoryName nvarchar(15), @OrdYear nvarchar(4) = '1998' AS IF @OrdYear!= '1996' AND @OrdYear!= '1997' AND @OrdYear!= '1998' BEGIN SELECT @OrdYear = '1998' END SELECT ProductName,TotalPurchase=ROUND(SUM(CONVERT(decimal(14,2), OD.Quantity * (1-OD.Discount) * OD.UnitPrice)), 0) FROM [Order Details] OD, Orders O, Products P, Categories C WHERE OD.OrderID = O.OrderID AND OD.ProductID = P.ProductID AND P.CategoryID = C.CategoryID AND C.CategoryName = @CategoryName AND SUBSTRING(CONVERT(nvarchar(22), O.OrderDate, 111), 1, 4) = @OrdYear GROUP BY ProductName ORDER BY ProductName 5
初級或參數型使用者 參數型使用者執行預存程序 SalesByCategory, 並輸入參數 Beverages 和 1998 EXEC SalesByCategory Beverages,1998 執行預存程序 SalesByCategory 後, 傳回 1998 年所有飲料類各項產品的銷售總金額 6
資料庫管理師的主要工作 決定哪些資料需存入資料庫 決定資料的儲存結構 管理和維護系統目錄 使用者管理和存取控制 資料安全控制 (Data Security Control) 資料完整性檢查 (Data Integrity Checking) 監督與調整資料庫的效能 使用者稽核追蹤 (Audit Trail) 資料庫備份 (Backup) 和回復 (Recovery) 資料轉換 7
資料 一般可分下列四種不同類型的資料 長駐資料 (Persistent Data) 系統目錄 (System Catalog) 索引資料 (Index Data) 交易記錄 (Transaction Log) 8
硬體 電腦主機 磁碟機 磁碟陣列 光碟機櫃 磁帶機 9
軟體 資料庫系統所使用的軟體, 除了作業系統外, 還包含下列三種軟體 資料庫管理系統 (DBMS) 開發工具 (Development Tools) 資料塑模工具 (Data Modeling Tools) 程式設計的整合式開發環境 (Integrated Development Environment) 報表工具 (Reporting Tools) 應用程式 (Application Program) 10
資料庫系統環境 使用者 1使用者 2 使用者 3 程式設計師臨時使用者資料庫管理師 終端使用者介面 應用程式開發工具 使用查詢語言交談 定義資料庫綱目 母語編譯器 前置編譯器 應用程式目的碼 查詢指令敘述 查詢處理器 DDL 編譯器 連結載入 DML 編譯器 資料庫處理器 資料庫管理系統 應用程式執行檔 檔案管理程式 資料庫系統 報表 資料檔案 系統目錄資料字典 11
資料庫管理系統的功能模組 資料定義語言編譯器 (DDL Compiler) 查詢處理器 (Query Processor) 資料操作語言編譯器 (DML Compiler) 前置編譯器 (Pre-compiler) 母語編譯器 (Host Language Compiler) 系統目錄 (System catalog) 資料庫處理器 (Run-time database processor) 檔案管理程式 (File manager) 資料檔案 12
三階層綱目架構案例 資料庫管理系統架構 外部層次 type 使用者視界 1 = record type 使用者視界 2 = record type 使用者視界 3 = record 主管姓名 : string; 員工姓名 : string; 姓名 : string; 生日 : string; 出生日期 : string; 年齡 : string; 電話 : string; 住址 : string; end; end; end; 觀念層次 type 員工資料表 = record 身分證號碼 : string; 姓名 : string; 生日 : string; 地址 : string; 電話 : string; End 內部層次 type 儲存員工資料錄 = record (length = 84) 錄首 : byte(10); 身分證號碼 # : byte(10); Primary Index; 姓名 : byte(6); Index; 生日 : byte(10); 地址 : byte(40); 電話 # : byte(8); end 13
資料庫管理系統架構 ANSI/SPARC 三階層綱目架構 使用者 1 使用者 2 使用者 3 外部層次 外部綱目 1 外部綱目 2 外部綱目 3 邏輯資料獨立性 外部層次與觀念層次之間的對映 觀念層次 實體資料獨立性 觀念綱目 觀念層次與內部層次之間的對映 內部層次 內部綱目 資料庫管理系統 資料庫儲存實體 14
ANSI/SPARC 三階層綱目架構 外部層次 視界層次, 包含外部綱目或稱作使用者視界 觀念層次 邏輯層次, 包含觀念綱目或稱作基本資料表 內部層次 實體層次, 包含內部綱目或稱作儲存綱目 15
使用者視界具有下列四點特性 可以不同的樣式來呈現資料 不同的使用者可以只看到有興趣的資料 相同的資料可以使用不同的欄位名稱 相同的資料可以使用不同的格式 外部層次 16
資料獨立性 資料獨立性 當我們更改某一層次的綱目時, 僅須更改該層次與上一層次之間的對映關係而不需要更改上一層次的綱目 邏輯資料獨立性 當我們要變更觀念綱目時, 我們僅須修改外部層次與觀念層次之間的對映關係, 而不必修改外部綱目或應用程式 實體資料獨立性 當內部綱目有所改變時, 我們僅須修改觀念層次與內部層次之間的對映關係, 而不必修改上一層次的觀念綱目 17
資料庫語言 資料定義語言 (Data Definition Language) 資料操作語言 (Data Manipulation Language) 資料控制語言 (Data Control Language) 18
外部資料定義語言 (External DDL) 資料定義語言 視界定義語言 (View Definition Language) 觀念資料定義語言 (Conceptual DDL) 資料定義語言 (Data Definition Language ) 內部資料定義語言 (Internal DDL) 儲存定義語言 (Storage Definition Language) 19
資料操作語言 程序化資料操作語言 (Procedural DML) 低階資料操作語言 (Low-Level DML) Record-at-time DML 非程序化資料操作語言 (Nonprocedural DML) 高階資料操作語言 (High-Level DML) Set-at-time DML 宣告資料操作語言 (Declarative DML) QBE(Query by Example) 20
主語 (Host Language) 資料操作語言 一般高階程式語言 :Visual Basic.NET 資料子語 (Data Sublanguage) 資料操作語言 DML:SQL 語言 21
鬆散耦合 (Loosely-Coupled) 資料操作語言 我們可以很容易的辨識出何者為主語和何者為資料子語 C 和 COBOL 語言嵌入 SQL 語言 緊密耦合 (Tightly-Coupled) 我們無法區分何者為主語和何者為資料子語 C++.NET C# 和 Visual Basic.NET 語言嵌入 SQL 語言 22
資料控制語言 設定資料庫中各個資料表和視界的使用權限 授予 (Grant) 撤銷 (Revoke) 23