點擊上方的語言選單以切換語言

回本GitHub Pages專案首頁

資料庫種類與功能說明

目錄

隨便點選下方其中一個主題便能直接跳到該主題的說明區

1. 關聯式資料庫 (Relational Database)

以表格形式存資料,強調資料一致性 (ACID)。適合金融、訂單、ERP 系統。

資料庫 功能/特點
MySQL 開源、支援 SQL 查詢、適合中小型網站
PostgreSQL 支援複雜查詢、ACID、擴展性強
Oracle Database 企業級關聯式資料庫,強一致性、穩定可靠
Microsoft SQL Server 企業應用、整合微軟生態系統

2. 分散式 / NoSQL 資料庫

資料分散在多台伺服器,支援高並發與水平擴展,部分資料庫採用最終一致性。

資料庫 功能/特點
MongoDB 文件型資料庫 (Document DB),適合存 JSON 結構資料
Redis 快取資料庫,支援即時訊息、排行榜、計數器
Cassandra 高可用、分散式,適合大數據與高流量應用
DynamoDB AWS 提供的 NoSQL,易水平擴展、免維護伺服器
TiDB 分散式關聯式資料庫,支援 SQL 與水平擴展

3. 遊戲開發中的資料庫應用場景

根據遊戲規模與營運需求,開發者會選擇單一或混合式的資料架構:

遊戲規模 資料存儲方案 應用細節 核心目的
純單機遊戲 Local Storage / 存檔文件 .json, .dat 或 SQLite 存於玩家本機。 零延遲、無需伺服器成本。
多人 / 雲端服務 混合架構 (SQL + NoSQL) SQL: 帳號、課金、商城交易。
NoSQL: 好友清單、即時訊息。
確保交易安全並提升社交互動速度。
大型開放世界 (MMO) 複合架構 (SQL + Redis + 快取) SQL: 核心數據存檔。
Redis: 全球排行榜、玩家坐標快取。
在高並發下維持數據一致性與讀取效能。
[Image of basic client-server game architecture]
架構思維: 在遊戲實務中,「混合架構」是業界標準。我們利用 SQL 的 ACID 特性保護玩家資產(如虛擬貨幣),利用 Redis 的記憶體讀取特性處理每秒數萬次的戰鬥狀態更新。

4. 資料庫正規化實戰:以「非法代碼」主角群為例

正規化(Normalization)是整理資料結構的方法,目的是減少冗餘、避免更新異常。在本作中,我們將角色屬性視為「系統代碼」,演釋如何透過正規化管理這些異常樣本。

初始狀態 (未正規化 - 0NF)

將生理屬性與多項能力塞入同一表,導致欄位違反原子性。例如沙德同時擁有「隔空取物」與「操控夜行性動物」,多個值依賴於單一欄位。

-- 冗餘嚴重,且無法精準篩選特定能力的個體
CREATE TABLE Entity_Raw (
Name VARCHAR(20), -- 沙德, 札菲爾, Nephilim-01
Species VARCHAR(20), -- 吸血鬼, 墮天使, 混血巨人
Abilities TEXT, -- "隔空取物, 操控夜行性動物" (違反原子性)
Constraints TEXT, -- "紫外線脆弱, 核心代碼鎖死"
Height_cm INT, -- 183, 210, 210
CanFly BOOLEAN
);

第一正規化 (1NF) - 原子性 (Atomicity)

確保每個欄位不可再分。將 Nephilim 的多項戰鬥規格拆分為獨立紀錄。

CREATE TABLE Entity_1NF (
EntityID INT,
EntityName VARCHAR(20),
AbilityName VARCHAR(50), -- 彈跳力, 紫外線脈衝, 十噸怪力
PRIMARY KEY (EntityID, AbilityName)
);

第二正規化 (2NF) - 消除部分依賴

確保非主鍵欄位完全依賴於主鍵。將角色的「基礎資料」與「戰鬥能力」拆分,避免重複記錄身高資訊。

-- 實體主表 (基礎物理標尺:堅定採用公制整數以對接標準物理公式,免除轉換阻抗)
-- 參考《暮光之城》沃爾圖里與《惡魔城》德古拉之大眾審美標尺進行數據渲染
CREATE TABLE Entities_2NF (
EntityID INT PRIMARY KEY,
EntityName VARCHAR(20), -- 沙德, 札菲爾, 耶和華, 加百列
Height_cm INT, -- 沙德 183 / 札菲爾 210 / 耶和華 226 / 加百列 220
Weight_tons DECIMAL(4,2), -- 物理出力噸級 (沙德 1.50 / 加百列 15.00)
Core_Temperature_C INT -- 平均體溫 (沙德冷循環 18 / 天使熱能 36)
);

第三正規化 (3NF) - 消除傳遞依賴

