0%

資料庫筆記 | 資料庫管理系統 (Database Management System)

資料庫管理系統

資料庫管理系統

資料庫管理系統(Database Management System, 簡稱 DBMS)是一套軟體系統,用來建立、管理、查詢與維護資料庫。它的目的是讓使用者能夠有效地儲存、檢索與操作資料,同時確保資料的安全性、一致性與完整性。以 ATM 為例,當插入卡片之後,ATM 會開始讀取晶片資料,並嘗試從資料庫中抓取帳戶、餘額等所需資訊,並提供使用者進行提款、存款、轉帳等動作。

主要功能

一個資料庫主要的功能是儲存 (store)提取 (retrieve) 資料,並且可以進行增 (Create)、刪 (Delete)、查 (Read)、改 (Update) 四種主要操作(稱為 CRUD)。

常見的 DBMS 種類

分類 例子 說明
關聯式資料庫 (RDBMS) MySQL, PostgreSQL, SQLite, Oracle, SQL Server 資料以「表格(table)」方式儲存,支援 SQL 語言
非關聯式資料庫 (NoSQL) MongoDB(文件型), Redis(鍵值型), Neo4j(圖型) 適合儲存彈性結構或高效率存取的資料
嵌入式資料庫 SQLite 常用於手機 App 或單機應用

資料、資訊、資料庫與中繼資料

名詞 定義 特性 範例
Data 原始、未處理的事實(raw facts) 沒有上下文、無意義、通常是文字或數字片段 25, Raghav, Nagpur
Information 經過處理後有意義的資料 有上下文、能用來判斷或溝通、帶有解釋性 Raghav is 25 years old and lives in Nagpur.
Database 有關聯的資料集合 結構化、各資料彼此相關、可用 DBMS 管理與查詢 銀行系統、圖書館管理系統、鐵路訂票系統
Meta-data 描述其他資料的資料(資料的資料) 非實際內容、描述檔案屬性、便於管理與搜尋 作者, 建立日期, 修改日期, 檔案大小

三層式架構 (Three Tier Architecture)

三層式架構是資料庫系統的分層設計方法,將應用系統劃分為三個邏輯層次,每一層各自負責不同的功能,以達成模組化、易於管理與擴充。

層級 功能說明 舉例
表示層 (Presentation Tier) 使用者介面,負責與終端使用者互動 瀏覽器、App、Web 表單、GUI
邏輯層 (Logic Tier) 處理業務邏輯、規則與計算,負責處理使用者請求與資料邏輯運算 應用程式、API、伺服器端程式(如 Flask、Node.js)
資料層 (Data Tier) 負責實際資料的儲存與管理,處理資料的 CRUD 操作 MySQL、PostgreSQL、Oracle、MongoDB

資料庫架構與抽象化設計

為了讓使用者不用知道資料庫的所有細節,也能順利操作資料,需要將資料進行抽象化 (abstraction)。舉例來說,作為一個圖書館的讀者只需知道借還書,不用知道:

  • 書籍實際儲存在哪個書架(物理位置)
  • 系統如何記錄借書紀錄(資料結構)
  • 資料儲存在硬碟的哪個磁區(物理儲存細節)

言下之意,將複雜的底層細節隱藏起來,只顯示出使用者需要的資訊。

層級 說明與職責 使用者類型
外部層 (External Level) 個別使用者看到的資料視圖(部分資料) 一般使用者
邏輯層 (Logical Level) 描述整個資料庫的結構與關聯 資料庫設計者、工程師
內部層 (Internal Level) 資料實際儲存在磁碟的方式與細節 系統工程師、DBMS本身

綱要 (Schema) 與實例 (Instance)

在資料庫的世界中,結構內容是兩件不同的事。這就像寫程式時會區分「變數的型別」與「變數的值」,資料庫也一樣:

名稱 特性 定義 舉例
Schema 靜態 資料庫的結構定義,描述資料的型態與關聯 表格的欄位名稱、資料型別、主鍵與外鍵等設定
Instance 動態 資料庫中目前的資料內容,是 Schema 的具體化 某筆顯示在資料表中的實際記錄資料
  • Schema:是一種資料庫結構的藍圖或設計圖,定義一個資料庫有哪些資料表、欄位,以及每個欄位的型別、哪些是主鍵與外鍵,甚至是欄位之間的邏輯關聯。
  • Instance:是資料庫狀態的一種具體表現 (database state),在某一特定時刻,資料庫中實際儲存的資料內容。換句話說,是依照 schema 結構填進去的資料。而實例會隨時間變化,因為資料會新增、刪除、修改。

例如以下語法定義 Student 資料表,共三個欄位,並分別設定每個欄位的型別:

1
2
3
4
5
CREATE TABLE Student (
ID INT PRIMARY KEY,
Name VARCHAR(100),
Age INT
);

當使用者進行查找時,會看到以下資訊,即是 instance:

ID Name Age
1 Alice 21
2 Raghav 25

如果刪除 Alice 或新增 Bob,那麼 instance 就變了,但 schema 不會動。

資料模型 (Data Model)

資料模型是一套描述資料、資料結構與資料之間關係的規則與邏輯。不只定義資料的型別與欄位,還定義了資料之間的關聯方式、完整性規則、操作方式等。

模型名稱 說明 舉例/關鍵概念
Hierarchical Model 資料以「樹狀結構」儲存,一對多階層關係 一個公司有多個部門,每部門有多員工
Network Model 資料以「圖結構」儲存,支援多對多關係 一位學生修多門課程、一門課有多位學生
Relational Model 資料以表格方式儲存,是現代主流模型 MySQL、PostgreSQL、SQL Server 等皆使用此模型
Object-Oriented Model 結合物件導向概念 資料與行為一起被封裝為物件,少數 DBMS 採用

實體關係模型 (Entity Relationship Model, ER Model)

ER 模型是一種概念資料模型,用來:

  • 表示現實世界的資料結構與其之間的關聯
  • 為關聯式資料庫 (Relational DB) 設計資料表之前的「藍圖」

ER 模型的產物就是 ER 圖 (ER Diagram),即是用圖形方式表示有哪些實體、有哪些關係、有哪些屬性。

概念名稱 說明
實體 (entity) 現實世界中可以獨立存在的事物(人、物、地點、事件等)
屬性 (Attribute) 實體的特徵資訊(例如學生的姓名、學號、生日)
鍵 (Key) 能唯一識別一個實體的屬性(通常稱為主鍵)
關係 (Relationship) 實體與實體之間的邏輯連結,例如選修、管理、屬於
基數 (Cardinality) 關係的數量型態,如一對一、一對多、多對多