第二章关系数据库

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

2.1.1 关系

:一组具有相同数据类型的值的集合。

笛卡尔积:设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作A x B。符号记为:A×B={(x,y)|x∈A∧y∈B}

每个(x,y)叫做元组,元组中每个值称为分量,一个域允许的不同取值的个数称为这个域基数


例如给出三个域:

​ D1=导师集合={张清玫,刘逸}

​ D2=专业集合={计算机专业,信息专业}

​ D3=研究生集合={李勇,刘晨,王敏}

则D1、D2、D3的笛卡尔积为:

​ D1xD2xD3={(张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),

​ (张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),

​ (张清玫,信息专业,刘晨),(张清玫,信息专业,王敏),

​ (刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),

​ (刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),

​ (刘逸,信息专业,刘晨),(刘逸,信息专业,王敏),}

其中,(张清玫,计算机专业,李勇)、(张清玫,计算机专业,刘晨)都是元组。张清玫、计算机专业、李勇等都是分量。该笛卡尔积的基数为2 * 2 * 3 = 12,也就是说D1xD2xD3一共有12个元组。


关系:D1xD2x…xDn的子集叫做在域D1,D2,…,Dn上的关系,表示R(D1,D2,…,Dn),这里的R表示关系的名字,n是关系的

若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码,候选码的诸属性称为主属性

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

2.2 关系操作

2.2.1 基本的关系操作

关系模型中常用的关系操作包括两部分:

  • 查询(选择,投影,连接,除,并,差,交,笛卡尔积)

  • 更新(插入,删除,修改)

2.2.2 关系数据语言

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

2.3 关系的完整性

2.3.1 实体完整性

主码约束实现的

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

2.3.2 参照完整性

外码约束实现的

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

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

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

2.3.3 用户定义的完整性

​ 不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性就是针对某一具体关系数据库的约束条件,它反应某一具体应用所涉及的数据必须满足的语义要求。

​ 例如,某个属性必须取唯一值,某个属性取值范围可以定义在0~100之间等。

2.4 关系代数

​ 关系代数的运算对象是关系,运算结果亦是关系。关系代数用到的运算符包括两类:集合运算符和专门的关系运算符,如图2.4所示。

图2.4 关系代数运算符
 图2.4 关系代数运算符
2.4.1 传统的集合运算

传统的集合运算是二目运算。

R

ABC
a1b1c1
a1b2c2
a2b2c1

S

BAC
b2a1c2
b3a1c2
b2a2c1

:R∪S={t|t∈R∨t∈S}

:R-S={t|t∈R∧t∉S}

:R∩S={t|t∈R∧t∈S}

笛卡尔积:R×S={(x,y)|x∈R∧y∈S}

R∪S

ABC
a1b1c1
a1b2c2
a2b2c1
a1b3c2

R∩S

ABC
a1b2c2
a2b2c1

R-S

ABC
a1b1c1

R×S

R.AR.BR.CS.AS.BS.C
a1b1c1a1b2c2
a1b1c1a1b3c2
a1b1c1a2b2c1
a1b2c2a1b2c2
a1b2c2a1b3c2
a1b2c2a2b2c1
a2b2c1a1b2c2
a2b2c1a1b3c2
a2b2c1a2b2c1
2.4.2 专门的关系运算

Student

学号sno姓名sname性别ssex年龄sage所在系sdept
201215121李勇20CS
201215122刘晨19CS
201215123王敏18MA
201215125张立19IS

选择:在关系R中选择满足给定条件的诸元组。该运算是从的角度进行的运算。

σsdept=‘IS‘(Student),即在student表中选择sdept为’IS’的元组,结果如下:

学号sno姓名sname性别ssex年龄sage所在系sdept
201215125张立19IS

投影:从R中选择出若干属性列组成新的关系。该运算是从的角度进行的运算。投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,应取消这些重复行

πsdept(Student),即在student表中投影出sdept列,结果如下:

所在系sdept
CS
MA
IS

连接:从两个关系的笛卡尔积中选取属性间满足一定条件的元组。

  • 等值连接:从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组。
  • 自然连接:是一种特殊的等值连接。一般的连接操作是从行的角度进行运算,但自然连接还需要取消重复列,所以是同时从行和列的角度进行的运算。

那些被舍弃的元组称为悬浮元组。如果把悬浮元组也保留在结果集中,而在其他属性上填空值(NULL),那么这种连接就叫做外连接;如果只保留左边关系R中的悬浮元组,就叫做左外连接;如果只保留右边关系S中的悬浮元组,记叫做右外连接

除运算:设关系R除以S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值