模型
数据模型
一、数据模型的基本概念
数据模型是对现实世界数据特征的抽象,是现实世界的模拟。它用于描述数据、组织数据和对数据进行操作。
数据模型应满足的三方面要求:
- 真实性:能比较真实地模拟现实世界。
- 可理解性:容易为人所理解。
- 可实现性:便于在计算机上实现。
数据模型是数据库系统的核心和基础。
二、数据建模的过程
数据建模是将现实世界中的具体事物抽象、组织为某一DBMS支持的数据模型的过程。该过程分为两步抽象:
1. 第一步抽象:现实世界 → 概念模型(信息世界)
- 将现实世界中的客观对象抽象为概念模型。
- 概念模型按用户的观点对数据和信息建模,用于数据库设计。
2. 第二步抽象:概念模型 → 逻辑模型(机器世界)
- 将概念模型转换为某一DBMS支持的数据模型。
- 逻辑模型按计算机系统的观点对数据建模,用于DBMS实现。
三、三类数据模型
1. 概念模型(Conceptual Model / Information Model)
- 按用户的观点对数据和信息建模。
- 用于数据库设计阶段,与具体DBMS无关。
- 工具:E-R图(实体-联系图)。
2. 逻辑模型(Logical Model)
- 按计算机系统的观点对数据建模。
- 用于DBMS实现。
- 常见类型:
- 层次模型(Hierarchical Model)
- 网状模型(Network Model)
- 关系模型(Relational Model)
- 面向对象数据模型(Object-Oriented Data Model)
- 对象关系数据模型(Object-Relational Data Model)
- 半结构化数据模型(Semi-structured Data Model)
3. 物理模型(Physical Model)
- 是对数据最底层的抽象。
- 描述数据在系统内部的表示方式和存取方法(如存储结构、索引方式等)。
- 与硬件和DBMS具体实现密切相关。
四、数据模型的组成要素
数据模型通常由以下三个要素组成:
1. 数据结构(Data Structure)
- 描述:数据库的组成对象(实体)以及对象之间的联系。
- 内容:
- 与对象的类型、内容、性质有关;
- 与数据之间的联系有关。
- 作用:描述系统的静态特性。
2. 数据操作(Data Operation)
- 定义:对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及操作规则。
- 类型:
- 查询(Query)
- 更新(Update):包括插入(Insert)、删除(Delete)、修改(Update)
- 内容:
- 操作的含义、符号、规则(如优先级);
- 实现操作的语言(如SQL)。
- 作用:描述系统的动态特性。
3. 数据的完整性约束条件(Integrity Constraints)
- 定义:一组完整性规则的集合。
- 作用:
- 限定符合数据模型的数据库状态及状态变化;
- 保证数据的正确性、有效性和一致性。
- 内容:
- 反映必须遵守的基本的、通用的完整性约束(如实体完整性、参照完整性);
- 提供定义特定应用语义约束的机制(如用户定义的完整性)。
五、总结
- 数据模型是数据库系统的核心,是对现实世界数据特征的抽象。
- 数据建模分为两步:从现实世界到概念模型,再从概念模型到逻辑模型。
- 数据模型可分为三类:概念模型、逻辑模型和物理模型。
- 数据模型由三大要素组成:数据结构(静态)、数据操作(动态)和完整性约束(语义规则)。
概念模型
一、概念模型的用途
概念模型是现实世界到机器世界的一个中间层次,用于信息世界的建模。它是现实世界到信息世界的第一层抽象,是数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。
对概念模型的基本要求:
- 较强的语义表达能力
- 简单、清晰、易于用户理解
二、信息世界中的基本概念
1. 实体(Entity)
- 客观存在并可相互区别的事物。
- 可以是具体的人、事、物,也可以是抽象的概念或联系。
2. 属性(Attribute)
- 实体所具有的某一特性。
- 一个实体可以由若干个属性来刻画。
3. 码(Key)
- 唯一标识实体的属性集。
4. 实体型(Entity Type)
- 用实体名及其属性名集合来抽象和刻画同类实体。
5. 实体集(Entity Set)
- 同一类型实体的集合。
6. 联系(Relationship)
- 现实世界中事物内部以及事物之间的联系,在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
三、实体之间的联系
1. 实体之间的联系
- 通常指不同实体集之间的联系。
- 类型包括:
- 一对一(1:1)
- 一对多(1:n)
- 多对多(m:n)
2. 实体内部的联系
- 指组成实体的各属性之间的联系。
四、实体-联系方法(E-R方法)
- 使用E-R图来描述现实世界的概念模型。
- E-R方法也称为E-R模型。
- 主要图形元素:
- 实体:用矩形表示
- 属性:用椭圆形表示
- 联系:用菱形表示
五、示例:学生选课系统
实体:
- 学生(Student)
- 课程(Course)
联系:
- 一个学生可以选修多门课程,一门课程可以被多名学生选修。
- 因此,学生与课程之间是多对多(m:n)的联系。
E-R图表示:
- 学生实体与课程实体通过“选课”联系相连,表示多对多关系。
六、总结
- 概念模型是数据库设计的基础,用于抽象现实世界。
- 通过实体、属性、联系等基本概念构建模型。
- E-R图是表达概念模型的有效工具,直观易懂,便于沟通。
逻辑模型
一、逻辑模型的作用
逻辑模型用于将信息世界(概念模型)转换为机器世界(数据库系统)中的数据结构。其核心目标是实现“多快好省”的转换,即在保证数据语义完整性的同时,提高存储和查询效率。
转换策略:
- 方案1:采用“中立”方式表达概念模型,尽量独立于应用层。
- 方案2:在应用层中使用特定数据结构,并在逻辑模型中高效支持。
- 常用策略:通用数据结构采用方案1,关键性数据结构采用方案2。
二、常用数据模型
1. 格式化模型
- 层次模型(Hierarchical Model)
- 网状模型(Network Model)
- 关系模型(Relational Model)
2. 对象模型
- 面向对象数据模型(Object Oriented Data Model)
- 对象关系数据模型(Object Relational Data Model)
三、关系模型的数据结构
基本组成:
- 关系(Relation):对应一张二维表。
- 元组(Tuple):表中的一行。
- 属性(Attribute):表中的一列,每个属性有名称。
- 码(Key):能唯一标识一个元组的属性或属性组。
- 域(Domain):属性的取值范围,是一组具有相同数据类型的值的集合。
- 分量:元组中的一个属性值。
- 关系模式:对关系的描述,格式为:关系名(属性1,属性2,…,属性n)
示例:
- 学生(学号,姓名,年龄,性别,系名,年级)
规范化要求:
- 关系的每一个分量必须是不可分的数据项。
- 不允许“表中还有表”,即不允许嵌套结构。
四、关系模型的操作与完整性约束
数据操作:
- 查询、插入、删除、更新均为集合操作。
- 操作对象和操作结果都是关系。
- 存取路径对用户透明,用户只需说明“做什么”,而不需说明“怎么做”。
完整性约束:
- 实体完整性:主码不能为空。
- 参照完整性:外码必须引用已存在的主码。
- 用户定义的完整性:用户根据应用需求定义的约束。
五、关系模型的优缺点
优点:
- 建立在严格的数学基础(关系代数)上。
- 概念单一,实体和联系都用关系表示。
- 数据操作结果仍是关系,易于理解。
- 存取路径对用户透明,提高了数据独立性和安全性。
- 简化了程序员和数据库开发的工作。
缺点:
- 存取路径对用户透明可能导致查询效率较低。
- 需对查询进行优化,增加了DBMS的开发难度。
- 数据模式集中,对“正确性”要求严格。
六、NoSQL 数据模型简介
NoSQL(Not Only SQL)适用于非结构化或半结构化数据,常见类型包括:
- Key-Value 存储模型
- 文档模型
- 列族模型
- 图模型(Graph Model)
- 记为 G(V, E),其中 V 是结点集合(可带属性),E 是边集合(也可带属性)。
七、总结
- 逻辑模型是连接概念模型与物理存储的桥梁。
- 关系模型是目前最常用的逻辑模型,具有严格的数学基础和良好的数据独立性。
- NoSQL 模型适用于大数据、高并发等特定场景,扩展了传统关系模型的能力。
三级模式结构
模式、外模式和内模式这三个模式构成了数据库系统的三层模式结构(也称为“三级模式结构”),是数据库实现数据独立性的关键。
简单来说,这个结构就像是为数据搭建的一栋三层小楼,每一层面向不同的用户,保证了数据的安全、独立和高效管理。
一、总览:三层模式结构
数据库系统的三层模式结构包括:
- 内模式 - 最底层,关心数据怎么存
- 模式 - 中间层,关心数据是什么
- 外模式 - 最顶层,关心数据怎么看
它们之间的关系可以通过下图来理解:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
+-------------------+
| 外模式 | (View Level) - 用户看到的局部数据逻辑结构
| (External Schema) |
+-------------------+
▲
| (映射 Mapping)
|
+-------------------+
| 模式 | (Conceptual Level) - 全局数据的整体逻辑结构
| (Conceptual Schema)|
+-------------------+
▲
| (映射 Mapping)
|
+-------------------+
| 内模式 | (Physical Level) - 数据的物理存储方式
| (Internal Schema) |
+-------------------+
二、分步详解
1. 模式
- 中文名: 模式 / 概念模式 / 逻辑模式
- 核心问题: “数据是什么?”
- 定义: 模式是数据库中全体数据的逻辑结构和特征的描述。它是所有用户的公共数据视图,是全局的、整体的视角。
- 特点:
- 全局性: 描述了整个数据库中有哪些表、每个表有哪些字段、字段的数据类型、表与表之间的关系(如主键、外键)等。
- 稳定性: 一旦设计完成,不会频繁改动。
- 唯一性: 一个数据库只有一个模式。
- 例子: 就像一个公司的全体人员花名册,记录了每个员工的工号、姓名、部门、职位等全局信息。
- 由谁定义: 主要由数据库管理员和数据库设计人员创建和维护。
2. 外模式
- 中文名: 外模式 / 子模式 / 用户模式
- 核心问题: “数据怎么看?”
- 定义: 外模式是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征描述。它是模式的子集。
- 特点:
- 局部性: 每个外模式都是为不同用户组定制的视图。例如,财务部门只能看到工资数据,而看不到研发部门的技术资料。
- 多样性: 一个数据库可以有多个外模式。不同用户通过不同的外模式访问数据库。
- 安全性: 通过外模式,可以隐藏用户不需要看到的数据,提供了强大的安全保护。
- 例子:
- 给学生视图:只能查看自己的成绩和课程信息,看不到其他同学的成绩和教师的工资。
- 给教师视图:可以查看自己所教课程的学生成绩和名单,但看不到其他老师的信息或学校的财务数据。
- 由谁定义: 数据库管理员或应用程序开发者根据用户需求创建。
3. 内模式
- 中文名: 内模式 / 存储模式
- 核心问题: “数据怎么存?”
- 定义: 内模式是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。
- 特点:
- 物理性: 它定义了所有的数据如何实际地存储在存储设备上(如硬盘)。
- 唯一性: 一个数据库只有一个内模式。
- 关注点:
- 数据以什么文件结构存储(如B+树、堆文件、哈希文件)?
- 索引如何创建和组织?
- 数据是否压缩?是否加密?
- 记录如何存储?是行存储还是列存储?
- 例子: 就像一本书的印刷和装订方式——是用平装还是精装?用什么纸张?字体和行距是多少?这些都不影响书的内容(模式),但决定了书的物理形态。
- 由谁定义: 主要由数据库管理员和系统程序员关心和优化。
三、关键机制:二级映像与数据独立性
三层模式之所以强大,是因为在它们之间存在着两层映射。
1. 外模式/模式映像
- 位置: 介于外模式与模式之间。
- 作用: 保证了数据的逻辑独立性。
- 含义: 当模式改变时(例如,增加一个字段、改变一个字段的类型),由数据库管理员来修改外模式/模式映像,使得外模式可以保持不变。从而,基于这些外模式的应用程序也就不用修改。
- 例子: 在
员工表中增加一个生日字段(模式改变)。只要修改映射关系,保证给财务部门的外模式(视图)中不包含这个新字段,那么财务部门的查询程序就完全不受影响。
2. 模式/内模式映像
- 位置: 介于模式与内模式之间。
- 作用: 保证了数据的物理独立性。
- 含义: 当内模式改变时(例如,更换了更快的硬盘、重建了索引、采用了新的存储结构),由数据库管理员来修改模式/内模式映像,使得模式可以保持不变。从而,应用程序也感觉不到变化。
- 例子: 为了提高查询性能,为
员工表的姓名字段新建了一个索引(内模式改变)。由于模式(表结构)完全没有变化,所有应用程序都无需任何修改就能享受到性能提升的好处。
四、总结与记忆技巧
| 特性 | 外模式 (External Schema) | 模式 (Conceptual Schema) | 内模式 (Internal Schema) |
|---|---|---|---|
| 层级 | 用户级 | 概念级 | 物理级 |
| 关注点 | 用户怎么看数据 | 数据是什么 | 数据怎么存 |
| 数量 | 多个 | 一个 | 一个 |
| 特点 | 局部、逻辑视图 | 全局、逻辑结构 | 物理存储方式 |
| 类比 | 给不同角色的视图 | 整个公司的花名册 | 花名册的印刷和存放方式 |
| 独立性 | 逻辑独立性 (通过外模式/模式映像实现) | - | 物理独立性 (通过模式/内模式映像实现) |
一句话总结: 模式是数据的全局蓝图,内模式是数据的物理实现,外模式是数据的用户视图。两层映射像粘合剂一样将它们连接起来,实现了物理独立性和逻辑独立性,这正是数据库系统强大和灵活的核心所在。
数据库系统的组成
一、数据库系统的构成
一个完整的数据库系统(Database System, DBS)不仅包含数据本身,还包括支持数据管理的软硬件环境以及相关的人员。它主要由以下部分组成:
- 数据库(Database):长期存储在计算机内有组织、可共享的数据集合。
- 硬件平台(Hardware Platform):包括存储设备、处理器等,是数据库存储和运行的基础。
- 软件平台(Software Platform):包括操作系统、数据库管理系统(DBMS)、应用开发工具等。
- 人员(Personnel):包括数据库管理员、系统分析员、应用程序员和最终用户等。
二、硬件平台
- 数据库管理系统建立在计算机硬件和操作系统之上。
- 数据存放在计算机存储设备中。
- 存储器与处理器技术的发展推动了数据库技术的演进(如从磁盘数据库到内存数据库)。
- 海量存储和高速处理器成为新型数据库存储引擎和查询处理引擎设计的关键因素。
三、软件平台
- 操作系统:支持DBMS运行的基础软件。
- 数据库管理系统(DBMS):核心软件,负责数据库的创建、使用和维护。
- 高级语言及其编译系统:用于开发数据库应用系统。
- 应用开发工具:如IDE、报表工具等,辅助应用程序开发。
- 数据库应用系统:为特定应用背景开发的软件,提供用户接口和业务逻辑。
四、人员组成与职责
不同的人员在数据库系统中扮演不同的角色,涉及不同级别的数据抽象,具有不同的数据视图。
1. 数据库管理员(DBA)
DBA是负责管理和维护数据库系统的专业人员,主要职责包括:
- 设计与定义数据库:
- 参与数据库设计的全过程;
- 设计概念模式、逻辑模式(数据库模式)和内模式;
- 决定存储结构和存取策略。
- 运维与监控:
- 监视数据库运行状态,及时处理问题;
- 控制用户访问权限,保证安全性和完整性;
- 收集审计信息,进行性能分析与调优。
- 备份与恢复:
- 制定并实施备份和恢复策略;
- 在系统故障时快速恢复数据库至正确状态。
- 重组与重构:
- 定期重组数据库以优化性能;
- 根据需求变化重构数据库,修改模式或内模式。
2. 系统分析员 / 数据库设计人员
- 负责应用系统的需求分析与规范说明;
- 进行系统总体设计;
- 与用户和DBA合作,设计数据库的各级模式;
- 确定系统的硬件和软件配置。
3. 应用程序员
- 基于外模式开发应用程序;
- 编写具体的应用程序代码;
- 无需关心数据的物理存储细节。
4. 最终用户(End User)
通过应用系统的用户接口使用数据库,可分为三类:
- 偶然用户:
- 不经常访问数据库,每次需求不同;
- 如企业的高中级管理人员。
- 简单用户:
- 主要进行查询和更新操作;
- 如银行职员、售票员等。
- 复杂用户:
- 直接使用数据库语言(如SQL)访问数据;
- 可编写自己的应用程序;
- 如工程师、科学家等。
五、总结
- 数据库系统是一个由硬件、软件、数据和人员组成的复杂系统。
- 每一部分都至关重要,缺一不可。
- DBA是系统的核心管理者,负责设计、维护、优化和安全。
- 最终用户是系统的使用者,根据其使用方式可分为不同类型。
- 理解各组成部分的职责与协作,有助于更好地设计、开发和使用数据库系统。