数据库系统(一)
参考资料:
终于有人把数据库讲明白了 - 数据集成与治理 - 博客园
数据库基础知识总结 | JavaGuide
一文读懂数据库中的DB、DBMS、DBS、DBAS-云社区-华为云
数据库(一):三级模式与两级映像 - 技术栈
【数据库系统概论】MySQL中三级模式和二级映像指的是什么?开篇 - 小林野夫 - 博客园
目录
数据库系统(一)
5.1. 数据库基础概念与体系结构
5.1.1 核心概念辨析
1. 概念范围递增与包含关系
2. 数据库系统的核心特点
数据结构化(最本质区别)
数据的共享性高、冗余度低、易扩充
数据独立性高
数据由 DBMS 统一管理和控制
5.1.2 数据管理技术的演进(按数据模型分类)
1. 第一代:非关系型(格式化模型)—— 层次与网状
层次模型
网状模型
2. 第二代:关系模型 (RDBMS) —— 当前绝对主流
3. 第三代:对象-关系模型 (ORDBMS)
5.1.3 数据库系统三级模式与两级映像
1. 三级模式结构(从上到下,视角不同)
外模式—— “用户看什么”
模式—— “全局有什么”
内模式—— “底层怎么存”
2. 两级映像(连接三级的桥梁,实现独立性的机制)
外模式/模式映像(定义在外模式中描述)
模式/内模式映像(定义在模式中描述,通常只有一个)
5.1. 数据库基础概念与体系结构
5.1.1 核心概念辨析
1. 概念范围递增与包含关系
数据:描述事物的符号记录。
数据库 (DB):长期储存在计算机内、有组织的、可共享的大量数据的集合。
数据库管理系统 (DBMS):位于用户与操作系统之间的数据管理软件(如 MySQL、Oracle)。它是科学有效地组织和存储数据、获取和维护数据的关键。
数据库系统 (DBS):引入了数据库后的整个计算机系统。
注意:
DBMS不是数据库本身,而是管理数据库的软件
DBS = DB + DBMS + 应用程序 + DBA(数据库管理员) + 硬件平台
2. 数据库系统的核心特点
为什么不用文件系统(如 Excel、TXT)存数据,而非要用数据库?
文件系统具体说明链接:
文件管理 - 软考备战(二十)-CSDN博客
核心在于以下四点:
数据结构化(最本质区别)
文件系统内部是无结构的(如一篇 Word 文档),即使有结构(如 Excel)也只是针对单一文件;
而数据库是全局结构化的,不仅描述数据本身,还描述数据之间的联系(如外键约束)。
数据的共享性高、冗余度低、易扩充
数据面向整个系统,多用户共享,大大减少数据重复存储。
易扩充体现在可以随时增加新的应用而不必修改原有结构。
数据独立性高
通过后面要讲的“两级映像”实现,这是数据库的绝对核心优势。
数据由 DBMS 统一管理和控制
DBMS 提供了以下四个方面的控制功能:
安全性:防止非法用户存取。
完整性:保证数据的正确性、有效性和相容性(如年龄不能是负数)。
并发控制:防止多用户同时操作时产生数据不一致(如超卖)。
数据库恢复:在系统发生故障后,将数据恢复到一致状态(如基于日志的回滚)。
5.1.2 数据管理技术的演进(按数据模型分类)
数据模型是数据库系统的核心和基础。
任何 DBMS 都是基于某种数据模型的。
1. 第一代:非关系型(格式化模型)—— 层次与网状
层次模型
结构:
像一棵倒挂的树(有且只有一个根节点,其他节点有且只有一个父节点)。
本质是1:N(一对多)联系。
优点:结构简单,查询效率高。
缺点:
无法直接表达 M:N(多对多) 关系(必须通过引入冗余节点来转换);
查找子节点必须通过父节点,独立性较差。(代表:IBM的IMS)
网状模型
结构:
像一个图(允许一个节点有多个父节点,节点之间无严格层级)。
本质是可以表达 M:N(多对多) 关系。
优点:能够更直接地描述现实世界。
缺点:
结构极其复杂,用户必须了解系统底层的指针和存取路径,编写应用程序难度极大。
2. 第二代:关系模型 (RDBMS) —— 当前绝对主流
结构:严格的二维表格结构。
革命性优势:
概念单一。
无论是实体(如学生)还是实体间的联系(如选课),全部统一用“表”来表示。
用户完全不需要关心物理存储路径,只需用 SQL 语句告诉系统“要什么”,而不是“怎么找”。
理论基础:严格的数学基础(集合论和关系代数)。
具体SQL内容链接:
SQL学习文档-CSDN博客
3. 第三代:对象-关系模型 (ORDBMS)
背景:
传统关系模型只能处理简单的数据类型(数字、字符串),面对 CAD、多媒体(图像、视频)等复杂数据类型时显得力不从心。
特点:
在关系模型的基础上,吸收了面向对象方法的思想,增加了面向对象的复杂数据类型(如抽象数据类型、继承机制等)。
代表:PostgreSQL 原生支持,Oracle 也扩展了对象特性。
5.1.3 数据库系统三级模式与两级映像
ANSI(美国国家标准学会)提出了数据库系统的三级模式结构——数据独立性
1. 三级模式结构(从上到下,视角不同)
模式 | 视角 | 抽象 | 对应 | 定义 | 具体 | 用途 |
外模式(子模式) | 用户 | 视图层(最高) | 应用程序视图、部分基本表 | 用户能看到的数据视图 | 通过DML进行CURD数据库操作 | 简化终端用户与系统交互,保证数据保密性和安全性 |
模式(概念模式或逻辑模式) | 整体 | 逻辑层(中间) | 逻辑结构基本表 | 描述全部数据逻辑结构和特征 | 通过DDL定义结构(对库、表、视图等),不涉及具体值 | 存储什么数据,以及数据之间的关系 |
内模式(存储模式) | 存储 | 物理层(最低) | 物理结构存储文件 | 描述数据在物理介质上的存储方式和物理结构 | 底层数据的存储结构和存取方法 | 数据文件存盘位置、数据存储方式(顺序、B树、Hash方法)、数据是否加密压缩、表的索引等 |
外模式—— “用户看什么”
也叫用户模式或子模式。
它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征。
举例:
一个学校系统有“教务外模式”(看课表、成绩)、“财务外模式”(看学费、工资)、“后勤外模式”(看宿舍)。
不同用户看到的内容和权限是完全不同的。
数量:
一个数据库可以有多个外模式(对应不同用户群)。
一个外模式可以被多个应用共享。
模式—— “全局有什么”
也叫逻辑模式或概念模式。
它是数据库中全体数据的逻辑结构和特征的描述,是所有外模式的公共部分。
举例:
包含了学校数据库里所有的表结构(学生表、课程表、教师表、宿舍表等),不考虑这些表在物理上怎么存。
数量:
一个数据库只有一个模式。
它是数据库体系结构的中间层,也是 DBMS 模式定义语言(DDL)描述的核心。
内模式—— “底层怎么存”
也叫存储模式。
它是数据在数据库系统内部的物理存储结构和物理存取方法的描述。
举例:
学生表的数据是存放在 D盘 还是 E盘?
用的是 B+树索引 还是 哈希索引?
数据块的大小是多少?
数量:一个数据库只有一个内模式。
2. 两级映像(连接三级的桥梁,实现独立性的机制)
如果在模式中增加了一个字段,难道要重写所有用户的程序吗?
不需要,这就靠“映像”来缓冲。
外模式/模式映像(定义在外模式中描述)
作用机制:
当模式(全局逻辑结构)发生改变时(例如:把“学生表”拆分成“本科生表”和“研究生表”),数据库管理员(DBA)只需修改“外模式/模式映像”,就可以使外模式保持不变。
产生的效果:
因为外模式没变,应用程序是根据外模式编写的,所以应用程序不用修改。
结论:
保证了数据与程序的逻辑独立性(简称逻辑独立性)。
模式/内模式映像(定义在模式中描述,通常只有一个)
作用机制:
当内模式(物理存储结构或存取方法)发生改变时(例如:为了提高查询速度,把某个字段的索引从 B树 换成 哈希索引,或者换了存储硬盘),DBA 只需修改“模式/内模式映像”,就可以使模式保持不变。
产生的效果:
因为模式没变,外模式自然也不会变,所以应用程序不用修改。
结论:
保证了数据与程序的物理独立性(简称物理独立性)。