第二章 关系数据库
正是有了现在的艰难,苦尽甘来才变得更有意义。
第一节 关系数据库概述
关系数据库的特征
基本特征是使用关系数据模型组织数据,这种思想源于数学。
关系数据库的优点
- 高级的非过程语言接口;
- 较好的数据独立性;
- 为商品化的关系数据库管理系统的研制做好了技术上的准备。
第二节 关系数据模型
关系数据库模型三要素
- 关系数据结构
- 关系操作集合
- 关系完整性约束
关系数据结构
- 表:也称为关系,一个二维数据结构,由表名、构成表的列及若干行数据组成。每一个表有一个唯一的表名,每一行数据描述一条具体的记录值。
- 关系: 一个关系逻辑对应易掌柜二维表,可以为每个关系取一个名称进行标识。关系的三种类型: 1)基本关系;2)查询表;3)视图表。
- 列: 也称为字段或属性。表中每一列有一个名称,称为列名、字段名或属性名。每一列表示一个实体的属性。在表中,字段名必须唯一,不同的表中可以出现相同的字段名。
- 属性: 一列即为一个属性,每一个属性都有一个属性名。表中属性的个数称为关系的元或度。列的值称为属性值;属性的取值范围称为值域。
- 行: 也称为元组或记录。表中数据按行进行存储。表中的一行数据即为一个元组或一条记录,其每行由若干字段值组成。每个字段值描述该对象的一个属性或特征。
- 分量: 元组中的一个属性值,称为一个分量。
- 码或键: 即这些属性的值都能用来唯一标识该关系的元组,则称这些属性为该关系的码或键。
- 超码或超键: 如果在关系的一个码中移去某个属性,它仍然是这个关系的码,则称这样的码或键为该关系的超码或超键。
- 候选码或候选键: 如果在关系的一个码或键中,不能从中移去任何一个属性,否则它就不是这个关系的码或键。则称这样的码或键为该关系的候选码或候选键。 一个关系的候选码或候选键是这个关系的最小超码或超键。
- 主码或主键: 在一个关系的若干个候选码或候选键中指定一个用来唯一标识关系的元组,则称这个被指定的候选码或候选键为该关系的主码或主键。
- 全码或全键: 一个关系模式的所有属性集合是这个关系的主码或主键,则称这样的主码或主键为全码或全键。
- 主属性和非主属性: 关系中包含在任何一个候选码中的属性称为主属性或码属性,不包含在任何一个候选码中的属性称为非主属性或非码属性。
- 外码或外键: 当关系中的某个属性不是这个关系的主码或候选码,而是另一关系的主码时,称该属性为这个关系的外码或外键。
- 参照关系和被参照关系: 参照关系也称为从关系,被参照关系也称为主关系,它们是指以外码相关联的两个关系。以外码作为主码的关系称为被参照关系;外码所在的关系称为参照关系。被参照关系与参照关系是通过外码相联系的,这种联系通常是一对多的联系。
- 域: 表示属性的取值范围。
- 数据类型: 表中每个列都有相应的数据类型,它用于限制该列中存储的数据。
- 关系模式: 同数据模型一样,数据库也有型和值之分。在关系数据库中,关系模式是型,关系是值,即关系模式是对关系的描述。关系模式是静态的、稳定的,而关系是动态的、随时间**不断变化的。**这是因为关系操作在不断地更新着数据库中的数据。人们常常会把关系模式和关系都笼统地称为关系。
- 关系数据库
关系数据库是以关系模式作为数据的逻辑模型,并采用关系作为数据组织方式的一类数据库,其数据库操作建立在关系代数的基础上。 在一个给定的应用领域中,所有关系的集合构成一个关系数据库。
关系数据库对关系是有限定的,具体要求如下:
- 每一个属性都是不可分解的。
- 每一个关系仅仅有一种关系模式。
- 每一个关系模式中的属性必须命名,在同一个关系模式中,属性名必须是不同的。
- 同一个关系中不允许出现候选码或候选键值完全相同的元组。
- 在关系中元组的顺序是无关紧要的,可以任意交换。
- 在关系中属性的顺序是无关紧要的,可以任意交换。
关系操作集合
- 基本的关系操作有:1)查询操作;2)插入、删除、修改操作。
- 查询操作: 选择、投影、连接、除、并、差、交、笛卡尔积等。
- 关系操作的特点是集合操作方式,即操作的对象和结果都是集合、这种操作方式也称为一次一集合的方式。
- 关系操作的分类: 关系代数语言、关系演算语言以及兼具两者双重特点的语言。共同特点是:语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够独立使用也可以嵌入高级语言中使用。
- 关系代数
- 三大要素:操作对象、操作符、操作结果。
- 关系运算符:
关系完整性约束
指数据库中数据的正确性、相容性和一致性。
关系模型中有三类完整性约束,分别是实体完整性约束、参照完整性约束和用户定义完整性约束。
实体完整性约束
是指关系的主属性,即主码的组成不能为空,也就是关系的主属性不能是空值 NULL。
参照完整性约束
参照完整性约束就是定义外码和主码之间的引用规则,它是对关系间引用数据的一种限制。描述定义:若属性 F 是基本关系 R 的外码,它与基本关系 S 的主码 K 相对应,则对 R 中每个元组在 F 上的值只允许两种可能,即要么取空值,要么等于 S 中某个元组的主码值。
用户定义完整性约束
用户定义的完整性约束是针对某一应用环境的完整性约束条件,它反映了某一具体应用所涉及的数据应满足的要求。
关系模型完整性约束的校验
为了维护关系数据库中数据的完整性,在对关系数据库执行插入、删除和更新操作时,需要检验是否满足上述三类完整性约束。
关系数据库的规范化理论
关系模式存在的问题
- 数据冗余
- 更新异常
- 插入异常
- 删除异常
什么是函数依赖?
函数依赖是指关系中属性间的对应关系。
几种函数依赖关系
- 完全函数依赖;
- 部分函数依赖;
- 传递函数依赖。
什么是关系规范化过程?
一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。
第一范式
设 R 为任一给定关系,若果 R 中每个列与行的交点处的取值都是不可再分的基本元素,则 R 为第一范式。
第一范式是一个不含重复组的关系,其中不存在嵌套结构。不满足第一范式的关系为非规范关系。
第二范式
设 R 为任一给定关系,若 R 为 1NF,且其所有非主属性**都完全函数依赖于候选关键字,**则 R 为第二范式。
第三范式
设 R 为任一给定关系,若 R 为 2NF,且其每一个**非主属性都不传递函数依赖于候选关键字,**则 R 为第三范式。
BCNF
设 R 为任一给定关系, X、 Y 为其属性集, F 为其函数依赖集,若 R为 3NF,且其 F 中所有函数依赖 X→Y(Y 不属于 X)中的 X 必包含候选关键字,则 R 为 BCNF。
关系规范化理论的应用
关系规范化理论主要应用于数据库设计中的概念设计阶段。在实现设计中当将E-R 图向关系模型转换时,还可以用它来分析并发现概念设计中可能存在的遗漏或不当之处,特别是联系实体是否不单独转换为一独立关系而集成到与之相联的基本实体中去处理时,规范化理论是最有效的评价准则。