关系数据库

来源:互联网 发布:聚合数据接口开发教程 编辑:程序博客网 时间:2024/05/17 00:13

  • 1 关系数据结构及形式化定义
  • 2 关系操作
  • 3 关系的完整性
  • 4 关系代数
    • 41 传统的集合运算
    • 42 专门的关系运算
  • 5 关系演算

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

关系的定义

  • 域: 一组具有相同数据类型的值得集合,如整数,字符串等
  • 笛卡尔积: 给定一组域D1, D2, …, Dn (可相同), D1, D2, …, Dn上的笛卡尔积为: D1× D2 × … × Dn={ (d1, d2, …, dn) | di Di, i = 1, 2 , …, n}
  • (d1, d2, …, dn)称为一个元组(Tuple)
  • di叫作元组(d1, d2, …, dn)的第i 个分量(component)
  • 关系(Relation): D1× D2 × … × Dn的一个子集叫做域D1, D2, …, Dn上的关系
  • 定义在n个域上的关系称为n元(n目)关系。

Dname={王小明,李莉},Dsex={男,女},则Dname ×Dsex={(王小明,男),(王小明,女),(李莉,男),(李莉,女)}

但是其中只有部分元组是有用的,我们只选取其中有意义的元组

我们有几个概念需要了解

  • 候选码(Candidate Key),简称码:能唯一标识元组的属性(组)。
  • 主码(Primary Key):多个候选码中选定一个作主码。
  • 主属性(Prime Attribute):候选码中的各个属性。
  • 非主属性(Non-Key Attribute):不出现在任何候选码中的属性

2.2 关系操作

关系模型中常用的关系操作包括查询和插入,删除,修改等两大部分

2.3 关系的完整性

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

关系模型中以主码作为唯一性标识

现实世界中的实体是可区分的,即它们具有某种唯一性标识

实体完整性

这里下面sno和cno都不能完整地表示一个实体,但是他们两个合起来就可以标识一个实体

用户定义的完整性: 是针对某一具体关系数据库的约束条件

2.4 关系代数

关系代数的运算主要分为传统的集合运算和专门的关系运算

2.4.1 传统的集合运算

传统的集合运算分为并,差,交,笛卡尔积

并:R ∪ S = { t | t∈R ∨ t∈S }
差:R – S = { t | t∈R ∧ t∈S }
交:R ∩ S = { t | t∈R ∧ t∈S }
R×S = {trts | tr∈R ∧ ts∈S }

2.4.2 专门的关系运算

选择

选择运算使用’σ’符号和条件进行选择,选择的结果是从原始表中取出一行

投影

投影运算使用’π’符号和条件进行选择,选择的结果是从原始表中取出一列

连接

连接分为比较连接,等值连接和自然连接

我们常使用自然连接

自然连接是把两个表中同样列名的列中完全相同的行取出来,然后合成一个新表,这个新表还要注意去重

除法运算

这个解释起来比较复杂,我们用一个例题来解释

因为R中a1的象集为{(b1,c2),(b1,c3),(b2,c1)},而显然只有a1的象集包含了S在(B,C)属性组上的投影,所以R÷S的结果就是a1了

注意除运算最后剩下的结果中不包含重复的属性组,所以结果中只有A

关于类似的题目可以参考书上和PPT上的内容

2.5 关系演算

关系演算以谓词演算(一阶谓词逻辑)为基础,用谓词来描述关系的构成。按照谓词变元的不同分为元组关系演算和域关系演算,分别简称为元组演算和域演算。

元组演算

{t | Φ(t)} 称为元组演算表达式。其中:t 称为元组变量,Φ(t) 称为元组演算公式,简称公式。

原子公式

1) R(t)

R是关系名,t是元组变量。表示:t是R中的元组(某一行)。

2) t[i] θ u[j]

t,u为元组变量,θ为比较运算符。表示:元组t的第i个分量与元组u的第j个分量满足比较关系θ。

3) t[i]θc 或 cθt[i]

其中c为常量。

我们来举几个例子,首先有R和S

例一

对其进行解释就是说对于S来说,选择那些每一行的第一个元素大于2的行

例二

选择R中与S不一样的行,即做差运算

例三

R中的每一行的第二个分量u[2],存在一个u[2]大于S中第三个分量t[3]

例四

选择满足R中那些行中第三个分量t[3]大于S中任何行的第一个分量u[1]的行

元组演算的等价规则

再来看一个更复杂的例子

1) 查询选修了c2课程的学生学号和成绩。

2) 查询选修了c2课程的学生学号和姓名

3) 查询选修了数据库课程的学生学号、姓名和成绩。

4) 查询选修了c2或c4课程的学生学号。

5) 查询选修了c2和c4课程的学生学号。

6) 查询不学c2课的学生学号

7) 查询选修了全部课程的学生学号

8) 查询选修学号为“802”的学生所选全部课程的学生学号。

关系代数表达式与元组演算表达式的等价转换

原创粉丝点击