← 返回 DBM

資料庫系統概論 Ch01

Chapter 1: Overview of Database Systems ─ 嘉義大學 李延憲 教授

0/11
完成章節
0
答對題數
0
作答總數
-
正確率

📁 傳統檔案處理系統的問題 Problems of Traditional File Processing

在資料庫出現之前,應用程式各自管理自己的資料檔案。以圖書館系統為例,不同程式各自維護不同的檔案:

圖書館系統範例

  • 學生資訊維護程式(Java):SSN, Name, Address, Phone
  • 借書/還書程式(C#):SSN, Name, Call#, Checkout-date, Due-date, Date-returned
  • 罰款程式(Java):Fine
  • 書籍召回程式(C#):Recaller-SSN#, Call#, Address, Phone, Date-recall

每個程式都有自己的檔案,資料重複又分散,造成以下六大問題:

❶ Data Redundancy(資料冗餘)

同一筆資料(如學生姓名)重複存在多個檔案中,導致:

  • 資料不一致(值和格式可能不同)
  • 浪費儲存空間

❷ Data Isolation(資料孤立)

資料分散在不同檔案、不同格式中,新的應用程式難以取得需要的資料

❸ Concurrent Access Anomalies(並行存取異常)

檔案被開啟時會鎖定,無法同時存取。資料庫透過交易隔離等級來解決:

隔離等級Dirty ReadsNon-repeatable ReadsPhantom Reads
Read Uncommitted可能 ✗可能 ✗可能 ✗
Read Committed防止 ✓可能 ✗可能 ✗
Repeatable Read防止 ✓防止 ✓可能 ✗
Serializable防止 ✓防止 ✓防止 ✓

❹ Security Problem(安全問題)

應用程式可以隨意新增需求到檔案,缺乏統一的存取控制。

❺ Integrity Problems(完整性問題)

難以維護和確保資料的正確性與一致性

❻ Data/Program Dependency(資料/程式相依)

資料結構改變時,應用程式也必須跟著修改,難以強制新的約束。

⚡ 傳統檔案系統 vs 資料庫系統

❌ 傳統檔案系統

  • 每個程式各自管理資料
  • 資料重複、不一致
  • 難以共享資料
  • 無並行控制
  • 無統一安全機制
  • 資料與程式高度耦合

✅ 資料庫系統

  • DBMS 統一管理資料
  • 消除冗餘、保持一致
  • 多程式共享存取
  • 交易與並行控制
  • 統一授權與安全
  • 資料獨立於程式

📝 練習題

Q1:在傳統檔案處理系統中,同一筆資料重複存在多個檔案中,這個問題稱為?
✅ 正確!Data Redundancy(資料冗餘)指的是同一筆資料重複儲存在多個檔案中,會導致不一致和浪費空間。
❌ 答案是 B. Data Redundancy(資料冗餘)。資料冗餘指同一筆資料重複存在多個檔案中,導致不一致和浪費空間。
Q2:哪個交易隔離等級可以防止 Dirty Reads,但無法防止 Non-repeatable Reads?
✅ 正確!Read Committed 保證讀到的是已提交的資料(防止 dirty reads),但重複讀取可能得到不同結果。
❌ 答案是 B. Read Committed。它防止 dirty reads 但允許 non-repeatable reads。
Q3:傳統檔案系統中,資料分散在不同檔案和格式,新程式難以取得資料,這是什麼問題?
✅ 正確!Data Isolation(資料孤立)就是資料分散在不同檔案、不同格式中,新程式難以取得。
❌ 答案是 C. Data Isolation(資料孤立)。資料分散在不同檔案和格式中,新程式難以取得需要的資料。

🏗️ 資料庫系統環境 Database System Environment

資料庫系統的基本架構由三個核心元件組成:

資料庫系統基本架構
📱 Application Programs
應用程式
⚙️ DBMS
資料庫管理系統
💾 Database
資料庫

各元件說明

  • Application Programs(應用程式):使用者透過應用程式與資料庫互動,發出查詢和更新請求
  • DBMS(資料庫管理系統):中介軟體,負責處理所有對資料庫的存取請求,提供安全、並行控制等功能
  • Database(資料庫):包含兩部分 ─ Data(實際資料)和 Metadata(描述資料結構的資料)

重點:應用程式不直接存取資料庫,而是透過 DBMS 作為中介。這是與傳統檔案系統最大的差異。

📝 練習題

Q1:在資料庫系統環境中,應用程式如何存取資料?
✅ 正確!應用程式必須透過 DBMS 來存取資料庫,DBMS 負責處理所有請求。
❌ 答案是 B。在資料庫系統中,應用程式透過 DBMS 存取資料,而非直接讀寫檔案。
Q2:Database 除了包含使用者資料(Data)之外,還包含什麼?
✅ 正確!Database 包含 Data(實際資料)和 Metadata(描述資料結構的資料,也就是 schema 資訊)。
❌ 答案是 B. Metadata(元資料)。資料庫除了儲存使用者資料,還儲存描述資料結構的元資料。

📚 資料庫定義 Database Definition

資料庫是一個具有以下四個特性的資料集合:

Database 四大特性
🔍 Self-describing(自我描述)
資料庫除了使用者資料,還包含資料庫結構的描述(metadata/catalog)。資料庫「知道」自己長什麼樣子。
🔗 Related(相關的)
資料庫中的資料是邏輯上一致的集合,彼此之間有意義的關聯,而非隨意堆放的資料。
🔄 Integrated(整合的)
統一多個不同的資料檔案,消除冗餘。原本分散在各處的資料整合到一起。
👥 Shared(共享的)
提供中央資訊儲存庫,多個應用程式和使用者可以共同存取同一份資料。

💡 點擊每個特性可以展開詳細說明

📝 練習題

Q1:資料庫除了儲存使用者資料外,還包含資料庫結構的描述,這個特性稱為?
✅ 正確!Self-describing(自我描述)表示資料庫包含自身結構的描述(metadata)。
❌ 答案是 C. Self-describing。資料庫「知道」自己的結構,這就是自我描述的特性。
Q2:以下哪個不是資料庫的四大特性之一?
✅ 正確!資料庫四大特性是 Self-describing、Related、Integrated、Shared。Distributed 不在其中。
❌ 答案是 B. Distributed。資料庫四大特性是 Self-describing、Related、Integrated、Shared。
Q3:「統一多個不同的資料檔案,消除冗餘」描述的是資料庫的哪個特性?
✅ 正確!Integrated(整合的)就是把分散的資料統一起來,消除冗餘。
❌ 答案是 C. Integrated(整合的)。整合就是統一多個資料來源,消除重複。

📋 Schema 與 Instance Schema and Instance

📐 Schema(綱要/元資料)

  • 資料庫的描述/結構
  • 不常變動
  • 包含:資料項目的名稱和型別、資料關係、約束等
  • 類比:表格的「欄位定義」

📊 Instance(實例/資料庫狀態)

  • 某一時刻資料庫中的實際資料
  • 經常變動
  • 每次 INSERT/UPDATE/DELETE 都會改變
  • 類比:表格中的「資料列」

Schema 與 State 的演變

Schema 轉換流程
create schema
Schema 1
update schema
Schema 2
...
State 0
→ insert →
State 1
→ update →
State 2
→ delete →
State 3

Schema 變動少(結構改變),Instance 變動頻繁(資料增刪改)。

📝 練習題

Q1:以下關於 Schema 的描述,何者正確?
✅ 正確!Schema 是資料庫的結構描述(metadata),包含名稱、型別、關係、約束等,不常變動。
❌ 答案是 C。Schema 是資料庫的結構描述,不常變動。A 描述的是 Instance。
Q2:每次執行 INSERT、UPDATE、DELETE 操作後,改變的是?
✅ 正確!INSERT/UPDATE/DELETE 改變的是 Instance(資料庫狀態),不是 Schema(結構)。
❌ 答案是 B. Instance。資料的增刪改會改變資料庫的狀態(Instance),而非結構(Schema)。

⭐ 資料庫方法的特性 Characteristics of the Database Approach

相較於傳統檔案系統,資料庫方法具有以下五大特性:

1️⃣ Self-describing Nature(自我描述性質)
資料庫系統不僅包含資料本身,還包含資料的完整描述(metadata),儲存在 system catalog 中。DBMS 可以處理不同的資料庫,因為它能讀取 catalog 來了解結構。
2️⃣ Support Multiple Views(支援多重視圖)
不同使用者可以看到不同的資料子集或組合。例如:學生只看到自己的借書記錄,圖書館員看到所有借還書資訊,管理者看到統計報表。
3️⃣ Data Abstraction(資料抽象化)
DBMS 提供資料的概念表示,隱藏儲存細節。使用者不需要知道資料實際上是怎麼存在磁碟上的。
4️⃣ Data Independence(資料獨立性)
改變資料的儲存方式或結構時,不需要修改應用程式。分為 Logical 和 Physical 兩種(詳見 Section 8)。
5️⃣ Sharing & Multiuser Transaction(資料共享與多使用者交易處理)
多個使用者和應用程式可以同時存取資料庫。DBMS 透過並行控制(concurrency control)確保交易的正確性。

💡 點擊每個特性可以展開詳細說明

📝 練習題

Q1:DBMS 能處理不同的資料庫,是因為它具有什麼特性?
✅ 正確!因為資料庫是 Self-describing 的,DBMS 可以讀取 catalog 來了解任何資料庫的結構。
❌ 答案是 B. Self-describing Nature。DBMS 透過讀取資料庫的 metadata/catalog 來了解其結構。
Q2:不同使用者可以看到不同的資料子集,這是資料庫的哪個特性?
✅ 正確!Support Multiple Views 讓不同使用者看到不同的資料視圖。
❌ 答案是 C. Support Multiple Views。不同使用者可以有不同的資料視圖。

🏛️ ANSI/SPARC 三層架構 Three-Schema Architecture

ANSI/SPARC 提出的三層架構,將資料庫系統分為三個抽象層次,實現資料獨立性:

ANSI/SPARC 三層架構(點擊展開說明)
👤 External Level(外部層) Individual User Views

個別使用者的視圖(External Schema)。每個使用者或應用程式只看到自己需要的部分。

圖書館範例:

External Schema(Book Checkout/Return):Checkout-Info(SSN#, Name, Call#, Checkout-date)

↕ External/Conceptual Mapping
👥 Conceptual Level(概念層) Community User View

社群使用者的視圖(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)

↕ Conceptual/Internal Mapping
💾 Internal Level(內部層) Storage View

儲存視圖(Internal Schema)。描述資料在磁碟上的實際儲存方式,包括索引、檔案組織等。

使用者和應用程式不需要知道這一層的細節。

💡 點擊每一層可以展開詳細說明和範例

Schema Mapping 範例

External Schema 的欄位如何對應到 Conceptual Schema:

External/Conceptual Schema Mapping
External Schema 欄位Conceptual Schema 來源
Checkout-Info.SSN#Student.SSN
Checkout-Info.NameStudent.Name
Checkout-Info.Call#Book.Call#
Checkout-Info.Checkout-dateCheckout-In.Checkout-date

📝 練習題

Q1:ANSI/SPARC 三層架構中,描述整個資料庫邏輯結構的是哪一層?
✅ 正確!Conceptual Level(概念層)描述整個資料庫的邏輯結構,是社群使用者的共同視圖。
❌ 答案是 B. Conceptual Level。概念層描述整個資料庫的邏輯結構。
Q2:External Level 的主要功能是什麼?
✅ 正確!External Level 提供個別使用者或應用程式的資料視圖,每個人只看到自己需要的部分。
❌ 答案是 B。External Level(外部層)提供個別使用者的資料視圖。A 是 Internal Level,C 是 Conceptual Level。
Q3:在圖書館範例中,Checkout-Info.Name 對應到 Conceptual Schema 的哪個欄位?
✅ 正確!Checkout-Info 的 Name 欄位對應到 Student 表的 Name 欄位。
❌ 答案是 C. Student.Name。External Schema 的 Name 來自 Conceptual Schema 中的 Student.Name。

🧩 資料模型 Data Models

資料模型是一組概念工具,用來描述資料、資料關係、語意(semantics)和一致性約束(consistency constraints)。

資料模型分類

🔷 Object-based(物件導向)

  • ER Model(Entity-Relationship Model)
    ─ 實體關係模型,用於概念設計
  • OO Model(Object-Oriented Model)
    ─ 物件導向模型

🔶 Record-based(記錄導向)

  • Relational Model(關聯式模型)
    ─ 最常用,用表格表示資料
  • Network Model(網路模型)
    ─ 用圖形結構表示
  • Hierarchical Model(階層模型)
    ─ 用樹狀結構表示

目前最主流的是 Relational Model(關聯式模型),如 MySQL、PostgreSQL、Oracle 等都是關聯式資料庫。

📝 練習題

Q1:ER Model 屬於哪一類資料模型?
✅ 正確!ER Model(實體關係模型)屬於 Object-based 資料模型。
❌ 答案是 B. Object-based。ER Model 和 OO Model 都屬於 Object-based 資料模型。
Q2:以下哪個不是 Record-based 資料模型?
✅ 正確!ER Model 是 Object-based,不是 Record-based。Record-based 包括 Relational、Network、Hierarchical。
❌ 答案是 C. ER Model。ER Model 屬於 Object-based,而非 Record-based。

🔓 資料獨立性 Data Independence

資料獨立性是資料庫系統最重要的優勢之一,分為兩種:

🔷 Logical Data Independence(邏輯資料獨立性)

  • 改變 Conceptual Schema(概念綱要)
  • 不需要改變 External Schema 或應用程式
  • 例如:在 Student 表新增一個欄位,不影響現有的借書程式
  • 透過 External/Conceptual Mapping 實現

🔷 Physical Data Independence(實體資料獨立性)

  • 改變 Internal Schema(內部綱要)
  • 不需要改變 Conceptual 或 External Schema
  • 例如:改變索引結構或儲存方式,不影響邏輯結構
  • 透過 Conceptual/Internal Mapping 實現
資料獨立性與三層架構的關係
External Schema(外部綱要)
── Logical Data Independence ──
Conceptual Schema(概念綱要)
── Physical Data Independence ──
Internal Schema(內部綱要)

📝 練習題

Q1:在 Student 表新增一個 Email 欄位,但現有的借書程式不需要修改,這體現了什麼?
✅ 正確!改變 Conceptual Schema(新增欄位)而不影響 External Schema 和應用程式,就是 Logical Data Independence。
❌ 答案是 B. Logical Data Independence。改變概念綱要而不影響外部綱要和應用程式。
Q2:將資料庫從 HDD 搬到 SSD,改變了索引結構,但應用程式不需修改,這是?
✅ 正確!改變 Internal Schema(儲存方式)而不影響 Conceptual/External Schema,就是 Physical Data Independence。
❌ 答案是 B. Physical Data Independence。改變實體儲存方式而不影響邏輯結構。
Q3:Logical Data Independence 是透過哪個 Mapping 實現的?
✅ 正確!Logical Data Independence 透過 External/Conceptual Mapping 實現,讓概念層的改變不影響外部層。
❌ 答案是 C. External/Conceptual Mapping。邏輯資料獨立性透過外部/概念層的映射來實現。

⚙️ DBMS 定義與功能 DBMS Definition & Functions

DBMS(Database Management System)是一組通用程式集合,用來:

📐 Defining
定義資料庫結構
🏗️ Constructing
建構資料庫
🔧 Manipulating
操作資料庫
🛡️ Administering
管理資料庫

DBMS 的主要功能

  • 📐 定義/取得/更新 Schema
  • 📊 插入/取得/更新/刪除資料(CRUD)
  • 🔄 並行控制(Concurrency Control)
  • 💾 備份與復原(Backup & Recovery)
  • 🔒 授權服務(Authorization)
  • ✅ 資料完整性(Data Integrity)
  • 🔓 資料獨立性與多重視圖(Data Independence & Multiple Views)

📝 練習題

Q1:DBMS 的四大功能不包括以下哪一項?
✅ 正確!DBMS 四大功能是 Defining、Constructing、Manipulating、Administering。Compiling 不在其中。
❌ 答案是 C. Compiling。DBMS 四大功能是 Defining、Constructing、Manipulating、Administering。
Q2:確保資料庫在系統故障後能恢復到一致狀態,這是 DBMS 的哪個功能?
✅ 正確!Backup & Recovery(備份與復原)確保系統故障後資料庫能恢復到一致狀態。
❌ 答案是 C. Backup & Recovery。備份與復原功能確保故障後的資料一致性。

🏗️ DBMS 架構 DBMS Architecture

DBMS 內部由多個元件組成,各司其職。點擊每個元件查看功能說明:

DBMS 內部架構(點擊元件查看說明)
📱 Database Interface(資料庫介面)
管理應用程式介面,提供高階查詢語言(如 SQL)。是使用者和應用程式與 DBMS 互動的入口。
🛡️ Semantic Data Controller(語意資料控制器)
使用完整性約束授權來檢查請求。確保每個操作都符合資料庫的規則和權限。
🔍 Query Processor / Optimizer(查詢處理器/最佳化器)
將高階查詢請求映射為最佳化的低階操作序列。決定最有效率的執行計畫。
🔄 Transaction Manager(交易管理器)
確保正確可靠的並行存取。管理交易的 ACID 特性(Atomicity, Consistency, Isolation, Durability)。
🔒 Concurrency Control Scheduler(並行控制排程器)
同步資料庫存取,確保多個交易同時執行時不會互相干擾。使用鎖定(locking)等機制。
🔧 Recovery Manager(復原管理器)
確保故障時資料庫的一致性。使用 System Log 來追蹤變更,必要時回滾(rollback)未完成的交易。
💾 Data Manager(資料管理器)
作業系統介面,負責實體存取資料。管理緩衝區(buffer)和磁碟 I/O。
📋 Catalog Manager(目錄管理器)
管理元資料(Metadata)。維護資料庫的結構描述,包括表格定義、索引資訊、使用者權限等。

💡 點擊每個元件可以展開功能說明

其他重要元件

  • System Log:記錄所有交易操作,用於復原
  • Data:實際儲存的使用者資料
  • Catalog (Metadata):資料庫結構的描述資訊

📝 練習題

Q1:負責將高階查詢映射為最佳化低階操作的是 DBMS 的哪個元件?
✅ 正確!Query Processor(查詢處理器)負責將查詢映射為最佳化的低階操作序列。
❌ 答案是 B. Query Processor。查詢處理器負責最佳化查詢執行計畫。
Q2:Recovery Manager 使用什麼來追蹤資料庫的變更?
✅ 正確!Recovery Manager 使用 System Log 來追蹤所有交易操作,以便在故障時進行復原。
❌ 答案是 C. System Log。系統日誌記錄所有交易操作,是復原的依據。
Q3:Semantic Data Controller 的主要功能是什麼?
✅ 正確!Semantic Data Controller 使用完整性約束和授權來檢查每個請求是否合法。
❌ 答案是 C。Semantic Data Controller 負責用完整性約束和授權來檢查請求。

💬 查詢語言 Query Languages

資料庫使用不同類型的語言來進行不同的操作:

📐 DDL — Data Definition Language(資料定義語言)

用來定義、取得、修改三層 Schema 的語言。

常見指令:CREATE TABLEALTER TABLEDROP TABLE

作用於:External Schema、Conceptual Schema、Internal Schema

🔧 DML — Data Manipulation Language(資料操作語言)

用來操作資料的語言,也就是 CRUD 操作。

常見指令:

  • INSERT — 新增資料(Create)
  • SELECT — 查詢資料(Read)
  • UPDATE — 更新資料(Update)
  • DELETE — 刪除資料(Delete)
🔒 DCL — Data Control Language(資料控制語言)

用來定義存取授權的語言,控制誰可以做什麼。

常見指令:GRANT(授予權限)、REVOKE(撤銷權限)

💡 點擊每種語言可以展開詳細說明和範例

📝 練習題

Q1:CREATE TABLE 屬於哪一種查詢語言?
✅ 正確!CREATE TABLE 是 DDL(Data Definition Language)指令,用來定義資料庫結構。
❌ 答案是 B. DDL。CREATE TABLE 用來定義表格結構,屬於 Data Definition Language。
Q2:GRANT 和 REVOKE 屬於哪一種查詢語言?
✅ 正確!GRANT 和 REVOKE 是 DCL(Data Control Language)指令,用來控制存取權限。
❌ 答案是 C. DCL。GRANT/REVOKE 用來管理存取授權,屬於 Data Control Language。
Q3:SELECT、INSERT、UPDATE、DELETE 這四個指令統稱為?
✅ 正確!這四個指令是 DML(Data Manipulation Language),對應 CRUD 操作。
❌ 答案是 C. DML 指令。SELECT/INSERT/UPDATE/DELETE 就是 CRUD,屬於 Data Manipulation Language。

📖 術語表 Glossary

Database資料庫
DBMS (Database Management System)資料庫管理系統
Data Redundancy資料冗餘
Data Isolation資料孤立
Concurrent Access Anomalies並行存取異常
Data Independence資料獨立性
Logical Data Independence邏輯資料獨立性
Physical Data Independence實體資料獨立性
Schema綱要(元資料)
Instance (Database State)實例(資料庫狀態)
Metadata元資料(描述資料的資料)
Catalog目錄(系統目錄)
External Level / External Schema外部層 / 外部綱要
Conceptual Level / Conceptual Schema概念層 / 概念綱要
Internal Level / Internal Schema內部層 / 內部綱要
ANSI/SPARC ArchitectureANSI/SPARC 三層架構
Data Model資料模型
ER Model (Entity-Relationship)實體關係模型
Relational Model關聯式模型
Network Model網路模型
Hierarchical Model階層模型
Object-based Data Model物件導向資料模型
Record-based Data Model記錄導向資料模型
DDL (Data Definition Language)資料定義語言
DML (Data Manipulation Language)資料操作語言
DCL (Data Control Language)資料控制語言
CRUD (Create, Read, Update, Delete)新增、查詢、更新、刪除
Transaction交易
Concurrency Control並行控制
Dirty Read髒讀(讀到未提交的資料)
Non-repeatable Read不可重複讀
Phantom Read幻讀
Read Uncommitted讀取未提交(最低隔離等級)
Read Committed讀取已提交
Repeatable Read可重複讀
Serializable可序列化(最高隔離等級)
Data Abstraction資料抽象化
Self-describing自我描述
Query Processor查詢處理器
Transaction Manager交易管理器
Recovery Manager復原管理器
Data Manager資料管理器
Catalog Manager目錄管理器
Semantic Data Controller語意資料控制器
System Log系統日誌
Backup & Recovery備份與復原
Authorization授權
Integrity Constraint完整性約束
Schema Mapping綱要映射

🏆 成就系統

完成學習目標來解鎖成就!

🎯

初試啼聲

答對第一題

小有成就

累計答對 5 題

🌟

學有所成

累計答對 10 題

💫

融會貫通

累計答對 20 題

👑

完美無缺

所有題目全部答對(零失誤)

📚

半途不廢

完成一半以上的章節

🎓

學業有成

完成所有 11 個章節

快問快答

在同一個 section 連續答對所有題目