数据的管理模式#
数据的管理模式并没有绝对的优越性,只是适用于特定的情境。
从下面几点考察:
- 数据的管理者是谁?
- 数据面向的对象是?
- 数据的共享程度?
- 数据的独立性?
- 数据的结构化?
- 数据的控制能力?
1. 人工管理#
- 数据由写程序的程序员管理,面向应用程序;
- 共享性没有,冗余度很高;
- 独立性无,因为是 hard-code 进程序里的;
- 结构性无;
- 由程序自己控制数据。
2. 文件系统#
- 数据由文件系统管理,优点是可以长期保存;
- 存在共享性:json、XML 文件可以将数据共享给多个程序,但存在问题:谁负责定义与管理这些数据?具体来说,
- 数据的结构和存储机制要被所有应用接受;
- 数据的安全性、完整性
- 数据的并发性:对数据操作的顺序会影响数据的最终形态
- 如何在动态的情况(数据在多用户操作、频繁更新和环境变化中不断变化的状态)下解决这些问题
3. 数据库系统#
首先要了解什么是数据库系统。
3.1 基本概念#
数据库系统的具体运行:

- 数据(Data, 描述事物的符号化记录)是数据库存储的基本对象。
- 种类:数字、文字、图形、图像、音频、视频、学生的档案记录等
- 语义:数据的含义。数据与其语义密不可分。
- 93 是数据,他的语义可能是某人的体重,也有可能是成绩
- 数据库(DB)是长期储存在计算机内、有组织的、可共享的大量数据的集合。其基本特征:
- 数据是按一定的数据模型进行组织描述储存的
- 可为各种用户进行共享
- 冗余度小,不需要重复
- 数据独立性较高
- 易扩展
- 数据库管理系统(DBMS):“科学地组织和存储数据、高效地获取和维护数据”
- 位于用户和 OS 之间
- 基础软件,大型、复杂
- 其作用:
- 数据定义:DDL
- 数据组织、存储与管理
- 数据操纵:DML
- 据库的事务管理和运行管理
- 数据库的建立和维护功能 6….
- 数据库系统:DBS
- 数据库
- DBMS
- 应用程序
- 数据库管理员(DBA)
- 核心与基础:数据模型

3.2 特点#
- 数据的结构化
- 最小存取单位是数据项
- 不仅内部结构化,整体也是结构化的,也就是说数据之间具有联系
- 数据用数据模型描述,无需应用程序定义
- 共享性高。数据共享的好处
- 减少数据冗余,节约存储空间
- 避免数据之间的不相容性与不一致性
- 使系统易于扩充
- 数据的独立性高。
- 物理独立性:指用户的应用程序与数据库中数据的物理存储是相互独立的。数据的物理存储改变时,应用程序不用进行改变。
- 逻辑独立性:指用户的应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,应用程序不用进行改变。
- 数据由数据管理系统统一管理和控制。也就是文件系统中提到的
- 数据安全性保护
- 数据完整性检查
- 并发控制
- 数据库恢复
数据模型#
- 定义:是对现实世界数据特征的抽象,用以抽象、表示和处理现实世界中的数据和信息。
- 要求:
- 模拟的真实性
- 易理解性
- 便于在计算机上实现
- 分类:
- 概念模型:用于设计一个数据库,按用户的观点来对数据和信息建模
- 逻辑模型:用于 DBMS 的实现,按照计算机系统的观点
- 物理模型:对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法
- 三个模型是渐进的关系,通过两步抽象演变
- 组成要素:
- 数据结构:系统的静态特性
- 数据操作:系统的动态特性
- 数据的完整性约束条件
- 完整性规则:给定的数据模型中数据及其联系所具有的制约和依存规则
概念模型#
用于信息世界的建模,是现实世界到机器世界的一个中间层次。数据库设计人员和用户之间进行交流的语言。
- 较强的语义表达能力
- 简单、清晰、易于用户理解
信息世界中的基本概念#
回忆:实体、属性、码;实体型、实体集、联系。
entity
实体: 客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念。Attribute
属性: 实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。Key
码:唯一标识实体的属性集Entity Type
实体型:用实体名及其属性名集合来抽象和刻画同类实体称为实体型Entity Set
实体集:同一类型实体的集合称为实体集Relationship
联系:- 现实世界中事物内部以及事物之间的联系 在信息世界中反映为 实体(型)内部的联系和实体(型)之间的联系。
- 实体内部的联系通常是指组成实体的各属性之间的联系
实体-联系方法(E-R 方法, E-R 模型)#
画法:

例子:



