关系代数知识点

一.关系数据结构及形式定义

1.关系

现实世界的实体及实体间的各种联系均用关系来表示,是单一的数据结构。
是在二维表中是具体的内容,是动态的
就是一张二维表的具体内容,就是除了标题行以外的数据行,因为表数据经常被修改,插入,删除,所以不同时刻,关系可能不一样。其实,关系就是数学中的集合了,每一行就是集合中的一个元素。

①域

域:是一组具有相同数据类型的值的集合。
例如:一组整数集合,一组字符串数据集合,实数,{’学生‘,‘老师’,‘医生’}……。

②笛卡尔积

给定一组域D1,D2,…,Dn,允许其中某些域是相同的
D1,D2,…,Dn的笛卡尔积为:
D1×D2×…×Dn = {(d1,d2,…,dn)|diDi,i=1,2,…,n}。
是所有域取值的组合,其中不能有相同的值
例:集合A={a, b},集合B={0, 1, 2},
则两个集合的笛卡尔积:
A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

元组

一个笛卡尔积中,一个元素有几个值,就叫几元组。
例:在A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}中,
(a, 0), (a, 1) 等 都是2元组 。

属性

在二维表中别一列对应一个域,给每一列取的名字称之为属性。

③关系

D1×D2×…×Dn的 子集 叫作在域D1,D2,…,Dn上的
关系,表示为
R(D1,D2,…,Dn) R:关系名,n:关系的
例如:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)
R=SAP ,n=3

(1)候选码

若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。
简单的情况:候选码只包含一个属性。
最极端的情况:所有属性组是候选码,称为全码

(2)主码

若一个关系有多个候选码,则选定其中一个为主码

(3)外码

设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码
    基本关系R称为参照关系(Referencing  Relation)
    基本关系S称为被参照关系(Referenced Relation)
  例:基本关系R:  学生(学号,姓名,性别,专业号(F),年龄)
         基本关系S:专业(专业号(ks),专业名)
     则专业号是关系R的外码。

2.关系模式

关系模式是对关系的描述,可以形式化地表示为:
 R(U,D,DOM,F)
              R             关系名
              U             组成该关系的属性名集合
              D             U中属性所来自的域
              DOM        属性向域的映象的集合
               F              属性间数据的依赖关系的集合

关系模式是静态稳定的
比如我们看到的一张二维表的表头,即有哪些列构成,每个列的名称,类型啊长度等等;
关系模式是型,而关系是值

3.关系数据库

在一个给定的应用领域中,所有关系的集合构成一个关系数据库。
关系数据库的型:
关系数据库模式,是对关系数据库的描述
关系数据库的值:
关系模式在某一时刻对应的关系的集合,通常称为关系数据库

二.关系模式完整性规则

1.实体完整性规则(Entity Integrity)

若属性A是基本关系R的主属性,则属性A不能取空值
空值就是“不知道”或“不存在”或“无意义”的值
例:选修(学号,课程号,成绩)
“学号、课程号”为主码
“学号”和“课程号”两个属性都不能取空值
可以简单记忆为:主属性不能为空

2.参照完整性规则

若属性(或属性组)F是基本关系R的外码它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须为:
或者取空值(F的每个属性值均为空值)
或者等于S中某个元组的主码值
简单记忆为:外码要么为空,要么源自于被参照关系的主码
例:学生(学号,姓名,性别,专业号,年龄,班长)
“班长”属性值可以取两类值:
(1)空值,表示该学生所在班级尚未选出班长
(2)非空值,该值必须是本关系中某个元组的学号值

3.用户定义的完整性

针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。是用户根据实际情况自己定义的


问:为什么外部码属性的值也可以为空?什么情况下才可以为空?
在现实中该属性的值不知道或无意义,尽管被参照关系的主码值确定,但参照关系中在外码属性上的值不知道,此时外码属性上的取值可以为空。外部码属性的值为空,说明外码属性的值不知。

三.关系代数

一种抽象的查询语言,用对关系的运算来表达查询。
在这里插入图片描述

①集合运算

(1)交并差
R
在这里插入图片描述
S
在这里插入图片描述

