数据库管理系统

**資料庫管理系統**（英語：**database management system**，縮寫：**DBMS**） 是一種針對物件資料庫，為管理資料庫而設計的大型電腦軟體管理系統。具有代表性的資料管理系統有：Oracle、Microsoft SQL Server、Access、MySQL 及 PostgreSQL 等。通常資料庫管理師會使用資料庫管理系統來建立資料庫系統。

現代 DBMS 使用不同的資料庫模型追蹤實體、屬性和關係。在個人電腦、大型電腦和主機上應用最廣泛的資料庫管理系統是關係型 DBMS（relational DBMS）。在關係型資料庫中，用二維表格表示資料庫中的資料。這些表格稱為關係。

## 描述

資料庫管理系統是一套電腦程式，以控制資料庫的分類及數據的存取。一套資料庫包括：

1. 模型語言，用以因應該資料庫管理系統的數據模型，來定義各資料庫的 schema。
  * 最常用的三大類分別為階層式、網路式及關聯式的模型。一個資料庫管理系統可提供一種、兩種，甚至全部三種方式，也可能提供其他形式。最適合的模型要視乎個別應用程式、交易進行比率及查詢經常使用的程度等。現時最常使用的則是 SQL 所支援，相似於關聯式模型但又有些微違背的方式。很多資料庫管理系統也支援 ODBC，以支援程式編寫員以標準方法存取該資料庫管理系統。
2. 最佳化的數據結構（欄位、紀錄及檔案），以支援在永久儲存裝置（permanent data storage device，即比主記憶體（volatile main memory）慢得多）上儲存極大量的數據。
3. 查詢語言及撰寫報表的程式，讓使用者可以互動方式查問資料庫，進行數據分析及依使用者的權限來更新數據。
  * 它必須控制數據的保安，以防止不獲授權的使用者觀看甚至更新資料庫的數據。使用者可以提供有效的密碼來存取整個資料庫或其中一部分。譬如員工資料庫包括所有員工資料的數據，但某組使用者可能只被批准檢視薪金相關的數據，其他的又可能只可以存取工作履歷及病歷數據。
  * 如果該資料庫管理系統向使用者提供可輸入更新資料庫甚至進行查詢的互動途徑，則此能力可以用來管理個人的資料庫。可是，它不一定提供審核或其他在多使用者環境中所需要的各種控制機制。這些機制可能要整套應用程式都為數據輸入或更新而修改才能提供。
4. 交易機制（最好可以保證 ACID 特性），在多使用者同時存取之下仍維持數據完整性（data integrity），與及提供故障排除（fault tolerance）。
  * 資料庫管理系統依靠不容許超過一名使用者在同一時間更新同一項紀錄來維持資料庫的完整性。資料庫管理系統可以用唯一索引限制來避免重覆紀錄。譬如不能有兩位顧客有同一個顧客編號（主鍵）在資料庫中存在。

## 結構

1. **外部層（External Level）或稱觀點層（View Level）** ：包括數個外部綱要 (External Schema) 或使用者觀點 (User Views)，每個外部綱要描述了特定族群有興趣的部分資料庫並對該族群隱藏剩下的部分，如同概念層，每個外部綱要一般使用表達性資料模型 (Representational Data Model) 實作。
2. **概念層（Conceptual Level）** ：包含了概念綱要 (Conceptual Schema)，概念綱要描述了整個使用者社群的資料庫結構，其隱藏了實際儲存資料的結構並專注於描述實體 (Entity)、資料型態 (Data Type)、關係 (Relationships)、使用者操作 (User Operations) 以及限制 (Constraints)。通常資料庫系統被實作時，表達性資料模型也被用於描述概念綱要。
3. **內部層（Internal Level）** ：內有內部綱要 (Internal Schema)，內部綱要描述的是實際儲存資料的結構，其使用實體資料模型 (Physical Data Model) 並詳細描述資料庫的資料儲存 (Data Storage) 及存取路徑 (Access Path)。

## 優點

一個好的 DBMS 應該具有的特點應包括:

