用了这么久MySQL,有没有想过为什么叫它关系型数据库呢?

MySQL 之所以被称为“关系型数据库”,并不是因为表与表之间建立了“关系”(虽然这确实是它的一大特征),而是因为它的底层数据模型基于数学中的“关系模型”(Relational Model)。
历史背景
-
“关系型数据库”这个概念最早由 IBM 的 Edgar F. Codd 在 1970 年提出(论文《A Relational Model of Data for Large Shared Data Banks》)。
-
MySQL、PostgreSQL、Oracle、SQL Server 等都是基于这一模型实现的,因此统称为 关系型数据库管理系统(RDBMS)。
这里的“关系”是一个严格的数学概念,而非日常用语中的“关联”。为了让你透彻理解,我们可以从以下三个维度来拆解:
1. 数学根源:什么是“关系”?
“关系型数据库”的理论基础是由 IBM 研究员埃德加·科德(E.F. Codd)在 1970 年提出的。他借用了数学集合论中的概念:
* 数学定义:在数学中,一个“关系”(Relation)指的是一组元组(Tuple)的集合。
* 映射到数据库:
* 一张表(Table)就是一个“关系”。
* 表中的每一行(Row)被称为一个“元组”。
* 表中的每一列(Column)被称为一个“属性”。
简单来说:MySQL 把数据看作是二维表格的集合,每一个表格在数学上就是一个“关系”。因为它建立在“关系模型”之上,所以被称为关系型数据库。
2. 直观理解:二维表结构
虽然底层是数学模型,但在实际使用中,我们通常这样理解“关系”:
* 结构化存储:数据被严格地组织在行和列组成的二维表中(类似于 Excel 表格,但更严谨)。
* 数据关联:虽然“关系”的本意是数学模型,但在工程实践中,MySQL 确实擅长处理数据之间的逻辑联系。通过主键(Primary Key)和外键(Foreign Key),不同的表(关系)可以连接起来。
* 例如:“用户表”和“订单表”通过“用户ID”建立关系,这样数据库就能知道哪个订单属于哪个用户。
3.关系型数据库的核心特点
关系型数据库之所以叫“关系型”,是因为它基于以下核心思想:
-
数据以表(Table)的形式组织
表由行(记录/元组)和列(属性/字段)组成,结构清晰。 -
表之间通过“关系”连接
虽然“关系”本身指单个表,但多个表之间也可以通过外键(Foreign Key) 建立关联,比如:- 学生表(student_id, name)
- 成绩表(student_id, course, score)
通过student_id关联两个表,形成逻辑上的“关系网络”。
-
遵循关系模型的规则(由 E.F. Codd 提出)
- 数据必须是规范化的(避免冗余)
- 支持关系代数操作(如选择、投影、连接等)
- 保证数据完整性(实体完整性、参照完整性等)
MySQL 完全遵循了关系模型的规则,这也是它区别于非关系型数据库(如 MongoDB、Redis)的关键:
* 固定模式(Schema):在使用前必须先定义表结构(列名、数据类型),数据必须符合这个结构。
* 原子性:表中的每个字段都是不可再分的最小单位(第一范式)。
* 使用 SQL:它使用结构化查询语言(SQL)来操作这些“关系”,这是关系型数据库的标准语言。
4. 对比非关系型数据库(NoSQL)
为了更清楚理解“关系型”的含义,可以对比 NoSQL 数据库:
| 特性 | 关系型数据库(如 MySQL) | 非关系型数据库(如 MongoDB) |
|---|---|---|
| 数据模型 | 表(行+列),结构化 | 文档、键值、图、列族等,灵活 |
| 是否支持 JOIN | 是 | 通常不支持或有限支持 |
| 是否强调“关系” | 是(表间关联) | 否(常靠嵌入或应用层处理) |
总结
MySQL 叫“关系型数据库”,是因为它用数学上的“关系”(即二维表)来组织数据。
* 狭义上:指它基于科德提出的“关系模型”数学理论。
* 广义上:指它通过表格形式存储数据,并能通过外键等机制处理表与表之间的关联。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)