【期末不挂科】第二章 关系数据库

博主介绍:

我是了 凡 微信公众号【了凡银河系】期待你的关注。未来大家一起加油啊~


2.1 关系数据结构及形式化定义

(了解关系数据结构,包括关系的形式化定义及有关概念都是什么?)

2.1.1 关系

关系模型的数据结构表达非常简单,只包含单一的数据结构——关系。

  1. 域(domain)
    定义:域是一组具有相同数据类型的值的集合。
    例如,自然数、整数、实数、长度小于25字节的字符串集合、{0,1}、{男,女}、大于等于0且小于等于100的正整数等,都可以是域。

  2. 笛卡儿积(cartesian product)
    笛卡儿积是域上的一种集合运算。定义:给定一组域D1,D2,…,Dn,允许其中某些域是相同的,D1,D2,…,Dn的笛卡儿积为
    在这里插入图片描述
    其中,每一个元素在这里插入图片描述
    叫做n元组(n-tuple),或简称元组(tuple),元素中的每一个值 di 叫做一个分量(component)。

    简单来讲,就是一张表与另一张表的笛卡儿积等于每一个
    元素都是另一张表相并。(下图为例)
    在这里插入图片描述
    笛卡儿积的基数为:4×4=16 个元组 列为一张二维表

  3. 关系(relation)
    定义:
    在这里插入图片描述

    表示为:R (D1,D2,D3·····Dn)
    R:关系名
    n:关系的目或度(Degree)

    元组:关系中的每个元素是关系中的元组,通常用t表示

    单元关系与二元关系

    • 当n=1时,称该关系为单元关系(Unary relation)或一元关系
    • 当n=2时,称该关系为二元关系(Binary relation)

2.1.2 关系模式

  数据库中要区分型和值。关系数据中,关系模式是型,关系是值。关系模式是对关系的描述。

  那么一个关系需要描述哪些方面呢?关系是元组的集合,因此关系模式必须指出这个元素集合的结构,即它由哪些属性构成,这些属性来自哪些域,以及属性与域之间的映像关系。

定义:关系的描述称为关系模式(relation schema)。它可以形式化地表示为 R(U,D,DOM,F)

其中,R为关系名,U为组成改关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F
为属性间数据的依赖关系集合。


2.1.3 关系数据库

  关系数据库也有型和值之分。关系数据库的型也称为关系数据库模式,是对关系数据库的描述。关系数据库模式包括若干域的定义,以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库


2.1.4 关系模型的存储结构

  在关系数据库模型中实体及实体间的联系都用表来描述,但表是关系数据的逻辑模式。在关系数据的物理组织中,有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统完成;有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理。


2.2 关系操作(了解关系操作具体怎么做)

2.2.1 基本的关系操作

  关系的查询表达能力很强,是关系操作中最主要的部分。查询操作又可以分为选择(select)、投影(project)、连接(join)、除(divide)、并(union)、差(except)、交(intersection)、笛卡儿积等。
  其中选择、投影、并、差、笛卡儿积是5钟基本操作,其他操作可以用基本操作来定义和导出,就像乘法可以用加法来定义和导出一样。
  关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作也称为一次一集合(set-at-a-time)的方式。相反非关系数据模型的数据操作方式则为一次一记录(record-at-a-time)的方式


2.2.2 关系数据语言的分类

  早期的关系操作能力常用代数方式或逻辑方式来表示,分别称为关系代数和关系演算。关系代数用对关系的运算来表达查询要求,关系演算则用谓词来表达查询要求。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算
  另外,还有一种介于关系代数和关系演算之间的结构化查询语言。SQL 不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询、数据定义语言、数据操纵语言和数据控制语言于一体的关系数据语言。它充分体现了关系数据语言的特点和优点,是关系数据库的标准语言。

因此,关系数据语言可以分为三类:

在这里插入图片描述


2.3 关系的完整性 (了解关系的三类完整性约束都有哪些?)

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


2.3.1 实体完整性

  实体完整性规则:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值(null value)。所谓空值就是“不知道”或“不存在”或“无意义”的值。

完整性规则说明如下:

  • 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。例如学生关系对应于学生的集合。
  • 现实世界中的实体是可区分的,即它们具有某种唯一性标识。例如每个学生都是独立的个体,是不一样的。
  • 相应地,关系模型中以主码作为唯一性标识。
  • 主码中的属性即主属性不能取空值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与第(2)点相矛盾,因此这个规则称为实体完整性。

2.3.2 参照完整性

  定义设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码(foreign key),并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。关系R和S不一定是不同的关系。

在这里插入图片描述

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

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

  • 或者取空值(F的每个属性值均为空值)
  • 或者等于S中某个元组的主码值。

  例如,对于学生关系中每个元组的“专业号”属性只能取下面两类值:

  • 空值,标识尚未给该学生分配专业;
  • 非空值,这时该值必须是专业关系中某个元组的“专业号”值,表示该学生不可能分配到一个不存在的专业中。即被参照关系“专业”中一定存在一个 元组,它的住吗值等于该参照关系“学生”和“课程号”属性实际上只能取相应被参照关系中已经存在的主码值。

