跳至主要内容

什么是 DBMS?关键概念与示例解析

DBMS 让数据井井有条、安全可靠、易于访问。它帮助企业和应用无乱象地存储信息,确保一切各就各位、随取随用。
Laiba Siddiqui
Laiba Siddiqui

创建您的免费账户

实践并学习路径你的进步。

使用 Google 继续继续即表示您接受我们的 使用条款,我们的 隐私政策 ,并且您的数据存储在美国。

数据无处不在——从客户记录到应用交易——保持其井然有序至关重要。事实上,预计到 2028 年全球数据量将达到 394 个泽字节。这是一个令人震撼的数字,如果没有一套系统来管理,它很快就会变得一团糟。

这就是我们使用数据库管理系统(DBMS)的原因。它帮助存储和管理数据,使企业和应用顺畅运行。在本指南中,我将拆解什么是 DBMS、它如何工作、有哪些类型,以及为什么它对现代数据存储与管理至关重要。

什么是 DBMS?

数据库管理系统(DBMS)可以高效地存储、组织并管理数据。没有 DBMS,数据会分散在多个文件中,难以定位或更新。DBMS 通过提供一个集中式系统简化这些任务,使用户能够轻松添加、修改或删除数据,同时确保准确性和一致性。

DBMS 的关键功能

在数据管理方面,DBMS 承担了大量繁重工作。它组织并保护信息,让我们在需要时快速找到所需内容而不头疼。下面详细看看它的关键功能。

数据定义

数据库使用 DDL(数据定义语言)以结构化方式存储信息。通过 DDL,我们可以创建表、添加字段并将它们关联起来,例如建立一个包含姓名、电话号码和电子邮箱的客户列表。

以下是一些常见的 DDL 命令:

1)CREATE 用于创建新表、字段和关系。它帮助我们定义要存储的数据类型。假设您在构建客户数据库,那么可以这样创建一个用于存储客户信息的表:

CREATE TABLE Customers (
ID INT PRIMARY KEY, 
Name VARCHAR(100)
);

2)ALTER 修改现有表(添加、删除或更改列)。这里我在 Customers 表中添加了一个新字段(email):

ALTER TABLE Customers ADD Email VARCHAR(255);

3)DROP 永久删除数据库对象。以下是我删除 Customers 表的方法:

DROP TABLE Customers;

4)TRUNCATE 会删除表中的所有记录,但保留其结构。与 DROP 不同,它保留表本身,仍可继续使用。命令示例如下:

TRUNCATE TABLE Customers;

5)RENAME 用于更改表或列名。例如,将 Customers 表重命名为 Clients,我会这样做:

RENAME TABLE Customers TO Clients;

数据操作

在设置好数据库之后,我们就可以开始操作数据——使用数据操作语言(DML)添加、更新或删除记录。

以下是一些常见的 DML 命令:

1)INSERT 向表中添加一行新数据。例如,要向我们的 Customers 表添加一位新客户,我会使用:

INSERT INTO Customers 
(ID, Name, Email) 
VALUES 
(1, Drake White, '[email protected]');

这会向表中添加一位客户,ID 为 1,姓名为 Drake White,邮箱为 [email protected]。

2)UPDATE 修改表中的现有记录。要更改某位客户的邮箱,我会这样更新其记录:

UPDATE Customers SET Email = 'drake [email protected]' WHERE ID = 1;

这会将 ID 为 1 的客户邮箱更新为 drake [email protected]。

3)DELETE 从表中删除特定数据。要删除 ID 为 1 的客户,我会使用:

DELETE FROM Customers WHERE ID = 1;

注意:使用 DELETE 要小心——数据一旦删除就没了(除非您有备份)。

4)SELECT 从表中检索数据。例如,要查看表中的所有客户,我会使用:

