1. 基本概念
1.1. 数据库阶段
- 人工管理阶段
- 文件系统阶段:使用文件系统来进行管理,缺陷:数据荣誉,数据不一致
- 数据库阶段:三大事件:层次模型的出现,网状模型的出现,关系模型的出现(Codd)
1.2. DB、DBMS、DBS定义
- 数据库(DB),DB是长期存储在计算机内、有组织的、统一管理的相关数据的集合。其特点是较小的冗余度、数据间联系紧密、有较高的数据独立性特点。
- 数据库管理系统(DBMS),是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提高了一层数据管理软件,包括DB的建立、查询、更新和各种数据控制。
- 数据库系统(DBS),DBS是实现有组织地、动态地存储大量关联数据、方便多用户访问的计算机硬件、软件和数据资源组成的系统。(采用数据库技术的计算机系统)
- 数据库技术,数据库技术是研究数据库的结构、存储、设计、管理和使用的一门软件学科。
1.3. 数据描述
在对事务描述到计算机的具体表示过程中,数据经过了3个阶段:概念设计、逻辑设计、物理设计。
其中数据描述有两种形式:物理数据描述和逻辑数据描述。
1.3.1. 概念设计
概念设计是根据用户的需求设计数据库的概念结构。这个阶段简单的来说就是把一个事务用ER模型抽象表示。
涉及到的术语:
- 实体,客观存在,可以相互区别的事物叫做实体。例如一名学生。
- 实体集,性质相同的同类实体的集合。如所有的男生。
- 属性,实体的特性,一个特性为一个属性。例如学生有年龄、学号等属性。
- 实体标识符,能唯一表示实体的属性或者
属性集
1.3.2. 逻辑设计
逻辑设计是根据概念设计的结果设计数据库的逻辑结构。
- 字段,标记实体属性的命名单位称为字段或者数据项。
- 记录,字段的有序集合称为记录。
- 文件,同一类记录的集合称为文件。
- 关键码,能够唯一表示文件中的每条记录的字段和字段集,称为记录的关键码。
概念设计和逻辑设计的术语对应关系如下:
概念设计 | 逻辑设计 |
---|---|
实体 | 记录 |
属性 | 字段(数据项) |
实体集 | 文件 |
实体标识符 | 关键码 |
1.3.3. 物理设计
数据库的存储结构和具体实现方式即物理设计
1.3.4. 数据联系的描述
即描述实体和实体之间的联系。同样的举基本概念。
联系是实体直接按的相互关系。与一个联系有关的实体集个数,称为联系的元数。
拿二元联系举例子,其中二元联系有以下3个类型:
- 一对一,一个实体集E1中的每个实体至多和实体集E2中的一个实体有联系,反之亦如此。记作"1:1"。
2. 一对多,一个实体集E1中的每个实体可以和实体集E2中的任意多个实体有联系,而E2中的每个实体至多和E1中的一个实体有联系,那么就称E1对E2的联系是一对多联系。记作"1:N"。 - 多对多,一个实体集E1中的每个实体可以和实体集E2中的任意多个实体有联系,反之亦如此。记作"N:N"。
1.4. 数据抽象的级别
1.4.1. 数据抽象的过程
DB全局逻辑结构模型称为“逻辑模型”,DB局部逻辑结构的模型称为“外部模型”。表达DB物理结构的模型叫“内部模型”。
外部模型 |
---|
逻辑模型 |
内部模型 |
对应到关系数据库中为
外部模型 |
---|
逻辑模型 |
内部模型 |
步骤如下:
- 根据用户需求得到概念模型。
- 通过概念模型转化为逻辑模型。
- 设计不同的外外部模型(外部模型供给程序员使用)。
- 根据逻辑模型设计得到内部模型。
1.4.2. 概念模型
实体联系模型(ER模型),模型直接从现实世界中抽线出实体类型和实体之间的联系。然后用实体联系图表示数据模型。
即ER图是概念模型的工具。
ER图成分:
- 矩形框:表示实体(考虑问题的对象)
- 菱形框:表示联系类型(实体之间的联系)
- 椭圆形框:表示实体类型和联系类型的属性
- 其中相应的命名加入到各种框内,对于实体标识符的属性,在属性下面加入一条横线。
- 实体和属性之间,联系和属性之间用直线连接,联系类型和涉及到的实体类型之间也可以用直线相连,用来表示其中的联系。并且注明联系类型(1:1、1:N、M:N)
1.4.3. 逻辑模型
选定DBMS后,即可将概念模型转化为逻辑模型。
逻辑模型独立与硬件,是从数据库的观点对数据建模,有以下几种类型
1.4.3.1. 层次模型
用树状结构表示实体类型以及实体联系之间的数据模型叫做层次模型。
上一层记录和下一层记录类型之间的联系是1:N的联系。
缺点:
- 只能直观1:N表示,若需要N:M则实现复杂。
- 查询操作复杂、应用程序编写复杂。
1.4.3.2. 网状结构
用有向图结构表示实体类型和实体之间联系的数据模型称为网状结构。
优点:
- N:M联系容易实现
- 查询效率高
缺点:
- 编程复杂
1.4.3.3. 关系模型
关系模型是由若干个关系模式(Relational Schema)组成的集合(二维表的集合)。
注意:关系模型相当于前面提到的记录类型,它的实例称为关系,每个关系实际上是一张二维表。
关系模式和网状/层次结构的区别:使用关键码而不是指针导航数据(使用主键建立联系)
1.4.3.4. 对象模型
更加灵活,用于存储复杂的数据结构。
基本概念:
- 对象,现实世界的实体的模型化。有唯一标识符,通过封装把状态和行为结合在一起。
- 类,对象的集合
1.4.4. 外部模型
供给程序员使用的接口,是逻辑模型的子集,与硬件实现无关,依赖于软件。
1.4.5. 内部模型
内部模型又称为物理模型。是数据库的最底层抽象,描述的是数据在磁盘上的组织。
1.4.6. 三级模型和两层映像
1.4.6.1. 三层模型
在用户到数据库之间,DB的数据结构有三个层次外部模型、逻辑模型和内部模型,这个三个层次使用数据定义语言(Data Definition Language,DDL)定义以后就称为模式(Schema),即外模式、逻辑模式和内模式。数据库的数据结构描述有三个层次:
- 外模式:是用户与数据库系统的接口,是用户用到的那部分数据的描述。外模式由若干个。
- 逻辑模式是数据库中全部数据的整体逻辑结构的描述。他由若干个逻辑类型组成,还包括记录间联系,数据的完整性、安全性等要求。
- 内模式是数据库在物理存储方面的描述。
-
用户使用数据库的数据操纵语言(Data Manipulation Language,DML)语句对数据库进行操作,实际上是对外模式的外部记录进行操作;逻辑模式必须不涉及到存储结构、访问技术等细节;内模式并不涉及到物理设备的约束。
有了外模式之后,程序员只用考虑和外模式的交互。 -
逻辑模式不涉及存储结构和访问技术的细节。逻辑模式处于中间抽象
-
内模式并不涉及物理设备的约束(设备无关系),而只是考虑到在磁盘上的读写操作。
1.4.6.2. 两层映像
- 外模式/逻辑模式映像
- 逻辑模式/内模式映像
1.4.7. 高度的数据独立性
数据独立性指的是程序和数据库的数据结构之间相互独立,不受影响。在修改数据结构时,尽可能不修改应用程序,即达到了数据独立性。
分为两种:
- 物理数据的独立性,内模式的修改时,只需要修改逻辑模式/内模式映像,而其他不变。
- 逻辑数据的独立性,逻辑模式的修改时,只需要修改外模式/逻辑模式映像,而其他不变。
1.5. 数据库管理系统DBMS
1.5.1. DBMS的主要功能
- 数据库定义功能,对应为DDL
- 数据库操作功能,对应为DML
- 数据库保护功能,包括恢复、并发、完整性、安全性控制
- 数据库维护功能
- 数据字典
1.6. 数据库系统DBS
DBS是采用了数据库技术的计算机系统。
它是数据库、软件、硬件、数据库管理员(DBA)的集合。
2. 关系模型和关系运算理论
2.1. 关系模型的基本概念
2.1.1. 基本术语
关系模式:用二维表表示实体集,用关键码表示实体之间的联系的数据模型称为关系模型
e.g.
学号 | 姓名 | 年龄 | 性别 | 籍贯 |
---|---|---|---|---|
S1 | WANG | 20 | M | 上海 |
S4 | LIU | 18 | F | 云南 |
S2 | HU | 17 | M | 四川 |
S3 | XIA | 19 | F | 北京 |
在关系模型中,字段称为属性,字段值称为属性值,记录类型称为关系模式。关系模式名为R,记录称为元组。元组的集合称为关系或者实例。
通用习惯:一般使用大写字母A,B,C,...表示单个属性,用大写字母...,X,Y,Z表示属性集。用小写字母表示属性值
习惯称关系为表格或者表
元组为行,属性为列
关系中属性的个数叫做元数(几列),元组的个数叫基数(几行)。
关键码由一个或者多个属性组成。
常用的键:
- 超键,这个关系中能够唯一标识元组的属性或属性集称为关系模式的超键。
- 候选键,不含有多余属性等超键称为候选键。即在候选键中再删除属性就不是键了。
- 主键,用户选作元组标识的候选键称为主键。
- 外键,如果模式R中属性K是其他模式的外键,那么K在模式R中称为外键。(用于表示引用其他表中的主键)
值域,每一个属性都有一个取值范围,称为该属性的值域。
2.1.2. 关系的定义和性质
关系是一个属性数目相同的元组的集合
其中有一下规范性限制:
- 关系中的每一个属性都是不可再分解的
- 关系中不允许出现重复的元组(不能有相同的行)
- 由于关系是一个集合,因此不用考虑元组出现的顺序(没有行序)
- 元组中的属性在理论上是无需的,但是按照习惯应该考虑下顺序的
2.1.3. 关系模型的3中完整性规则
2.1.3.1. 实体完整性
要求元组在组成主键的属性上不能为空值
2.1.3.2. 参照完整性
定义:如果属性集K是关系模式R1的主键,K也是关系模式R2的外键。那么
在R2关系中,K的取值有只有两种可能,或者为空值,或者等于R1关系中的某个主键值。
这条规则的实质是“不允许引用不存在的实体”
- 外键和对应的主键可以不同名,只要在定义在相同的值域上即可
- R1和R2可以是同一个关系模式,此时表示了同一个关系模式中不同元组之间的联系
- 外键值是否可以是空,应该看具体问题
2.1.3.3. 用户定义完整性
在建立关系模式时,对属性定义了数据类型,即使这样可能还满足不了用户的需求。即产生了用户定义完整性。
2.1.4. 关系模型的3层体系结构
- 关系模式
在关系模型中,记录类型称为关系模式,而关系模式的集合就是数据库的概念模式。
对应逻辑模式 - 子模式
子模式是用户所用到的那部分数据的描述。
对应外模式 - 存储模式
在DBMS中,关系存储时是作为文件看待的,每个元组就是一条记录。
对应内模式
2.1.5. 关系模型的形式定义和优点
关系模型有3个重要组成部分,数据结构、数据操作和数据完整性规则。
- 数据结构,数据库中的全部数据及其相互联系被组织成关系的形式。
- 数据操作,关系模型提供一组完备的高级关系运算,以支持对数据库的各种操作。
- 数据完整性规则,数据库中的数据必须满足实体完整性、参照完整性和用户定义完整性3类规则。
2.1.6. 关系查询语言和关系运算
数据操作语言DML:对数据的增删查改
2.2. 关系代数
2.2.1. 关系代数5个基本操作
- 并
- 差
- 笛卡尔积
- 投影
- 选择
2.2.2. 关系代数的4个组合操作
- 交
- 连接
- 自然连接
- 除法
2.2.3. 关系代数的7个扩充操作
- 改名
- 广义投影
- 赋值
- 外连接
- 外部并
- 半连接
- 聚集操作
2.2.4. 关系代数表达式的等价变换规则
两个关系代数表达式等价指的是用同样的关系实例代替两个表达式中相应的关系时得到的结果是一样的。
- 连接和笛卡尔积的交换律
- 连接和笛卡尔积的结合律
- 投影的级联
- 选择的级联
- 选择和投影操作的交换
- 选择对笛卡尔积的分配律
- 选择对并的分配律
- 选择对集合差的分配律
- 选择对自然连接的分配律
- 投影对笛卡尔积的分配律
- 投影对并的分配律
- 选择和连接操作的结合
- 并和交的交换律
- 并和交的结合律