跳到主要內容

🗃️ 數據庫管理系統基礎

數據庫管理系統簡介

數據庫管理系統(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基礎知識為創建高效、安全和可靠的數據庫應用程序提供了基礎。這些概念適用於不同的數據庫系統,對於處理結構化數據的任何人都至關重要。