🗃️ 數據庫管理系統基礎
數據庫管理系統簡介
數據庫管理系統(DBMS)是專為創建、維護和使用數據庫而設計的專用軟件。了解DBMS基礎知識對於在現代信息系統中有效管理和操作數據至關重要。
🧩 理解數據庫和DBMS
📊 什麼是數據庫?
- 結構化數據的有組織集合
- 設計用於高效地存儲、檢索和管理信息
- 通常組織為具有行和列的表格
- 支持不同數據元素之間的關係
- 例子:學生記錄、庫存系統、客戶信息
🔧 什麼是DBMS?
- 管理數據庫的軟件
- 提供用戶/應用程序與數據之間的接口
- 處理數據存儲、檢索、更新和管理
- 確保數據安全、完整性和一致性
- 例子:Microsoft Access、MySQL、Oracle、SQL Server
📋 DBMS的主要特點
- 數據定義:創建和修改數據庫結構的工具
- 數據操作:插入、更新、檢索和刪除數據的方法
- 數據安全:保護數據免受未授權訪問的控制
- 數據完整性:確保數據準確性和一致性的規則
- 數據恢復:故障後恢復數據的機制
- 並發控制:同時數據訪問的管理
📑 數據庫模型
📊 關係型數據庫模型
- 最常見和廣泛使用的模型
- 數據組織在具有行和列的表格(關係)中
- 通過鍵建立關係
- 使用SQL(結構化查詢語言)進行數據操作
- 例子:MySQL、Microsoft SQL Server、Oracle
表格結構示例:
STUDENTS
ID | Name | Age | Class
----|-------------|-----|------
001 | 陳大文 | 16 | 5A
002 | 黃美美 | 15 | 5B
003 | 李小明 | 16 | 5A
📁 層次數據庫模型
- 數據以樹狀結構組織
- 記錄之間的父子關係
- 一個父項可以有多個子項,但每個子項只有一個父項
- 對一對多關係高效
- 例子:IBM的信息管理系統(IMS)
🕸️ 網絡數據庫模型
- 層次模型的擴展
- 允許多對多關係
- 子記錄可以有多個父記錄
- 比層次模型更靈活但更複雜
- 例子:集成數據存儲(IDS)
📊 面向對象數據庫模型
- 將數據存儲為對象(類似於面向對象編程)
- 將數據和方法封裝在一起
- 支持複雜數據類型和關係
- 適用於多媒體和複雜應用程序
- 例子:MongoDB、ObjectDB
🧱 數據庫組件
📋 表格
- 存儲數據的主要結構
- 組織為行(記錄)和列(字段)
- 每個表通常代表單一實體類型
- 例子:STUDENTS、COURSES、ENROLLMENTS
表格創建示例:
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
DateOfBirth DATE,
ClassID INT
);
🔑 鍵
- 主鍵:唯一標識表中的每條記錄
- 外鍵:引用另一個表中的主鍵
- 複合鍵:共同形成唯一標識符的多個列
- 候選鍵:可用作主鍵的列
鍵定義示例:
-- 主鍵
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
Name VARCHAR(100)
);
-- 外鍵
CREATE TABLE Enrollments (
EnrollmentID INT PRIMARY KEY,
StudentID INT,
CourseID INT,
FOREIGN KEY (StudentID) REFERENCES Students(StudentID)
);
🔄 關係
- 一對一:表A中的一條記錄與表B中的恰好一條記錄相關
- 一對多:表A中的一條記錄與表B中的多條記錄相關
- 多對多:表A中的多條記錄與表B中的多條記錄相關
關係圖示例:
STUDENTS (1) ---- (*) ENROLLMENTS (*) ---- (1) COURSES
📝 字段和數據類型
- 文本/字符串:名稱、描述、地址
- 數字:整數、小數、貨幣
- 日期/時間:日期、時間、時間戳
- 布爾值:真/假值
- 二進制:圖像、文檔、文件
- 備忘錄/CLOB:大型文本字段
字段定義示例:
CREATE TABLE Products (
ProductID INT,
ProductName VARCHAR(100),
UnitPrice DECIMAL(10,2),
InStock BOOLEAN,
DateAdded DATE,
Description TEXT
);
🛠️ 基本DBMS操作
📝 創建數據庫和表格
- 定義數據庫架構
- 指定表格、字段和關係
- 設置約束和規則
- 建立索引以提高性能
數據庫創建示例:
-- 創建數據庫
CREATE DATABASE SchoolSystem;
-- 使用數據庫
USE SchoolSystem;
-- 創建表格
CREATE TABLE Students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Grade INT
);
📊 數據操作
- INSERT:添加新記錄
- SELECT:檢索數據
- UPDATE:修改現有記錄
- DELETE:刪除記錄
操作示例:
-- 插入數據
INSERT INTO Students (StudentID, FirstName, LastName, Grade)
VALUES (1, '大文', '陳', 11);
-- 選擇數據
SELECT FirstName, LastName FROM Students WHERE Grade = 11;
-- 更新數據
UPDATE Students SET Grade = 12 WHERE StudentID = 1;
-- 刪除數據
DELETE FROM Students WHERE StudentID = 1;
🔍 查詢數據
- 檢索特定信息
- 使用WHERE子句過濾
- 使用ORDER BY排序
- 使用GROUP BY分組
- 連接多個表格
查詢示例:
-- 帶過濾器的基本查詢
SELECT * FROM Students WHERE Grade > 10;
-- 排序結果
SELECT * FROM Students ORDER BY LastName ASC;
-- 連接表格
SELECT s.FirstName, s.LastName, c.ClassName
FROM Students s
JOIN Classes c ON s.ClassID = c.ClassID;
📊 數據視圖
- 基於查詢結果的虛擬表格
- 簡化複雜查詢
- 限制對某些數據的訪問
- 以特定格式呈現數據
視圖創建示例:
CREATE VIEW StudentGrades AS
SELECT s.FirstName, s.LastName, c.CourseName, e.Grade
FROM Students s
JOIN Enrollments e ON s.StudentID = e.StudentID
JOIN Courses c ON e.CourseID = c.CourseID;
🔒 數據庫安全和管理
👤 用戶管理
- 創建用戶帳戶
- 分配權限
- 基於角色的訪問控制
- 身份驗證機制
用戶管理示例:
-- 創建用戶
CREATE USER 'teacher'@'localhost' IDENTIFIED BY 'password';
-- 授予權限
GRANT SELECT ON SchoolSystem.Students TO 'teacher'@'localhost';
🛡️ 數據安全
- 訪問控制
- 加密
- 審計跟踪
- 備份和恢復程序
🔄 數據庫維護
- 備份和還原操作
- 性能優化
- 索引管理
- 數據庫完整性檢查
💼 實際應用
🏫 學校信息系統
- 學生記錄管理
- 課程註冊追踪
- 成績記錄和報告
- 出勤監控
📦 庫存管理
- 產品追踪
- 庫存水平監控
- 訂單處理
- 供應商管理
👥 客戶關係管理
- 客戶信息存儲
- 購買歷史追踪
- 通訊記錄
- 服務請求管理
💰 財務系統
- 交易記錄
- 帳戶管理
- 財務報告
- 預算追踪
了解DBMS基礎知識為創建高效、安全和可靠的數據庫應用程序提供了基礎。這些概念適用於不同的數據庫系統,對於處理結構化數據的任何人都至關重要。