RDBMS:关系与文件的交汇
Source: Dev.to
概览
你好,我是 Maneshwar。 我目前正在构建 FreeDevTools online,致力于打造 一个聚合所有开发工具、作弊码和 TLDR 的平台 —— 一个免费、开源的中心,开发者可以快速找到并使用工具,而无需在互联网上四处搜索。
昨天,我们了解了应用程序如何通过交互模型和声明式语言(如 SQL)与 DBMS 交互。 在那个层面上,数据库表现为一组表,完全抽象了存储细节。
今天,我们把这种抽象显式化。
关系数据库管理系统 (RDBMS) 是实现 关系数据模型 的 DBMS。 对用户和应用程序而言,RDBMS 将数据库呈现为一组 关系(表),每个关系都有自己的模式。 然而在内部,这些关系必须存放在普通文件中。 表与文件之间的这道鸿沟正是 RDBMS 大量工作所在。
关系 vs 文件
- 关系 是一种二维结构:行和列。
- 相比之下,文件 是一种一维的平铺字节序列。
操作系统并不理解表、模式或元组——它们只会读写字节。因此,RDBMS 必须将逻辑关系映射到文件存储上。
逻辑模式
用户在 逻辑(概念)模式 层面上操作:
- 表
- 属性
- 约束
RDBMS 使用单独的 物理模式 将这些操作转换为更低层次的 文件操作,该模式定义了数据在文件中的布局方式。
关键点
- 用户永远看不到物理模式。
- 应用程序与存储布局相互隔离。
- 内部重组不会破坏应用逻辑。
这种分离使得数据库能够在不重写应用程序的情况下演进。
模式与目录
每个关系都有一个 模式,它定义了:
- 属性名称
- 数据类型
- 约束
模式信息本身存储在数据库的特殊关系中,这些关系称为 目录(也叫系统表或数据字典)。目录存放的元数据包括:
- 关系名称
- 列名称和类型
- 默认值
- 约束定义
所有目录条目共同构成 数据库模式。 应用程序通常可以 读取 目录,但不能直接修改它们;目录会在执行创建或修改表等模式变更操作时由 RDBMS 自动更新。
不止是表
除了用户关系和系统目录,RDBMS 还维护:
- 用于加速数据访问的索引
- 支持正确性和性能的内部结构
所有这些复杂性都是为了让应用程序能够把数据库视作一组干净的关系。
这一步的意义
到此为止,我们已经阐明:
- 什么是关系
- 它们如何映射到文件上
- 模式和目录如何定义数据库结构
接下来的自然步骤是理解 关系如何被操作,这将引出:
- 关系操作
- 关系代数
- 投影、选择、连接以及集合操作
这些操作构成了 SQL 的理论基础,接下来旅程将继续在此展开。
👉 查看: FreeDevTools
欢迎任何反馈或贡献者!
它是在线的、开源的,随时供任何人使用。
⭐ 在 GitHub 上给它加星: freedevtools