逻辑模型#
- “多快好省”地转换信息世界到机器世界:
- “多”:支持多种数据结构和应用场景。
- “快”:高效地完成转换,减少时间和资源消耗。
- “好”:确保数据的准确性和完整性。
- “省”:节省存储空间和计算资源。
- 中立的通用表达方式
- 定义:不依赖于具体应用,提供一种通用的、抽象的数据表达方式。
- 特点:通用性强,灵活性高,效率可能较低
- 例子:
- 关系数据库
- JSON 格式:一种通用的数据交换格式,可以表示各种结构的数据(如数组、对象等),适用于多种编程语言和应用。
- 针对应用的高效表达方式
- 定义:根据具体应用需求,设计专门的数据结构,并在逻辑模型中高效支持。
- 特点:高效性,针对性强,扩展性差
- 例子:
- 面向对象编程(OOP):为特定功能设计类。例如,设计一个“学生”类,包含属性(姓名、年龄、成绩)和方法(计算平均分、打印信息)。这种结构在管理学生信息时非常高效,但难以直接用于其他场景。
- 电商应用中的“订单”对象:包含订单号、购买商品、金额等属性,专门用于处理订单数据,效率高但仅适用于电商场景。
- 综合方案
- 定义:通用数据结构采用方案 1(中立表达),关键性数据结构采用方案 2(针对应用优化)。
分类#
格式化模型
Hierarchical Model
层次模型:以树状结构组织数据,表示一对一或一对多的关系。Network Model
网络模型:以网状结构组织数据,支持多对多的关系,但结构复杂。
非格式化模型
Relational Model
关系模型:基于表格结构,通过行和列存储数据,支持复杂的查询操作。- 对象模型
Object Oriented Data Model
面向对象数据模型:以对象和类为核心,支持继承和封装。Object Relational Data Model
对象关系数据模型:结合对象模型和关系模型,支持复杂数据类型和关系操作。
关系模型#
1. 二维表结构#
数据逻辑结构是一张二维表,由行(元组)和列(属性)组成。
学号 | 姓名 | 年龄 | 性别 | 系名 | 年级 |
---|---|---|---|---|---|
2013004 | 王小明 | 19 | 女 | 社会学 | 2013 |
2013006 | 黄大鹏 | 20 | 男 | 商品学 | 2013 |
2013008 | 张文斌 | 18 | 女 | 法律 | 2013 |
2. 基本概念:#
- 关系
Relation
:一张表。 - 元组
Tuple
:表中的一行。 - 属性
Attribute
:表中的一列,有属性名。 - 主码
Key
:能唯一确定一个元组的属性组。 - 域
Domain
:属性的取值范围。 - 分量:元组中的一个属性值。
- 关系模式:对关系的描述,如“学生(学号,姓名,年龄,性别,系名,年级)”。
- 规范化:关系必须规范化,每个分量是不可分的数据项,不允许表中还有表。
3. 操作与完整性约束#
- 数据操作:集合操作,操作对象和结果都是关系;存取路径对用户隐蔽,用户只需指出“干什么”。
- 完整性约束:
- 实体完整性:确保每个实体(元组)可以通过主键唯一标识。例如,学生表中“学号”作为主键,每个学号必须唯一。
- 参照完整性:确保表之间的关系通过外键正确关联。例如,学生表的“系名”字段必须与系表中的“系名”匹配。
- 用户定义的完整性:根据用户需求定义的约束规则。例如,规定学生年龄必须大于 16 岁。
4. PROS/CONS#
➕
- 建立在严格数学基础上,概念单一。
- 实体和联系都用关系表示,检索结果也是关系。
- 存取路径对用户透明,数据独立性高,安全保密性好,简化开发工作。 ➖
- 查询效率不如格式化数据模型。
- 需对用户查询请求进行优化,增加了开发 DBMS 的难度。
以下是关于 NoSQL 的笔记,适当扩充并整理为简洁的 Markdown 格式:
NoSQL 数据库类型#
基于 Key-Value 存储模型
存储键值对,适合快速读写操作。例如,Redis
通过键值对存储用户会话信息。基于文档模型
存储半结构化数据,通常以 JSON 或 BSON 格式。例如,MongoDB
存储用户资料文档,包含姓名、年龄、地址等字段。列族模型
按列存储数据,适合大规模数据存储和分析。例如,Cassandra
用于存储时间序列数据,按列族组织数据。基于图模型
用于存储和查询复杂关系数据。记为G(V, E)
,其中V
为节点集合,每个节点具有若干属性;E
为边集合,边也可以具有属性。例如,Neo4j
用于社交网络分析,节点表示用户,边表示用户之间的关系。
数据库系统的结构#
三级模式结构#