非主鍵欄位不可依賴於其他非主鍵欄位。在本作設定中,生理特徵(排泄免除、汗腺覺醒、生物熱能、繁殖力鎖死)是由「物種類型」決定的,而非特定個體。若將其塞在同一張表,會造成严重的傳遞依賴(CharacterID -> SpeciesType -> BioFeatures)。

-- 1. 物種系統定義表 (定義不同代碼類型的底層限制,徹底解構偽神繁衍控制與愚民政策)
CREATE TABLE SpeciesCodeProtocol (
SpeciesType VARCHAR(20) PRIMARY KEY,
CanSweat BOOLEAN, -- 札菲爾(墮天使)感官覺醒,開啟汗腺與生物熱能代碼
CanExcrete BOOLEAN, -- 沙德(吸血鬼)高效代謝血液燃料,完全免除潔牙與排泄生理需求
HasFertility BOOLEAN -- 繁衍禁令:吸血鬼與Nephilim生殖系統被永久鎖死,精卵喪失生物活性
);

-- 2. 角色權限主表 (建立個體與物種協議的映射,消除傳遞依賴)
CREATE TABLE Characters_3NF (
CharacterID INT PRIMARY KEY,
CharacterName VARCHAR(20), -- 沙德, 札菲爾, 該隱, 莉莉絲, 加百列
SpeciesType VARCHAR(20),
FOREIGN KEY (SpeciesType) REFERENCES SpeciesCodeProtocol(SpeciesType)
);

第四正規化 (4NF) - 消除多值依賴

當一個資料表內存在複數個「獨立的多值依賴」時,會引發嚴重的資料組合爆炸。以札菲爾 (Zaphir) 為例,他所掌握的「非法反叛技術」與耶和華系統針對他所下載的「系統漏洞弱點」,兩者互不相關,但在 3NF 混合表內會產生毀滅性的冗餘(組合爆炸)。必須實作 4NF 將其徹底拆分:

-- 1. 非法技術多值表 (個體獨立對應的多項非法反叛技術)
CREATE TABLE CharacterIllegalTech_4NF (
CharacterID INT,
TechName VARCHAR(50), -- 符號重組, 氣象干擾, 意志催眠, 隔空取物
PRIMARY KEY (CharacterID, TechName),
FOREIGN KEY (CharacterID) REFERENCES Characters_3NF(CharacterID)
);

-- 2. 系統弱點多值表 (耶和華系統針對該個體鎖定的物理/宗教後門脆弱頻率)
CREATE TABLE CharacterVulnerabilities_4NF (
CharacterID INT,
WeaknessName VARCHAR(50), -- 強紫外線過敏, 純銀核心震盪, 宗教符號抑制
PRIMARY KEY (CharacterID, WeaknessName),
FOREIGN KEY (CharacterID) REFERENCES Characters_3NF(CharacterID)
);

第五正規化 (5NF) - 投影連接正規化 (Join Dependency)

處理無法簡單拆分為二元關係的三方循環依賴(3-way Join Dependency)。在耶和華系統的動態追捕演算法中:特定的 [執法官官員],在特定的 [通緝星級] 下,獲准調度特定的 [環境格式化超頻主權]。這三個實體環環相扣,只有實作 5NF 才能在拆分儲存的同時,精確還原 5 星通緝大天使加百列降臨人間時的執法邏輯,避免產生不合邏輯的「虛假關聯」:

-- 1. 執法官與星級關聯表 (限制哪些大天使可以介入哪些通緝等級)
CREATE TABLE Officer_Wanted_Deployment (
OfficerID INT, -- 大天使加百列, 混血巨人Nephilim
WantedLevel INT, -- 4星通緝, 5星通緝
PRIMARY KEY (OfficerID, WantedLevel)
);

-- 2. 星級與授權主權表 (定義不同通緝等級可以超頻調度的環境指令集)
CREATE TABLE Wanted_Authority_Manifest (
WantedLevel INT,
OverwriteAuthority VARCHAR(50), -- UV_Burst(紫外線爆發), Hydraulic_Domain(高壓水主權), Sky_Command(天氣超頻)
PRIMARY KEY (WantedLevel, OverwriteAuthority)
);

-- 3. 執法官與技能配給表 (定義大天使個體核心硬體所能承載的超頻極限)
CREATE TABLE Officer_Core_Capability (
OfficerID INT,
OverwriteAuthority VARCHAR(50),
PRIMARY KEY (OfficerID, OverwriteAuthority)
);

-- 💡 5NF 終極執法宣告:只有當三張表同時滿足連接依賴時,系統才會生成大天使加百列在 5 星等級下召喚「導電鏈天譴雷擊」的格式化行為。

5. 結論:開發者的技術權衡 (Trade-off)

「過度正規化會增加 JOIN 的運算開銷,影響讀取效能。」

在實際開發中,我們通常遵循 3NF / 4NF。但在處理高頻率讀取的即時數值時,會適度採用反正規化 (Denormalization),以空間換取時間,確保遊戲運行流暢。

分享到 Facebook | 分享到 Line | 分享到 X