SELECT * FROM Customers;`

如果我只想查看特定姓名的客户,可以用:

SELECT * FROM Customers WHERE Name = 'Drake White';

这将仅返回 Name 字段为 Drake White 的记录。

数据检索

如上一节所示,DBMS 通过 SQL 或其他查询语言快速检索信息。我们无需手动在成千上万条记录中搜索,只需用查询就能在几秒内找到所需内容。

比如我想找到所有来自 New York 的客户,与其翻阅成千上万条记录,不如直接使用这样的 SQL 查询:

SELECT * FROM customers WHERE city = 'New York';

数据完整性与安全

DBMS 通过为每条记录分配唯一 ID 并关联相关表来保持数据准确。它用主键连接行,并通过外键在表之间维持一致性。为确保数据安全,它会使用:

  • 身份验证来控制谁可以访问数据。
  • 加密以防止黑客攻击。
  • 访问控制来管理谁可以查看或编辑。

数据存储与备份

DBMS 高效存储数据并维护其备份。它使用索引来加速搜索,并内置备份与恢复功能,以防止因误删或系统故障导致的数据丢失。这样一来,即使出现问题,我们也能恢复数据而不丢失重要信息。

DBMS 的类型

并非所有 DBMS 的工作方式都相同。事实上,它有多种类型,分别针对不同的数据类型和使用场景而设计。让我们用一些易懂的示例来拆解。

层次型 DBMS

层次型 DBMS 将数据构造成类似家谱的结构,每条记录都有一个父节点,每个父节点可以有多个子节点。然而,每个子节点只能有一个父节点(即一对多关系)。

想象一家公司的组织架构图:一位经理(父节点)管理多名员工(子节点),但每位员工只向一位经理汇报。

Hierarchical DBMS structure.

层次型 DBMS 结构。图片作者自制。

著名的层次型 DBMS 示例是 IBM 的信息管理系统(IMS),它是最早使用此结构来处理海量数据的系统之一。

网状型 DBMS

网状型 DBMS 比层次型更灵活,因为它允许记录拥有多个父节点和多个子节点(多对多关系)。这使得处理复杂关系更容易。此类的一个示例是 Integrated Data Store。

例如,在一所大学的数据库中,学生可以选修多门课程,每门课程也可以有多名学生。

Network DBMS structure.

网状型 DBMS 结构。图片作者自制。

关系型 DBMS(RDBMS)

一款关系型 DBMS将数据存储在表中,每个表由行和列组成(类似电子表格)。这些表通过唯一键进行关联,便于组织和检索数据:

  • 主键唯一标识每一行。
  • 外键通过引用另一表的主键连接多张表。

这种类型的 DBMS 应用极为广泛,因为它可靠、可扩展且易于管理。常见示例包括 MySQL、PostgreSQL 和 Oracle。

假设我们有两张表:

  • Students:存储学生姓名、学号和课程。
  • Marks:存储学号及对应的考试成绩。

其中 Students 表的 Roll No. 列是主键,而在 Marks 表中,它是一个外键,指回 Students 表。

SELECT Students.Name, Students.Course, Marks.Marks
FROM Students
JOIN Marks ON Students.RollNo = Marks.RollNo;

上述查询返回包含学生姓名、所修课程及其成绩的合并视图。

Relational DBMS structure.

关系型 DBMS 结构。图片作者自制。

面向对象 DBMS(OODBMS)

面向对象 DBMS 以对象的形式存储数据,类似于 Java 或 Python 等编程语言处理对象的方式。这些对象既包含数据,也包含用于操作它们的方法。一个常见示例是 db4o,这是面向 Java 和 .NET 开发者的开源数据库。

例如,一所大学将学生信息存储为对象,每个 Student 对象包含 Name、Age、Student ID 等属性,以及 Enroll()、Drop_Course() 等行为。学生与 Course 对象相关联,后者包含 Course_Name、Instructor、Credits_hours 等信息,并通过 Enrollment 对象跟踪 Enrollment_Date 和 Grades。

Object-Oriented DBMS structure.

面向对象 DBMS 结构。图片作者自制。

NoSQL DBMS

NoSQL DBMS 使用非关系型模型来存储数据,例如文档型、键值型、列族型或图模型。它多使用 JSON(JavaScript 对象表示法)结构来处理大量非结构化或半结构化数据。

与关系型数据库不同,它不使用固定表结构,提供更灵活的数据存储与检索方式。这使其非常适合大数据、实时应用和云端系统。代表性产品包括 MongoDB、Apache Cassandra 和 Couchbase。

以下展示如何用 JSON 格式存储学生数据:

{
  "student_id": "101",
  "name": "Emma",
  "age": 16,
  "grade": 11,
  "subjects": ["Math", "Science", "English"]
}

常见 DBMS 软件

不同的 DBMS 面向不同需求。有的免费且非常适合网站使用,有的则为大型企业打造,强调顶级的安全与性能。下面来看看一些最受欢迎的 DBMS 软件及其应用场景。

MySQL

MySQL 是最广泛使用的开源关系型数据库管理系统(RDBMS)之一。它因速度快、可扩展性强而常用于网站与应用。像 WordPress 和电商平台等大型平台都依赖 MySQL 高效管理海量数据而不致性能下降。

PostgreSQL

PostgreSQL 是一款高级开源对象-关系数据库管理系统(ORDBMS),非常灵活且功能强大。它支持复杂查询,并可与 Java、Python 等多种编程语言配合使用。像 Netflix 和 Instagram 这类大厂选择 PostgreSQL,是因为它能在 Windows、macOS、Linux 等不同平台上处理海量结构化和非结构化数据。

👉 获取我们的 PostgreSQL 基础速查表!

Microsoft SQL Server

Microsoft SQL Server(SQL Server)是微软构建的商用 RDBMS,面向企业级性能与安全。对于依赖微软生态的企业而言,它是首选,因其可与 Azure、Power BI 等工具无缝集成。事实上,它将数据整齐地组织在结构化表格中,并使用 Transact-SQL(T-SQL)和 Tabular Data Stream 协议来无误地处理事务。

MongoDB

MongoDB 是开源的 NoSQL 数据库,这意味着它不像 MySQL 或 SQL Server 那样使用传统表格。它将信息存储为文档(类似 JSON 格式)。这使其高度灵活、可扩展,非常适合处理大量动态或非结构化数据。凭借速度与可扩展性,MongoDB 是实时应用、移动应用和大数据处理的上佳之选。

Oracle 数据库

1977 年,Larry Ellison、Bob Miner 和 Ed Oates 开发了 Oracle 数据库,后来成为甲骨文公司(Oracle Corporation)的一部分。它是一款面向大型企业的高性能 RDBMS,具备坚实的安全与自动化能力。

它能在自行优化性能的同时处理海量数据——这可为企业节省时间并将计算成本降低最高 87%。凭借内置的加密、访问控制和监控工具,Oracle 能将敏感数据免受未授权访问的威胁。

结语

数据库管理系统(DBMS)是实现数据有序、安全与高效处理的基石。没有它们,管理海量信息将既缓慢又易出错。

对于企业而言,DBMS 能确保数据在需要时保持准确、受保护且易于访问。

如果您准备在学习之路上更进一步,可以深入学习 SQL 和数据库基础。从 SQL 基础开始夯实根基,或探索 数据库设计以掌握如何高效构建数据结构,亦可参与 关系型数据库 SQL 入门课程以深化对 RDBMS 概念的理解!

FAQs

SQL 与 NoSQL 数据库的主要区别是什么?

SQL 数据库使用固定模式并遵循关系型结构,将数据存储为行和列。相反,NoSQL 数据库具有灵活的、非关系型结构,并以键值对等方式存储数据,因此适合处理大量非结构化或半结构化数据。

在我们的 《SQL 与 NoSQL 数据库》文章中了解更多。

在 DBMS 中,模式与实例有何区别?

模式(schema)是数据库的结构,包括表、关系和约束;而实例(instance)指的是某一时刻实际存储的数据。

什么是 DBMS 中的死锁,如何预防?

死锁是指两个或多个事务相互阻塞,彼此都在等待对方持有的资源。要预防死锁,可在获取锁时遵循一致的顺序,并在不再需要时尽快释放锁。

什么是 DBMS 中的规范化,为什么重要?

规范化是将数据组织到多个相关表中以减少冗余并提升数据完整性的过程。它能减少异常并提高数据库效率。

什么是实体-关系(ER)模型?

ER 模型是实体及其关系的图示化表示,用于在实施前设计与构建数据库结构。

Laiba Siddiqui

作者

Laiba Siddiqui

我是内容策略专家,热衷于将复杂主题化繁为简。我曾帮助 Splunk、Hackernoon 和 Tiiny Host 等公司为其受众打造兼具吸引力与信息量的内容。

主题