数据库管理系统

数据库管理系统（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）。
- 数据库管理系统依靠不容许超过一名使用者在同一时间更新同一项纪录来维持数据库的完整性。数据库管理系统可以用唯一索引限制来避免重复纪录。譬如不能有两位顾客有同一个顾客编号（主键）在数据库中存在。

## 结构

<image>

- 外部层（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和关系数据库。参看 . 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，已退出市场。