关系数据库——关系操作和关系完整性

简介: 关系数据库——关系操作和关系完整性

一、关系操作

1.基本的关系操作

常用的关系操作

查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作两大部分。

关系的查询表达能力很强,是关系操作中最主要的部分。

查询操作又可以分为:

选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、差(Except)、交(Intersection)、笛卡尔积等。

其中选择、投影、并、差、笛卡尔积是5种基本操作。

其他操作是可以用基本操作来定义和导出的。就像乘法可以用加法来定义和导出一样。

关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合(set-at-a-time)的方式。相应地,非关系数据模型的数据操作方式则为一次一记录(record-at-a-time)的方式。

2.关系数据语言的分类

关系代数语言

用对关系的运算来表达查询要求

代表:ISBL

关系演算语言

谓词来表达查询要求。

  1. 元组关系演算语言:谓词变元的基本对象是元组变量
    代表:APLHA,QUEL
  2. 域关系演算语言:谓词变元的基本对象是域变量
    代表:QBE

具有关系代数和关系演算双重特点的语言

代表:SQL (Structured Query Language)


二、关系的完整性

关系模型中有三种完整性:实体完整性、参照完整性和用户定义的完整性。

其中,实体完整性和参照完整性是关系模型中必须满足的完整性约束条件,被称作是关系的两个不变性

名词解释

  1. 候选码:属性组(单个属性也可做一组),该属性组的值能唯一地标识一个元组,而其子集不能。
  2. 主属性:候选码里的诸属性。
  3. 非码属性:不在任何候选码中的属性。
  4. 主码:若有多个候选码,选定其中一个为主码(即主码是候选码中的一个)。
  5. 外码:一个或一组属性。不是本关系的码,且是另一个关系的主码。本关系为参照关系,另一个关系为被参照关系。

1.实体完整性(Entity Integrity)

实体完整性规则

若属性A是基本关系R的主属性,则A不能取空值

若主码由若干属性组成,则所有这些主属性都不能取空值。

空值

“不知道”、“不存在”、“无意义”……不是0

说明

  1. 实体完整性的规则是针对基本关系而言的。一个基本表通常对应显示世界的一个实体集
  2. 现实世界中的实体是可区分的,即它们有某种唯一性标识
  3. 相应的,关系模型中以主码作为唯一标识
  4. 主码中的属性即主属性不能取空值

2.参照完整性(Referential Integrity)

参照完整性规则

若属性或属性组F是基本关系R的外键,它与基本关系S的主键Ks相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组在F上的值必须为:

(1)空值,F的每个属性值均为空值。

(2)S中某个元组中的主键值(主码值)。

参照的关系中的属性值必须能够在被参照关系找到或者取空值,否则不符合数据库的语义。

在实际操作时如更新、删除、插入一个表中的数据,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确,不正确则拒绝操作。

参照关系—→被参照关系(目标关系)

显然,目标关系S的主码Ks和参照关系R的外码F必须定义在同一个(或同一组)域上。

引用关系

同一关系

在参照完整性规则中,R和S可以是同一个关系。

在学生(学号,姓名,性别,年龄,专业号,班长)关系中,“学号”属性是主键,“班长”属性表示该学生所在班级的班长的学号,因此它应用的本关系“学号”属性。按照参照完整性规则,“班长”属性可以取以下两类值:

(1)空值,表示该学生所在班级尚未选出班长。

(2)非空值,该值必须是本关系中某个元组的学号值,即某个当选班长的学生的学号值。

两个关系间

如学生实体和专业实体可以用下列关系模式来表示,其中学号是学生的主键,专业号是专业的主键:

学生(学号,姓名,性别,专业号,年龄)

专业(专业号,专业名)

这两个关系之间存在着属性的引用(含有相同的属性“专业号”),学生关系引用了专业关系的主键“专业号”,专业号则是学生关系的外键。而且按照参照完整性规则,学生关系(并非专业关系)中的每个元组的“专业号”属性只能取两种值:

(1)空值,表示尚未给学生分配专业。

(2)非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中去。就是说学生关系中的某个属性的取值需要参照专业关系的属性取值。

两个以上的关系

两个以上的关系也可以存在引用关系,学生、课程、选课(学生与课程)之间的联系可以用下列三个关系来表示:

学生(学号,姓名,性别,专业号,年龄)

专业(专业号,专业名)

选课(学号,课程号,成绩)

这里的“学号”和“课程号”属性都是选课关系的外键,但只有“学号”和“课程号”联合起来才能确定选课的关系,所以这里存在一个复合主键关系,(学号,课程号)是选课关系的主键。虽然按照参照完整性可以取两类值,但是由于实体完整性,复合主键中的每个属性均不能取空值。所以选课关系中的”学号“和”课程号”属性实际上只能取被参照关系(学生关系和专业关系)中已经存在的主键值。即选课关系中的“学号”值必须是确实存在的学生的学号,学生关系中有该学生的记录;选课关系中的“课程号”值也必须是确定存在的课程的课程号,即课程关系中有该课程的记录。

3.用户定义的完整性(User-defined Integrity)

用户自定义完整性指针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求

某个属性必须取唯一值、某个非主属性也不能取空值的

用户定义完整性可以涵盖实体完整性、域完整性、参照完整性等完整性类型。

例如某个属性必须取唯一值,某个非主属性也不能取空值,某个属性的取值范围在0-100之间等

相关文章
|
2月前
|
SQL 关系型数据库 MySQL
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
【MySQL】— —熟练掌握用SQL语句实现数据库和基本表的创建。熟练掌握MySQL的安装、客户端登录方法;熟练掌握MySQL的编码、数据类型等基础知识;掌握实体完整性的定义和维护方法、掌握参照完整性
106 1
|
2月前
|
存储 安全 算法
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
【软件设计师备考 专题 】数据库的控制功能(并发控制、恢复、安全性、完整性)
58 0
|
9月前
|
SQL 关系型数据库 MySQL
数据库系统概论 ---- 第五章 -- 数据库完整性
数据库系统概论 ---- 第五章 -- 数据库完整性
|
5月前
|
SQL 定位技术 数据库
数据库基础(三):完整性约束、索引、视图
数据库基础(三):完整性约束、索引、视图
|
5月前
|
关系型数据库 数据库 RDS
为了确保数据的完整性和准确性,建议您在进行数据迁移前,充分理解源数据库和目标数据库的特性以及迁移过程中可能出现的问题
为了确保数据的完整性和准确性,建议您在进行数据迁移前,充分理解源数据库和目标数据库的特性以及迁移过程中可能出现的问题
42 1
|
5月前
|
数据库
实验四--数据库的安全性、完整性控制
实验四--数据库的安全性、完整性控制
28 0
|
6月前
|
SQL 关系型数据库 MySQL
数据库设计:防止MySQL字段名与关键字相撞,保护数据完整性!
数据库设计:防止MySQL字段名与关键字相撞,保护数据完整性!
151 0
|
8月前
|
SQL 存储 数据库
第5章 数据库完整性——复习笔记
第5章 数据库完整性——复习笔记
|
8月前
|
数据库
第2章 关系数据库——2.3关系的完整性
第2章 关系数据库——2.3关系的完整性
|
8月前
|
SQL 存储 数据库
第2章 关系数据库——2.2关系操作
第2章 关系数据库——2.2关系操作