1. 模式(Schema)#
- 定义:数据库中全体数据的逻辑结构和特征的描述。
- 数据的逻辑结构(数据项的名字、类型、取值范围等)
- 数据之间的联系
- 数据有关的安全性、完整性要求
- 特点:
- 是数据的“型”描述,不涉及具体值,反映数据的结构及其联系。
- 是相对稳定的,独立于数据的物理存储细节和硬件环境。(内模式)
- 与具体的应用程序、开发工具及高级程序设计语言无关。(外模式)
- 示例:学生选课数据库模式包含学生记录、课程记录和学生选课记录。
2. 实例(Instance)#
- 定义:反映数据库某一时刻的状态,是模式的一个具体值。
- 特点:
- 同一个模式可以有多个实例。
- 实例随数据库中的数据更新而变动。
- 示例:
- 2012 年学生数据库实例:包含 2012 年所有学生记录、课程记录和选课记录。
- 2013 年学生数据库实例:包含 2013 年所有学生记录、课程记录和选课记录。
3. 外模式/子模式/用户模式(External Schema)#
- 定义:用户使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示。
- 特点:
- 介于模式与应用之间,通常是模式的子集。
- 一个模式可以有多个外模式,反映不同用户的需求和数据保密要求。
- 同一外模式可以被多个应用系统使用,但一个应用只能使用一个外模式。
- 用途:保证数据库安全性,用户只能访问对应的外模式中的数据。
4. 内模式(Internal Schema)#
- 定义:数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
- 内容:
- 记录的存储方式(如顺序存储、堆存储、hash 存储)。
- 索引的组织方式、数据是否压缩或加密。
- 数据存储记录结构的规定。
- 特点:一个数据库只有一个内模式。
5. 数据库的二级映像与数据独立性#
三级模式是对数据的三个抽象级别,二级映象在数据库管理系统内部实现这三个抽象层次的联系和转换。
外模式/模式映像:逻辑独立性#
每一个外模式,数据库系统都有一个外模式/模式映象(通常包含在各自外模式的描述中),定义外模式与模式之间的对应关系。
作用:保证数据逻辑独立性
- 当模式改变时,数据库管理员对外模式/模式映象作相应改变,使外模式保持不变。
- 应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式/内模式映像:物理独立性#
定义了数据全局逻辑结构与存储结构之间的对应关系。例如,说明逻辑记录和字段在数据库内部是如何表示的,包括存储方式、索引组织、数据压缩等。
- 每个数据库只有一个模式/内模式映像。
- 映像定义通常包含在模式描述中。
作用:保证数据的物理独立性
- 当数据库的存储结构发生变化(如更换存储设备或优化存储结构)时,数据库管理员只需修改模式/内模式映像,而无需改变模式本身。
- 应用程序依赖于模式,而不是具体的存储结构。因此,即使存储结构改变,应用程序仍然可以正常运行,这就是数据与程序的物理独立性。
希望这份笔记能帮助你更好地理解模式/内模式映像的作用和意义。
6. 数据库的二级映像的作用#
- 稳定性:保证外模式和应用程序的稳定性,除非应用需求本身发生变化,否则应用程序无需修改。
- 独立性:数据与程序之间的独立性,使得数据定义可以从应用程序中分离,简化应用程序的编制和维护。
数据库系统的组成#
甲乙丙丁,开中药铺…
软硬件平台#
硬件#
对硬件资源的要求:
- 足够大的内存
- 足够大的磁盘或磁盘阵列等设备
- 较高的通道能力,提高数据传送率
软件#
- DBMS: 数据库管理系统
- 支持数据库管理系统运行的操作系统
- 与数据库接口的高级语言及其编译系统
- 以数据库管理系统为核心的应用开发工具
- 为特定应用环境开发的数据库应用系统
数据库系统的组成 - 人员#
数据库管理员(DBA)#
- 决定数据库中的信息内容和结构
- 决定数据库的存储结构和存取策略
- 定义数据的安全性要求和完整性约束条件
- 监控数据库的使用和运行
- 周期性转储数据库
- 数据文件
- 日志文件
- 系统故障恢复
- 介质故障恢复
- 监视审计文件
- 周期性转储数据库
- 数据库的改进和重组
- 性能监控和调优
- 定期对数据库进行重组,以提高系统的性能
- 需求增加和改变时,数据库需要重构造
系统分析员 / 数据库设计人员#
- 系统分析员
- 负责应用系统的需求分析和规范说明
- 与用户及数据库管理员结合,确定系统的硬软件配置
- 参与数据库系统的概要设计
- 数据库设计人员
- 参加用户需求调查和系统分析
- 确定数据库中的数据
- 设计数据库各级模式
应用程序员 / 最终用户#
- 应用程序员
- 设计和编写应用系统的程序模块。
- 进行调试和安装。
- 最终用户(End User)。最终用户通过应用系统的用户接口使用数据库。
- 偶然用户
- 不经常访问数据库,但每次访问数据库时往往需要不同的数据库信息
- 企业或组织机构的高中级管理人员
- 简单用户
- 主要工作是查询和更新数据库
- 银行的职员、机票预定人员、旅馆总台服务员
- 复杂用户
- 工程师、科学家、经济学家、科技工作者等
- 直接使用数据库语言访问数据库,甚至能够基于数据库管理系统的应用程序接口编制自己的应用程序
- 偶然用户