數據庫管理系統

數據庫管理系統（database management system，縮寫：DBMS） 是一種針對對象數據庫，為管理數據庫而設計的大型電腦軟件管理系統。具有代表性的數據管理系統有：Oracle、Microsoft SQL Server、Access、MySQL及PostgreSQL等。通常資料庫管理師會使用資料庫管理系統來建立資料庫系統。
現代DBMS使用不同的數據庫模型追蹤實體、屬性和關係。在個人電腦、大型計算機和主機上應用最廣泛的數據庫管理系統是關係型DBMS（relational DBMS）。在關係型數據庫中，用二維表格表示數據庫中的數據。這些表格稱為關係。

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

**結構**
File:Dbms_solution.jpeg
# 外部層（External Level）或稱觀點層（View Level）：包括數個外部綱要(External Schema)或使用者觀點(User Views)，每個外部綱要描述了特定族群有興趣的部分資料庫並對該族群隱藏剩下的部分，如同概念層，每個外部綱要一般使用表達性資料模型(Representational Data Model)實作。
# 概念層（Conceptual Level）：包含了概念綱要(Conceptual Schema)，概念綱要描述了整個使用者社群的資料庫結構，其隱藏了實際儲存資料的結構並專注於描述實體(Entity)、資料型態(Data Type)、關係(Relationships)、使用者操作(User Operations)以及限制(Constraints)。通常資料庫系統被實作時，表達性資料模型也被用於描述概念綱要。
# 內部層（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 date=20200804232848 . 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，當前版本2022
*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開發，參看
*Tdbengine
*Teradata功能非常強大，適用於非常海量數據，通常用來從事資料倉儲。
*Visual dBase,最終版本5.0，已退出市場。

**參考文獻**

**外部鏈接**

**參見**
 數據庫- 關係數據庫- SQL（結構化查詢語言）