2.3.3 用户定义的完整性

  任何关系数据库都应该支持实体完整性和参照完整性。这是关系模型所要求的。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

  通俗来讲,就是每个用户都可以对一些属性进行设置约束,比如学生的年纪可以设置只能到1~120岁。


2.4 关系代数 (了解关系数据库系统的一种语言如何实现关系操作)

  关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。运算的三大要素:运算对象、运算符、运算结果

关系代数的运算按运算符的不同可分为传统的集合运算和专门的关系运算两类


2.4.1 传统的集合运算

传统的集合运算是二目运算,包括并、差、交、笛卡儿积4种运算

设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性 取自同一个域,t是元组变量,t∈R表示t是R的一个元组。


  • 关系R与关系S的并记作 R∪S={t|t∈R∨t∈S}
    其结果仍为n目关系,由属于R或属于S的元组组成。


  • 关系R与关系S的差记作 R-S={t|t∈R∧t∉S}
    其结果关系仍为n目关系,由属于R而不属于S的所有元组组成。


  • 关系R与关系S的交记作 R∩S={t|t∈R∧t∈S}
    其结果关系仍为n目关系,由既属于R又属于S的元组组成。关系的交可以用差来表示,即R∩S=R-(R-S)。

  • 笛卡儿积
    这里的笛卡儿积严格地讲一ing给是广义的笛卡儿积,因为这里笛卡儿积的元素是元组。


2.4.2 专门的关系运算

专门的关系运算包括选择、投影、连接、除运算等。

  1. 选择
    选择又称为限制(restriction)。它是在关系R中选择满
    足给定条件的诸元组,记作:

    其中F表示选择条件,它是一个逻辑表达式,取逻辑
    值“真”或“假”。

    通俗来讲,就是从关系中选出符合我们要求的行:
    例如

    答案

  2. 投影
    关系R上的投影是从R中选择出若干属性列组成新的关
    系。记作:

    其中A为R中的属性列。投影操作是从列的角度进行的运
    算。

    通俗来讲,投影就是选择出我们要显示的结果给显示出来
    例如

    答案

  3. 连接
      连接也称为0连接。它是从两个关系的笛卡儿积中选取
    属性间满足一定条件的元组。记作

    其中,A和B分别为R和S上列数相等且可比的属性组,0
    是比较运算符。连接运算从R和S的笛卡儿积R×S中选取R
    关系在A属性组上的值与S关系在B属性组上的值满足比较
    关系0的元组。

      连接运算中有两种最为重要也最为常用的连接,一种是
    等值连接(equijoin),另一种就是自然连接(natural
    join)。

      0为 “=” 的连接运算称为等值连接。他是从关系R与S的
    广义笛卡儿积中选取A、B属性值相等的那些元组,即等值
    连接为

    自然连接是一种特殊的等值连接。它要求两个关系中进
    行比较的分量必须是同名的属性组,并且在结果中把重复
    的属性列去掉。即若R和S中具有相同的属性组B,U为R和
    S的全体属性性集合,则自然连接可记作:

    例如:关系R和关系S如下所示:
    R表

    S表

    等值连接R.B=S.B结果:

    自然连接R.B=S.B结果:

      可以看到连接操作是从行的角度进行运算。但自然连接还需要取消了重复列,所以是同时从行和列的角度进行运算。

    连接中还有比较特殊的三种

    • 外连接:将舍弃的元组也保存在结果关系中
    • 左外连接:将左边关系要舍弃的元组保留
    • 右外连接:将右边关系要舍弃的元组保留
  4. 除运算
      设关系R除以关系S的结果为关系T,则T包含所有在R但不再S中的属性及其值,且T的元组与S的元组的所有组合都在R中。

    下面用象集来定义除法:
      给定关系 R(X,Y) 和 S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。

    R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影;元组在X上分量值x的相机Yx包含S在Y上投影的集合。记作

    其中Yx为x在R中的象集,x=t的r项[X]。
    例如:


练习题

  1. 试述关系模型的三个组成部分。
  2. 简述关系数据语言的特定和分类。
  3. 定义并理解下列术语,说明它们之间的联系与区别:
    a. 域,笛卡儿积,关系,元组,属性;
    b. 主码,候选码,外码;
    c. 关系模式,关系,关系数据库。
  4. 举例说明关系模式和关系的区别。
  5. 试述关系模型的完整性规则。在参照完整性中,什么情况下外码属性的值可以为空值?
  6. 试述等值连接与自然连接的区别和联系。
  7. 关系代数的基本运算有哪些?如何用这些基本运算来表示其他运算?

总结

  关系数据库是重点,因为关系数据系统是目前使用最广泛的数据库系统。

  关系数据库系统与非关系数据库系统的区别是,关系系统只有“表”这一种数据结构;而非关系数据库系统还有其他数据结构,以及对这些数据结构的操作。

  本章讲解了关系数据库的重要概念,包括关系模型的数据结构,关系操作以及关系的三类完整性;了解了用代数方式和逻辑方式来表达的关系语言即关系代数。


创作不易,点个赞吧!
如果需要后续再看点个收藏!
如果对我的文章有兴趣给个关注!
如果有问题,可以关注公众号【了凡银河系】点击联系我私聊。


本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>