* 減少多餘的資料儲存 (Controlling Redundancy)
* 限制未授權的存取 (Restricting Unauthorized Access)
* 提供程式物件的持續儲存 (Providing Persistent Storage for Program Objects)
* 為達有效查詢的目的提供儲存結構及搜尋技術 (Providing Storage Structure and Search Techniques for Efficient Query Processing)
* 提供備份及復原 (Providing Backup and Recovery)
* 提供多使用者介面 (Providing Multiple User Interfaces)
* 表達資料間的複雜關係 (Representing Complex Relationships among Data)
* 強化完整限制 (Enforcing Integrity Constraint)
* 使用 "規則" 及 "觸發" 以允許推斷及動作 (Permitting Inferencing and Actions Using Rules and Triggers)

## 常見資料庫管理系統

### 開放原始碼資料庫系統

* Apache Derby－Apache 軟體基金會的純 Java 資料庫管理系統
* Berkeley DB，加州大學 Berkeley 分校研究成果
* eXist，簡單的 XML 開放原始碼資料庫
* 火鳥
* HSQL
* Ingres
* LevelDB－Google 所研發的鍵／值對資料庫編程庫
* mSQL
* MySQL，網路上十分流行的資料庫伺服器，若結合 Linux 系統、PHP 指令碼技術和 ApacheWeb 伺服器使用，則被稱為 LAMP。
* PostgreSQL
* SQLite，支援完全的 SQL 標準資料庫，基於命令列
* Xindice，簡單的 XML 資料庫，由 Apache 軟體基金會開發

### 商業資料庫系統

* 4th Dimension 或者叫 4D，是一套從 Mac OS 發展出來的資料庫系統。現在亦有閞發視窗版。
* Adabas Software AG（德國）開發的的資料庫參看這裡
* askSam, 結合了資料庫和文字編輯，具有很多革新特性
* Caché，適用於企業內部系統應用
* Conzept16
* c-tree Plus FairCom 公司的 ISAM 和關聯式資料庫。參看 http://www.faircom.com （頁面存檔備份，存於網際網路檔案館）. C 語言編寫。
* DB1 IBM 產品
* DB2 IBM 產品，目前版本 10.5（截至 2013 年 11 月 1 日）。
* dBase 在 DOS 時代十分重要的資料庫，Windows 版本是 Visual dBase
* FileMaker 由 Claris 演化而來，一個介面非常友好的關係型資料庫，能夠同時在 Mac OS 和 Windows 上使用，最新版本 12.0
* FoxBase 被微軟收購，繼續開發出微軟 FoxPro，2.6 版之前有 DOS 和 Windows 版。
* Google Fusion Tables
* Gupta SQLBase，目前版本 9.0
* HyperFileSQL
* IDMS
* IMS
* Informix，目前版本 10.0（Cheetah）
* InterBase
* MaxDB 參看 SAP DB
* Microsoft Access，微軟公司 Office 組件之一，目前版本 Access 2016（另外還有 6.0、97、2000、XP/2002、2003、2007、2010、2013），從微軟公司兼併的一家公司的產品發展而來。
* Microsoft Visual FoxPro, 目前版本 9.0
* MS SQL-Server，目前版本 2014 SP1
* Sybase，早期版本被微軟購買開發出 SQL-Server。
* Oracle，目前版本 18c，最受歡迎的商業資料庫
* Paradox Borland 開發後轉手 Corel（WordPerfect Office）繼續開發
* PrimeBase
* RRDtool，Round Robin Database
* SAP DB 由 SAP 開發，後由 MySQL 繼續開發和維護現屬於 MaxDB。
* Tamino XML 資料庫 k，基於 Adabas 的版本由 Software AG 開發，參看 [1]
* Tdbengine
* Teradata 功能非常強大，適用於非常海量資料，通常用來從事資料倉儲。
* Visual dBase, 最終版本 5.0，已登出市場。

## 參考文獻

## 外部連結

## 參見

* 資料庫
* 關聯式資料庫
* SQL（結構化查詢語言）