在这里插入图片描述
(2)笛卡尔积

一种抽象的查询语言,用对关系的运算来表达查询。
严格地讲应该是广义的笛卡尔积
       R: n目关系,k1个元组
       S: m目关系,k2个元组
R×S 
      列:(n+m)列元组的集合
           元组的前n列是关系R的一个元组
           后m列是关系S的一个元组
      行:  k1×k2个元组(基数)
           R×S = {tr ts |tr R ∧ tsS }

在这里插入图片描述

②代数关系

1. 选择 σ

在关系R中选择满足给定条件的诸元组
σF® = {t|tR∧F(t)= ‘真’}
F:选择条件,是一个逻辑表达式,取值为“真”或“假”
基本形式为:X1θY1
θ表示比较运算符,它可以是>,≥,<,≤,=或<>
在这里插入图片描述
在这里插入图片描述
筛选出你所需要的行

2. 投影 π

从R中选择出若干属性列组成新的关系
πA® = { t[A] | t R } A:R中的属性列

  **投影操作主要是从列的角度进行运算**

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200307212252991.png)
投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行)

筛选出你所需要的列

3. 连接 ⋈

从两个关系的笛卡尔积中选取属性间满足一定条件的元组
在这里插入图片描述
A和B:分别为R和S上度数相等且可比的属性组
θ:比较运算符
连接运算是:在R和S的广义笛卡尔积R×S中,
选取R在A属性组上的值与S在B属性组上的值满足比较关系θ的元组
两种常用的连接运算
等值连接
θ为“=”的连接运算称为等值连接
自然连接
在等值连接中,在结果中把重复的属性列去掉。
在这里插入图片描述

4. 除 ÷

象集
给定一个关系R(X,Z),X和Z为属性组。
当t[X]=x时,x在R中的象集(Images Set)为:
在这里插入图片描述
它表示R中属性组X上值为x的诸元组在Z上分量的集合
(t[X]表示元组t中相应于属性X的一个分量)
在这里插入图片描述
除:
给定关系R (X,Y) 和S (Y,Z),其中X,Y,Z为属性组。
元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:
在这里插入图片描述
Yx:x在R中的象集,x = tr[X]
在这里插入图片描述
在关系R中,A可以取四个值{a1,a2,a3,a4}
a1的象集为 {(b1,c2),(b2,c3),(b2,c1)}
a2的象集为 {(b3,c7),(b2,c3)}
a3的象集为 {(b4,c6)}
a4的象集为 {(b6,c6)}
S在(B,C)上的投影为
{(b1,c2),(b2,c1),(b2,c3) }
只有a1的象集包含了S在(B,C)属性组上的投影
所以 R÷S ={a1}

课后练习题解答

在这里插入图片描述(1) Π S N O ( σ J N O = J 1 ( S P J ) ) \Pi_{SNO}(\sigma_{JNO='J1'}(SPJ))
(2) Π S N O ( σ J N O = J 1 P N O = P 1 ( S P J ) ) \Pi_{SNO}(\sigma_{JNO='J1'\bigwedge PNO='P1'}(SPJ))
(3) Π S N O ( σ J N O = J 1 C O L O R = ( S P J P ) ) \Pi_{SNO}(\sigma_{JNO='J1'\bigwedge COLOR='红'}(SPJ\bowtie P))
(4) Π J N O ( J ) Π J N O ( σ C O L O R = ( P σ C I T Y = ( S P J S ) ) \Pi_{JNO}(J)-\Pi_{JNO}(\sigma_{ COLOR='红'}(P\bowtie \sigma_{ CITY='天津'}(SPJ\bowtie S))
(5) Π J N O , P N O ( S P J ) ÷ Π P N O ( σ S N O = S 1 ( S P J ) ) \Pi_{JNO,PNO}(SPJ)\div \Pi_{PNO}(\sigma_{SNO='S1'}(SPJ))

发布了15 篇原创文章 · 获赞 8 · 访问量 4032

猜你喜欢

转载自blog.csdn.net/tutouxiaogangpao/article/details/104718014