数据库学习基础篇-关系数据库

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

2.1.1 关系
关系模式的数据结构非常简单,只包含单一的数据结构-关系。在用户看来,关系模型中数据的逻辑结构是一张扁平二维表。
关系模型是建立在集合代数的基础上的,下面我们将从集合论角度给出关系数据结构的形式化定义。

  1. 域:一组具有相同数据类型的集合。例如:自然数、整数、实数、长度小于25字节的字符串集合、{0,1}、{男,女}…
  2. 笛卡尔积:是域上的一种集合运算;给定一组域D1,D2,…,Dn,允许其中某些域是相同的,D1,D2,…,Dn的笛卡尔积为:D1*D2*…*Dn={(d1,d2,…,dn) | di属于Di,i=1,2,3,…},其中每个元素(d1,d2,…,dn)叫做一个n元组,或简称元组,元组中每一个值di叫做一个分量。
  3. 一个域允许的不同取值的个数称为这个域的基数。
  4. 笛卡儿积可表示为一个二维表。表中每一行对应一个元组,表中每一列的值来自一个域。
  5. 关系:D1*D2*…*Dn的子集叫做在域D1,D2,…,Dn上的关系。n叫做关系的目或者度。
  6. 若关系中的某一属性组的值能唯一的标识一个元组。而其子集不能,则称该属性组为候选码。若一个关系有多个候选码,则选定其中之一为主码。
  7. 候选码的诸属性称为主属性
  8. 关系有三种类型:基本关系(基本表或者基表)、查询表、视图表。基本表实际存在;查询表是查询结果对应的表;视图表不对应实际存储的数据。

基本关系的6条性质

  • 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。
  • 不同的列可出自同一个域。
  • 列的顺序无所谓,正是因此,许多实际关系数据库产品中增加新属性时,都是插在最后一列。
  • 任意两个元组的候选码不能取相同的值。
  • 行的顺序无所谓。
  • 分量必须取原子值,即每一个分量都必须是不可分的数据项,即规范化,简称范式。

关系模式

  1. 关系模式是静态的稳定的。
  2. 关系的描述称为关系模式,可以表示为R(U,D,DOM,F);其中R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。

关系操作

关系模式给出了关系操作的能力的说明,但不对关系数据库管理系统语言给出具体夫人语法要求,也就是说不同的关系数据库管理系统可以定义开发不同的语言来实现这些操作。
基本的关系操作

  1. 关系模式中常用的关系操作包括查询操作和插入、删除、修改操作这两大部分。
  2. 查询操作又可以分为选择、投影、连接、除、并、差、交、笛卡儿积等。其中选择、投影、并、差、笛卡儿积是5种基本操作,其他操作可以由基本操作来定义和导出。
  3. 关系操作的特点是集合操作方式,即操作的对象和结果都是集合,这种操作方式也称为一次一集合的方式;相应的,非关系数据模型的数据操作方式则为一次一记录的方式。

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

关系的完整性

   关系模式的完整性规则是对关系的某种约束条件,也就是说关系的值随着时间的变化时应该满足一些约束条件。这些约束条件实际上是现实世界的要求。
   关系模型中有三类完整性约束:实体完整性、参照完整性和用户定义的完整性。前两者的关系模型必须满足的完整性约束条件,被称为关系的两个不变性,应由关系系统自动支持,后者是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。

实体完整性
关系数据库中每个元组应该是可区分的,是唯一的。这样的约束条件用实体完整性来保证。
若属性(指一个或一组属性)A是基本关系B的主属性,则A不能取空值。所谓空值就是“不知道”或“不存在”或“无意义”的值。
实体完整性的规则说明如下

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

参照完整性
下面引入外码的概念,然后给出表达关系之间相互引用约束参照完整性的定义。
设F是基本关系R的一个或者一组属性,但不是关系R的码,Ks是基本关系的主码。如果F与Ks相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S被称为被参照关系或目标关系。
参照完整性规则

若属性F书=是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R与S不一定是不同的关系),则对于R中每个元组在F上的值必须满足以下几点:

  1. 或者取空值(F的每个属性值均为空值)
  2. 或者等于S中某个元组的主码值。
  3. 空值,表示尚未给该学生分配专业;
  4. 非空值,专业号来说必须是专业关系中你某个元组的“专业号”的值。

关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。
运算的三大要素:运算对象、运算符、运算结果。
关系代数的运算对象是关系,运算结果亦是关系。关系代数用到的运算符包括两类:集合运算符和专门的运算关系符。
关系代数的运算按运算符的不同分为传统的集合运算符和专门的关系运算两类;其中传统的集合运算将关系看成元组的集合,从行的角度来看的;而专门的关系运算不仅涉及行而且涉及列。
传统的集合运算符
传统的集合运算是二目运算,包括并、差、交、笛卡儿积四种运算。
专门的运算关系
专门的运算关系包括选择、投影、连接、除运算。
选择又称为限制。它是在关系R中选择满足给定条件的诸元组。
投影关系R上的投影是从R中选择若干属性列组成新的关系。
连接从两个关系的笛卡尔积中选取属性间满足一定条件的元组。

以上就是8种关系运算,只是粗略了解,欢迎批评指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

li_jeremy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值