一、数据库概述
1、 数据库特征:
数据按一定的数据模型组织、描述和储存;
可为各种用户共享;
冗余度较小
数据独立性较高(物理与逻辑独立)
易扩展
2、 数据库系统的构成
由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员构成。
3、 数据模型
3.1 概念模型与数据模型
客观对象的抽象过程:1、现实世界中的客观对象抽象为概念模型;2、把概念模型转换为某
一 DBMS 支持的数据模型。
3.1.1 数据模型
a) 数据结构
描述数据库的组成对象以及对象(两类对象:与数据类型、内容、性质有关的对象;与
数据之间联系有关的对象)之间的联系
b) 数据操作
对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则
c) 完整性约束
完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则;限定数据库状
态以及状态的变化,以保证数据的正确、有效、相容。
其中数据的完整性可以分为以下四类:
1) 实体完整性:规定表的每一行在表中是惟一的实体。
2) 域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值
范围、精度等规定。
3) 参照完整性:是指两个表的主关键字和外关键字的数据应一致,保证了表之间的数
据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。
4) 用户定义的完整性:不同的关系数据库系统根据其应用环境的不同,往往还需要一
些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反
映某一具体应用必须满足的语义要求。
为完成数据的完整性,完整性约束的类型可分为三种类型:
1) 与表有关的约束:是表中定义的一种约束。可在列定义时定义该约束,此时称为列约
束,也可以在表定义时定义约束,此时称为表约束。(共有六种,可百度百科)
2) 域(Domain)约束:在域定义中被定义的一种约束,它与在特定域中定义的任何列都
有关系。(sqlserver 不支持)
3) 断言(Assertion):在断言定义时定义的一种约束,它可以与一个或多个表进行关联。
3.1.2 概念模型
概念模型信息世界中的基本概念包含:
实体
属性(描述实体)
码(唯一标识实体的属性)
域(属性的取值范围)
实体型、实体集
3.2 最常用数据模型
3.2.1 非关系模型(格式化模型)
层次模型(Hierarchical Model)
满足下面基本层次联系的集合:
1. 有且只有一个结点没有双亲结点,这个结点称为根结点;
2. 根以外的其它结点有且只有一个双亲结点。(参考二叉树数据结构)
层次模型性能优于关系模型,不低于网状模型
网状模型(Network Model)
满足下面基本层次联系的集合:
1. 允许一个以上的结点无双亲;
2. 一个结点可以有多于一个的双亲 。
具有良好的性能,存取效率较高。
3.2.2 关系模型
关系模型中数据的逻辑结构是一张二维表,它由行和列组成。
关系必须是规范化的,满足一定的规范条件最基本的规范条件:关系的每一个分量必须是一
个不可分的数据项.
优势:具有更高的数据独立性,更好的安全保密性,简化了程序员的工作和数据库开发建立
的工作。(因此我们现在大多数用这种开发)
3.3 数据库系统结构
3.3.1 数据库系统的三级模式结构
用以下例子举例说明,数据库系统的三级模式结构示意图:
模式(逻辑模式)为:数据库中全体数据的逻辑结构和特征的描述,所有用户的公共数据
视图,综合了所有用户的需求。定义了数据的逻辑结构、数据之间的联系和用户安全等基本
数据库框架。{核心,具体的逻辑结构的实现参考 https://baike.baidu.com/item/%E6%95%B0%
E6%8D%AE%E5%BA%93%E7%9A%84%E9%80%BB%E8%BE%91%E7%BB%93%E6%9E%84%E8%AE%BE%E8%
AE%A1/5719552?fr=aladdin#4_2}
外模式(也称子模式或用户模式):数据库用户(包括应用程序员和最终用户)使用的
局部数据的逻辑结构和特征的描述;数据库用户的数据视图,是与某一应用有关的数据的逻
辑表示。其中外模式与应用的关系:同一外模式可以为某一用户的多个应用系统所使用;但
一个应用程序只能使用一个外模式。
内模式(也称存储模式):数据物理结构和存储方式的描述,包括数据在数据库内部的
表示方式:•记录的存储方式(顺序存储,按照 B 树结构存储,按 hash 方法存储)
•索引的组织方式
•数据是否压缩存储
•数据是否加密
•数据存储记录结构的规定
3.3.2 二级映象与数据独立性
二级映象在 DBMS 内部实现这三个抽象层次的联系和转换,主要包含:
外模式/模式映象
每一个外模式都对应一个外模式/模式映象。
外模式/模式映象的用途:保证数据的逻辑独立性–当模式改变时,数据库管理员修改
有关的外模式/模式映象,使外模式保持不变–应用程序是依据数据的外模式编写的,从而
应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性。
模式/内模式映象
模式/内模式映象定义了数据全局逻辑结构与存储结构之间的对应关系。例如,说明逻
辑记录和字段在内部是如何表示的;数据库中模式/内模式映象是唯一的;该映象定义通常
包含在模式描述中。
作用:当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改
模式/内模式映象,使模式保持不变–应用程序不受影响。保证了数据与程序的物理独立性,
简称数据的物理独立性。
3.4 数据库系统的组成
其中,DBA 是数据库管理员。
以上是从内部看到的,下面是从外面(宏观)看,数据库系统的分类为:
单用户结构
主从式结构
分布式数据库系统(网络中的每个结点都可以独立处理本地数据库中的数据,执行局部
应用。同时也可以同时存取和处理多个异地数据库中的数据,执行全局应用)
客户/服务器结构
并行数据库系统(大数据)
二、关系数据库
1、 关系数据结构及形式化定义
1.1 逻辑结构
从用户角度,关系模型中数据的逻辑结构是一张二维表.
1.2 建立在集合代数的基础上
1.2.1 域
一组具有相同数据类型的值的集合。
1.2.2 笛卡尔积
所有域的所有取值的一个组合
不能重复
表示方法:
笛卡尔积可表示为一个二维表,表中的每行对应一个元组(笛卡儿积中的每一个元素),
表中的每列对应一个域
1.2.3 关系
定义:D1×D2×...×Dn 的子集叫作在域 D1,D2,...,Dn 上的关系,表示为 R(D1,D2,...,
Dn) 其中 R:关系名;n:关系的目或度(Degree)
关系当中定义了几条性质,这几条性质也决定了数据库中构建表应遵循的原则。
2、 关系操作
2.1 基本关系操作
常用的关系操作有
数据查询:选择、投影、连接、除、并、交、差;
数据更新:插入、删除、修改。
3、 关系的完整性
3.1 关系的三类完整性约束常用的关系操作
实体完整性和参照完整性:关系模型必须满足的完整性约束条件称为关系的两个不变性,
应该由关系系统自动支持;
用户定义的完整性:应用领域需要遵循的约束条件,体现了具体领域中的语义约束。
3.2 实体完整性
实体完整性规则的说明:
(1) 实体完整性规则是针对基本关系而言的。一个基本表通常对应现 实世界的一个实体集。
(2) 现实世界中的实体是可区分的,即它们具有某种唯一性标识。
(3) 关系模型中以主码作为唯一性标识。
(4) 主码中的属性即主属性不能取空值。
3.3 参照完整性
3.3.1. 关系间的引用
在关系模型中实体及实体间的联系都是用关系来描述的,因此可能存在着关系与关系间
的引用。(最主要的体现是主码和外码的关系)
3.3.2. 外码
设 F 是基本关系 R 的一个或一组属性,但不是关系 R 的码。如果 F 与基本关系 S 的主
码 Ks 相对应,则称 F 是基本关系 R 的外码。
其中,关系 R 和 S 不一定是不同的关系;目标关系 S 的主码 Ks 和参照关系的外码 F 必
须定义在同一个(或一组)域上;外码并不一定要与相应的主码同名,当外码与相应的主码
属于不同关系时,往往取相同的名字,以便于识别。
例子如下:
3.3.3. 参照完整性规则
若属性(或属性组)F 是基本关系 R 的外码它与基本关系 S 的主码 Ks 相对应(基本关系 R
和 S 不一定是不同的关系),则对于 R 中每个元组在 F 上的值必须为:或者取空值(F 的每
个属性值均为空值;或者等于 S 中某个元组的主码。
4、 关系代数
4.1 关系代数运算符
其中:关于集合运算符介绍如下:
R(一般为表)和 S 具有相同的目 n(即两个关系都有 n 个属性);相应的属性取自同一个域。
并操作:
R∪S 仍为 n 目关系,由属于 R 或属于 S 的元组组成 R∪S = { t|t 属于 R∨t 属于 S }。
差操作:
R - S 仍为 n 目关系,由属于 R 而不属于 S 的所有元组组成 R -S = { t| t 属于 R∨t 属于 S }。
笛卡儿积操作:
严格地讲应该是广义的笛卡尔积(Extended Cartesian Product) R: n 目关系,k1 个元组
S: m 目关系,k2 个元组 。
R×S 得到:
列:(n+m)列元组的集合
•元组的前 n 列是关系 R 的一个元组
•后 m 列是关系 S 的一个元组
行:k1×k2 个元组•R×S = {tr ts |tr 属于 R∧ts 属于 S }
关于笛卡尔积的例子为:
专门的关系运算:
投影运算:
投影运算符的含义:从 R 中选择出若干属性列组成新的关系
πA(R) = { t[A] | t 属于 R } ;其中 A 为 R 中的属性列
投影操作主要是从列的角度进行运算。但投影之后不仅取消了原关系中的某些列,而且
还可能取消某些元组(避免重复行)。
连接运算:
直接举例说明: