一、資料庫系統概論

十鱷魚
twelvefish
Published in
6 min readJul 4, 2021
Photo by Markus Winkler on Unsplash

《每日一句》You have to do the best what God gave you.

你必須盡力發揮上帝所賜予你的。<阿甘正傳>

資料庫

將資料以系統化的方式儲存在一起,並減少資料的重複性

資料庫管理系統 (DataBase Management System,DBMS)

資料庫系統所帶來的優點

1、避免資料重覆存放 (Data Redundancy)

  • 透過資料集中化,避免資料重複存放

2、避免資料不一致 (Inconsistency)

  • 資料具有傳播更新 (propagating update) 的特性確保任何更新的動作會自動地更新到其它重複的資料,以減少不一致現象

3、限制未授權的存取 (Restricting Unauthorized Access)

  • 提供適當的安全性與認証機制,針對資料庫的帳密存取權限

4、提供備份與回復功能 (Providing Backup and Recovery)

  • 確保資料能回到之前的狀態

5、安全性與完整性控制 (Security Constraints and Integrity Constraints)

  • 資料庫的集中控制讓 DBA 更容易從事安全性 (Security) 與完整性(Integrity) 的限制

6、資料獨立性 (Data Independence)

  • 儲存方式的改變或資料庫結構的改變不會影響到上一層次的應用

View (觀點、景觀)

  • 實際存在於資料庫的表格所衍生出來的關聯表格
  • 不需以實體的形式存在,也不需要儲存實體得資料,可視為虛擬表格 (Virtual Table)

Meta-data

  • 用來描述資料的資料,稱之為中繼資料 (Meta-data)
  • 資料庫系統具有自我描述 (Self-Description) 的特性
  • 包含資料的型態、儲存格式、關係及各種限制、實際儲存結構,ex: 循序檔、索引檔

資料冗餘

資料冗餘會帶來的問題

  • 空間浪費
  • 更新資料時,產生不一致
  • 浪費系統資源和時間

控制冗餘

  • 冗餘欄位位於資料庫,用以加速存取速度
  • 使用靜態 tables,複製資料以減少 DB 存取次數

為何有控制冗餘的發生

  • 計算資料過於龐大,可以事先計算出來,常用於報表

ANSI/SPARC 三層式架構

外部層 (External Level)

  • 不同使用者有不同的資料呈現
  • 為使用者的景觀 (View),為最接近使用者的層次

概念層 (Conceptual Level)

  • 描述資料庫儲存的整體性資料,為資料庫設計的核心,ex: 資料型態、關係、使用者操作限制

內部層 (Internal Level)

  • 資料實際儲存方法,描述資料庫的資料儲存和存取路徑的完整細節
  • 資料儲存結構,ex: 循序檔、索引檔

資料獨立性 (Data Independence)

修改資料庫的某一層架構時,不影響到較高層式架構

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

  • 改變概念層時,不需要跟著改變外部層及其應用程式
  • ex: 在資料庫新增一個欄位,外部層不需作任何更動

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

  • 改變內部層時,不需要跟著改變概念層和外部層
  • ex: 將循序檔改為索引檔,概念層和外部層不需變動

資料庫架構

主從式架構 (Client/Server)

  • 可藉由 Client 端本身的運算能力,分擔 Server 端處理資料的負荷。
  • 當 Server 種類變多,Client 也需因此而安裝多個介面
  • 當 Client 增多時,Server 的負荷也會變重

多層式架構 Multi-Tier Architecture( 3-tier architecture)

  • 將應用程式代理者 (Application agent) 置於 Client 與 Server 中間,存放企業應用邏輯 (Business logic),以處理 Client 與 Server 間往來的業務
  • 若規模不斷擴大,中間端將成為瓶頸

分散式資料庫系統 (Distributed Database System)

  • 可視為單一資料庫系統,但實際上資料卻是分散在網路的多個地方
  • 透通性 (Transparency):不需要了解細節,即可正常運作的特性
  • ex: 存取透通性、位置透通性、分割透通性

分散式資料庫優點

  • 區域自主性
  • 不倚賴中央點
  • 持續操作性
  • 資料分割、重複、位置獨立性
  • 分散式查詢處理
  • 分散式交易管理
  • 硬體、OS、網路、DBMS系統獨立性

資料分割 (Data fragmentation)

  • 水平分割、垂直分割、混合式分割

資料分割需滿足

  • 完整性 : 分割後必須保有所有分割之前的資料
  • 重組性 : 分割後可經由運算回復成分割前的資料關聯
  • 互斥性 : 水平分割後,相同資料不可重複出現於不同分割部分中

ODBC (Open Database Connectivity)

  • Server 端資料庫系統與 Client 端應用程 式之間標準的的 API 介面
  • ODBC 是一種讓各種資料庫都具有相同的存取資料介面的程式

資料模型 (Data Model)

階層式 (hieraarchical)

  • 樹狀階層,指標連接
  • 可描述一對一,無法描述多對多
  • 存取速度快,適合大量結構固定的資料
  • 父節點被刪除,子節點也會被刪除
  • 插入、刪除動作複雜

網路式 (network)

  • 可描述一對一,一對多,多對多
  • 父節點可能有多個
  • 存取速度快,可達到資料獨立性
  • 結構複雜,指標過多難理解

關聯式 (relational)

  • 關聯必無重複的紀錄,且記錄順序不重要,屬性順序也不重要
  • 須遵守整合性限制 (個體整合性、參考整合性限制)
  • 採宣告式查詢語言 (SQL)
  • 不適用於大量資料處理

物件導向 (object-oriented)

  • 以物件特性操作資料庫
  • 以 superclass 和 subclass 來表達階層關係
  • 支援非文字資料,聲音、圖片...
  • 實作產品不多,已淘汰

以上針對資料庫的系統概論做個學習筆記

如果你喜歡我的創作,請大力地給我拍拍手 🐊 🐊 🐊

--

--