Chapter 1: Overview of Database Systems ─ 嘉義大學 李延憲 教授
在資料庫出現之前,應用程式各自管理自己的資料檔案。以圖書館系統為例,不同程式各自維護不同的檔案:
每個程式都有自己的檔案,資料重複又分散,造成以下六大問題:
同一筆資料(如學生姓名)重複存在多個檔案中,導致:
資料分散在不同檔案、不同格式中,新的應用程式難以取得需要的資料。
檔案被開啟時會鎖定,無法同時存取。資料庫透過交易隔離等級來解決:
| 隔離等級 | Dirty Reads | Non-repeatable Reads | Phantom Reads |
|---|---|---|---|
| Read Uncommitted | 可能 ✗ | 可能 ✗ | 可能 ✗ |
| Read Committed | 防止 ✓ | 可能 ✗ | 可能 ✗ |
| Repeatable Read | 防止 ✓ | 防止 ✓ | 可能 ✗ |
| Serializable | 防止 ✓ | 防止 ✓ | 防止 ✓ |
應用程式可以隨意新增需求到檔案,缺乏統一的存取控制。
難以維護和確保資料的正確性與一致性。
資料結構改變時,應用程式也必須跟著修改,難以強制新的約束。
資料庫系統的基本架構由三個核心元件組成:
重點:應用程式不直接存取資料庫,而是透過 DBMS 作為中介。這是與傳統檔案系統最大的差異。
資料庫是一個具有以下四個特性的資料集合:
💡 點擊每個特性可以展開詳細說明
Schema 變動少(結構改變),Instance 變動頻繁(資料增刪改)。
相較於傳統檔案系統,資料庫方法具有以下五大特性:
💡 點擊每個特性可以展開詳細說明
ANSI/SPARC 提出的三層架構,將資料庫系統分為三個抽象層次,實現資料獨立性:
個別使用者的視圖(External Schema)。每個使用者或應用程式只看到自己需要的部分。
圖書館範例:
External Schema(Book Checkout/Return):Checkout-Info(SSN#, Name, Call#, Checkout-date)
社群使用者的視圖(Conceptual Schema)。描述整個資料庫的邏輯結構。
圖書館範例:
Student(SSN, Name, Address, Phone, Fine)
Book(Call#, Title, Authors, Publisher, Cost)
Checkout-In(Call#, SSN, Checkout-date, Due-date, Return-date)
Recall(Call#, Recaller-SSN, Recall-date)
儲存視圖(Internal Schema)。描述資料在磁碟上的實際儲存方式,包括索引、檔案組織等。
使用者和應用程式不需要知道這一層的細節。
💡 點擊每一層可以展開詳細說明和範例
External Schema 的欄位如何對應到 Conceptual Schema:
| External Schema 欄位 | → | Conceptual Schema 來源 |
|---|---|---|
| Checkout-Info.SSN# | → | Student.SSN |
| Checkout-Info.Name | → | Student.Name |
| Checkout-Info.Call# | → | Book.Call# |
| Checkout-Info.Checkout-date | → | Checkout-In.Checkout-date |
資料模型是一組概念工具,用來描述資料、資料關係、語意(semantics)和一致性約束(consistency constraints)。
目前最主流的是 Relational Model(關聯式模型),如 MySQL、PostgreSQL、Oracle 等都是關聯式資料庫。
資料獨立性是資料庫系統最重要的優勢之一,分為兩種:
DBMS(Database Management System)是一組通用程式集合,用來:
DBMS 內部由多個元件組成,各司其職。點擊每個元件查看功能說明:
💡 點擊每個元件可以展開功能說明
資料庫使用不同類型的語言來進行不同的操作:
用來定義、取得、修改三層 Schema 的語言。
常見指令:CREATE TABLE、ALTER TABLE、DROP TABLE
作用於:External Schema、Conceptual Schema、Internal Schema
用來操作資料的語言,也就是 CRUD 操作。
常見指令:
INSERT — 新增資料(Create)SELECT — 查詢資料(Read)UPDATE — 更新資料(Update)DELETE — 刪除資料(Delete)用來定義存取授權的語言,控制誰可以做什麼。
常見指令:GRANT(授予權限)、REVOKE(撤銷權限)
💡 點擊每種語言可以展開詳細說明和範例
完成學習目標來解鎖成就!
答對第一題
累計答對 5 題
累計答對 10 題
累計答對 20 題
所有題目全部答對(零失誤)
完成一半以上的章節
完成所有 11 個章節
在同一個 section 連續答對所有題目