【数据库】课堂笔记(一)数据库系统概论
一、数据与数据管理
-
数据
描述事物的符号记录称为数据。数据是数据库(DB)中存储的对象,也是数据库管理系统(DBMS)处理的对象。
结构化数据:由数据库二维逻辑结构(表格)描述的数据。
非结构化数据:不方便用数据库二维逻辑结构表现的数据,包括所有文档、文本、图片、音视频等。
半结构化数据:介于完全结构化数据(关系型数据库,面向对象数据库中的数据)和完全无结构的数据(如自然语言文本、音视频、图像等)。如XML文档,数据的结构和内容混在一起。
-
数据管理
数据处理:对各种数据进行采集、存储、加工、传播和应用等一系列活动的总和。从大量、可能杂乱无章、难以理解的数据中抽取并推导出对于某些特定的人们来说有价值、有意义的数据。
数据管理:对数据进行有效的分类、组织、编码存储、检索、维护和应用,是数据处理的中心问题。
二、数据管理技术发展的三个阶段
1.人工管理阶段
- 数据不保存
- 数据不共享,数据冗余大
- 数据不具有独立性
graph LR
应用程序1---数据集1;
应用程序2---数据集2;
2.文件系统阶段
- 数据以“文件”形式长期保存
- 按文件名访问,按记录进行存取
- 数据的逻辑结构与物理结构有了区别
- 数据面向应用
graph LR
a((存取方法))
应用程序1 --- a;
应用程序2 --- a;
a --- 文件组1;
a --- 文件组2;
3.数据库管理系统阶段
- 使用数据库管理系统(DBMS)进行管理
- 数据面向整个应用系统
- 数据共享性高,冗余度小
- 数据具有高度的物理独立性和逻辑独立性
- 数据整体结构化,用数据模型描述
- 由数据库管理系统提供数据安全性、完整性、并发控制和恢复能力
三、重要概念
1. 数据独立性
-
数据独立:数据的使用(应用程序)与数据的说明(数据组织结构与存储方式)分离,使数据的组织和存储结构(在一定范围内)变更时不必修改应用程序。
-
物理独立性:用户的应用程序在一定程度上独立于数据库中数据的物理存储结构。(数据在物理存储结构上的改变不需要相应修改程序)
-
逻辑独立性:用户的应用程序在一定程度上独立于数据库中数据的全局逻辑(组织)结构。(数据库总体逻辑结构的改变不需要相应修改程序)
2. 数据冗余
- 相同数据在不同地方重复存储。
3. 完整性
- 指数据的正确性、有效性和相容性,也称为一致性约束。(如必须满足某个规定才能插入新数据)
4.整体结构化
- 数据库的主要特征之一,也是数据库管理系统与文件按系统的本质区别。
- 指数据不仅仅是内部结构化,而是将数据以及数据之间的联系统一管理起来,使之结构化。(如几张数据表之间存在一致性约束)
- 指在数据库中的数据不仅仅针对某一个应用,而是面向全(相关)组织的所有应用。(一份数据供多个相关应用使用)
5. 数据库管理系统(DBMS)
- 由一个相互关联的数据的集合和一组用以访问、管理和控制这些数据的程序组成。
- 该数据集合称为数据库。
- DBMS能提供一个方便且高效地存取、管理和控制数据库信息的环境。
- DBMS的特点:
- 数据(整体)结构化
- 数据共享度高,冗余度低,易扩充
- 数据独立性高
四、数据模型
1. 概念
数据模型是一个描述数据结构、数据操作以及数据约束的数学形式体系。数据结构用于刻画数据、数据语义以及数据之间的联系;数据约束是对数据结构和数据操作的一致性、完整性约束。
2. 分层
根据数据抽象的不同级别,将数据模型分为3层:
flowchart TB
a1((现实世界));
subgraph 数据模型
b1[概念模型];
c1[逻辑模型];
d1[物理模型];
b1--数据库设计工具协助设计人员-->c1;
c1--DBMS-->d1;
end
a1--数据库设计人员-->b1;
- 概念模型
- 按用户的观点或认识对现实世界的数据和信息进行建模,主要用于数据库设计。
- 特点:语义表达能力强;易于理解;独立于任何DBMS;容易转换成不同DBMS所支持的逻辑数据模型。
- 常用:E-R模型(实体-联系模型)、OO模型(面向对象模型)
- 逻辑模型
- 是用户通过DBMS看到的现实世界,是按计算机系统的观点对数据建模,即计算机的实现形式,主要用于DBMS的实现。
- 特点:既要考虑用户容易理解,又要考虑便于DBMS的实现。
- 常用:传统模型(层次模型、网状模型、关系模型)、面向对象模型(XML模型)。
- 物理模型
- 数据抽象的最底层,用来描述数据的物理存储结构和存取方法。
- 特点:不仅由DBMS的设计决定,还于操作系统、计算机硬件密切相关。数据库设计人与要了解和选择物理模型,一般用户则不必考虑。
3. 组成要素
- 数据结构
描述数据库的组成对象以及对象之间的关系。是对系统静态特性的描述。
- 数据操作
指对数据库中各种对象的实例(类的实例)允许执行的操作集合(增删改查),包括相关操作规则。是对系统动态特性的描述。
- 数据完整性约束
是一组数据完整性规则,用以限定符合数据模型的数据库状态以及状态的变化,以确保数据的正确、有效和相容。
4. 层次模型
层次模型用树形结构标识各类实体以及实体间的联系。
特征:
- 有且仅有一个节点没有父节点,即根节点
- 根以外的其他节点有且仅有一个父节点
优点:
- 结构简单、清晰、明朗
- 查询效率较高
- 提供了较好的数据完整性支持
缺点:
- 结构呆板,缺乏灵活性
- 层次数据模型只能表示实体之间的一对多的关系,不能表示多对多的复杂关系,因此现实世界中的很多模型不能通过该模型方便的表示
- 查询节点的时候必须知道其双亲节点的,限制了对数据库存取路径的控制
5. 网状模型
网关模型用有向图表示实体和实体之间的联系。
特征:
- 可以存在两个或者多个节点没有父节点
- 允许单个节点存在多于一个父节点
优点:
- 可以更直观地直接描述现实世界
- 具有良好的性能,存取效率较高
缺点:
- 结构复杂,不利于最终用户掌握
- 操作语言比较复杂
6. 关系模型
使用表格表示实体和实体之间关系的数据模型
特征:
- 关系数据模型中,无论是是实体、还是实体之间的联系都是被映射成统二维表关系,在关系模型中,操作的对象和结果都是一张二维表
- 关系型数据库可用于表示实体之间的多对多的关系,只是此时要借助第三个关系表,来实现多对多的关系
- 关系必须是规范化的关系,即每个属性是不可分割的实体,不允许表中表的存在
可以看到学生与课程之间的联系以及教师和课程之间的多对多联系都被映射成了表格。其中选课表中的sut_id和cour_id分别是引用学生表和课程表的cour_id的外键;教课表也是如此。
优点:
- 建立在严格的数学概念的基础上,有关系代数作为语言模型,有关系数据理论作为理论基础
- 概念单一,实体、实体的联系以及对数据操作的结果都是关系,故结构简单清晰,易用
- 存取路径相对透明,从而数据独立性更高,安全保密性更好,简化了程序员工作,提高了开发和维护效率
缺点:
- 存取路径相对透明,导致查询效率往往不如非关系数据模型
五、数据抽象与数据库三级模式
1. 数据抽象层次
-
视图层:描述数据库的某个部分,是数据库的局部逻辑结构(取出数据库中的部分数据)
-
逻辑层:描述数据库中存储什么数据以及这些数据的关系
-
物理层:描述数据的存储结构和存取方法
2. 三级模式
-
外模式
- 也称用户模式或子模式,对应于视图层数据抽象,是数据库用户(程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图
- 用户只能看见和访问对应的外模式中的数据,其余数据则不可见
-
模式
- 也称为逻辑模式或概念模式,对应于逻辑层数据抽象,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图
- 与硬件、应用程序、开发工具和高级程序设计语言无关
-
内模式
- 也称存储模式,是数据的物理结构和存储方式的描述,是数据在数据库内部的表示方式
3. 两层映像
作用:保证DBMS中的数据能够具有较高的逻辑独立性和物理独立性。
-
外模式/模式映像
- 定义了该外模式与模式之间的对应关系
- 一个模式(全局)可以有多个外模式(局部)
- 保证数据与应用程序的逻辑独立性
-
模式/内模式映像
- 定义了数据全局逻辑结构与存储结构之间的对应关系
- 数据库中仅有一个内模式和一个模式,故模式/内模式映像是唯一的
- 保证数据与应用程序的物理独立性
4. 数据抽象、三层模型与三级模式与的关系
数据抽象是在不同的层次之间提供概念上的统一,使得不同层次的应用程序可以通过抽象层进行交互,而不必关心底层的实现细节。
三级模式描述了数据库系统的三个不同层次的逻辑结构,而三层模型是对三级模式的抽象和概括,分别对应了不同的层次:用户层、逻辑层和物理层。
三级模式更加关注于数据库的逻辑结构,而三层模型则更加关注于不同层次之间的关系和交互。三层模型的出现是为了方便不同层次之间的交互和协作,使得数据管理更加高效、灵活、易于扩展。
六、数据库系统与数据库管理系统
1. 数据库系统
数据库系统(DBS) 是指在计算机系统中引入数据库后的系统,一般由数据库、数据库管理系统、应用系统、数据库管理员和最终用户构成。
2. 数据库管理系统
数据库管理系统(DBMS) 是一组负责数据库的访问、管理和控制的软件,用以完成用户对数据库的各种操作请求。
-
DBMS的功能
- 数据定义
- 数据组织、存储和管理
- 数据操纵
- 数据库的事物管理和运行管理
- 数据库的建立和维护等
-
DBMS的组成
其中:
- 模式更新:对数据库的逻辑结构进行修改,如在一张表中增加一列属性
- 查询处理器:对用户请求的SQL操作进行查询优化,或更新数据库中相应的数据
- 事务管理器:负责资源管理,事务调度,保证数据库的一致性,保证多个同时运行的事务不冲突,以及保证当系统故障时数据不丢失