关于数据库:数据库系统概论王珊第二章关系数据库第二节第三节关系操作和关系完整性

38次阅读

共计 1676 个字符,预计需要花费 5 分钟才能阅读完成。

  • pdf 下载:明码 7281
  • 专栏目录首页:【专栏必读】(考研复试)数据库系统概论第五版(王珊)专栏学习笔记目录导航及课后习题答案详解

一:关系操作

(1)根本的关系操作

关系模型罕用关系操作如下。

关系操作的特点是汇合操作形式,也即操作的对象和后果都是汇合。也称为一次一汇合(set-at-a-time)的形式

  • 非关系数据模型的数据操作形式称为 一次一记录(record-at-a-time)

(2)关系数据语言的分类

关系数据语言可分为三类,如下

上面是 SQL 的理解性内容,可不看(下一章将会重点介绍)

特地地,SQL 语言是一种高度非过程化的语言,用户不用申请数据库管理员为其建设非凡的存取门路,存取门路的抉择由关系数据库管理系统的优化机制来实现。例如,在一个存储有几百万条记录的关系中查找符合条件的某一个或某一些记录,从原理上讲能够有多种查找办法。例如,能够程序扫描这个关系,也能够通过某一一种索引来查找。不同的查找门路 (或者称为存取门路) 的效率是不同的,有的实现某一个
查问可能很快,有的可能极慢。关系数据库管理系统中钻研和开发了查问优化办法,零碎能够主动抉择较优的存取门路,进步查问效率

二:关系完整性束缚

关系完整性规定是对关系的 某种约束条件,这些约束条件实际上是事实世界的要求,例如性别只能有男、女两种取值

关系模型中有如下三类完整性束缚

  • 实体完整性(entity integrity)
  • 参照完整性(referential integrity)
  • 用户自定义完整性(user-defined integrity)

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

(1)实体完整性

实体完整性:若属性 A 是根本关系 $R$ 的主属性,则属性 A 不能取空值

  • 例如“选修(学号, 课程号, 问题)”关系中,若(学号, 课程号)为主码,则 学号和课程号都不能取空值

(2)参照完整性

A:参照关系

(留神在关系示意中,下划线示意主码


【例 1】如下两个关系中,学生关系援用了业余关系的主码“业余号”,也就是说,学生关系中的某个属性的取值须要参照业余关系的属性取值

【例 2】如下三个关系中,选修关系援用了学生关系的主码“学号”和课程关系的主码“课程号”,也就是说,选修关系中某些属性的取值须要参照其余关系的属性取值

【例 3】还有,同一关系外部也可能存在援用关系 。比方在 学生 (学号,姓名,性别,业余号,年龄,班长) 关系中,“学号”属性是主码,“班长”属性示意该学生所在班级的班长的学号,它援用了本关系“学号”属性,即“班长”必须是的确存在的学生的学号

B:外码

** 外码:设 $F$ 是根本关系 $R$ 的一个或一组属性,但不是关系 $R$ 的码【例如这里 $F$ 是学生关系的业余号】,$K_{s}$ 是根本关系 $S$ 的主码【

  • 留神:外码并不一定要与相应的主码同名,如下面第三个例子中,学生关系的主码为学号,外码为班长。不过,在理论利用中为了便于辨认,当外码与相应的主码属于不同关系时,往往给它们取雷同的名字。

下面三个例子的参照关系示意如下

C:参照完整性规定

参照完整性:若属性或属性组 $F$ 是根本关系 $R$ 的外码,它与根本 $S$ 的主码绝对应(关系 $R$ 和 $S$ 不肯定是不同的关系),则对于 $R$ 中每个元组在 $F$ 上的值必须

  • 要么取空值(此时 $F$ 的每个属性值均为空值)
  • 要么等于 $S$ 中某个元组的主码值

因而对于【例 1】,学生关系中每个元组的 业余号 只能取上面两类值

  • 空值:示意该学生尚未调配业余
  • 非空值(且该值必须是业余关系中某个元组的业余号值):示意该学生不能调配到一个不存在的业余中

而对于【例 2】,依照情理来说“学号”和“课程号”也能够取两类值,然而“学号”和“课程号”它作为的是选修关系的主码,所以如果取空值的话将会违反实体完整性规定

对于【例 3】,$R$ 和 $S$ 是同一个关系,“班长”能够取两类值

  • 空值:该班还没有选出班长
  • 非空值:班长必须是班里的同学

(3)用户自定义完整性

用户自定义完整性 1 针对某一具体关系数据库的约束条件,反映 某一具体利用所波及的数据必须满足的语义要求,例如某个属性必须取惟一值,某个非主属性不能取空值等等

正文完
 0