数据库原理和应用(6)—— 候选码、主码和外码,关系的完整性、关系代数、关系的演算

一、候选码、主码和外码

1. 候选码(Candidate Key)

定义:能唯一标识关系中元组的一个属性或属性集,称为候选码。

性质:具有唯一性最小性

2. 关系的主码和外码

主码
  • 定义:从多个候选码中选择一个作为查询、插入、删除元组的操作变量,被选用的候选码称为主关系码(主键,主码,关系键,关键字)
  • 每个关系必定有且只有一个主码,选择后不能重复。
关系的主属性
  • 主属性(Prime Attribute):包含在主码中的各个属性称为主属性。
  • 非主属性(Non-Prime Attribute):不包含在任何候选码中的属性称为非主属性(或非码属性)。
  • 全码: 所有属性的组合式关系的候选码。
  • 超码:包含候选码的属性组合。
外码
  • 定义:如果关系R2的一个或一组属性X不是R2的主码,而是另一个关系R1的主码,则该属性或属性组X称为关系R2的外部关系键或外码(Foreign Key),并称R2为参照关系(Referencing Relation),关系R1称为被参照关系(Referenced Relation)。
  • 被参照关系的主码和参照关系的外码必须定义在同一个域上。

二、关系的完整性

1. 概述

​ 为了维护关系数据库中数据与现实世界的一致性,对关系数据库的插入、删除和修改操作必须有一定的约束条件,这些约束条件实际上是现实世界的要求。任何关系在任何时刻都要满足这些语义约束。

2. 三类完整性约束

实体完整性 必须满足的性质
  • 定义:实体完整性是指主码的值不能为空或部分为空。
参照完整性 必须满足的性质
  • 定义:如果关系R2的外码X与关系R1的主码相符,则X的每个值

    或者等于R1中主码的某一个值 或者 取空值。

用户自定义完整性 具体领域的语义约束
  • 定义:针对某一具体关系数据库的约束条件,它反映某一具体应用所设计的数据必须满足的语义要求。

三、关系代数

1. 关系代数的分类及其运算符

  • 关系代数是一种抽象的查询语言
  • 关系代数的运算对象与运算结果都是关系
  • 关系代数运算符
关系代数的运算按运算符的不同主要分为两类
  • 传统的集合运算:把关系看成元组的集合,以元组作为集合中元素来进行运算, 其运算是从关系的“水平”方向即行的角度进行的。包括并(∪)、差(-)、交(∩)和广义笛卡尔积(×) 等运算。

    • 传统集合(除笛卡尔积)是典型的二目运算。因此需要在两个关系中进行,两个关系R,S,若满足

      • 具有相同的度
      • R中第i个属性和S中第i个属性必须来自同一个域(列同质)

      则说关系R、S是相容的。

    • 并操作:增加一条记录;

      差操作:删除一条记录。

  • 专门的关系运算:不仅涉及行运算,也涉及列运算,这种运算是为数据库的应用而引进的特殊运算。包括选取(行)、投影(行列均改变)、连接(二目:θ连接 等值/大于/小于,自然连接 去掉重复列)和除法等运算。

    • θ连接:等值连接,小于连接,大于连接
      自然连接:在等值连接的情况下,当连接属性X与Y具有相同属性组时,把在连接结果中重复的属性列去掉

    • 等值连接与自然连接的区别
      自然连接要求相等属性值的属性名相同,而等值连接不要求;
      自然连接是去掉重复列的等值连接。

    • 除法运算是二目运算,设有关系R(X,Y)与关系S(Y,Z),其中X,Y,Z为属性集合,R中的Y与S中的Y可以有不同的属性名,但对应属性必须出自相同的域。

      同时考虑行和列,适合包含“全部”和“至少”之类的查询。

四、元组关系的演算

  • 定义:元组关系演算中,以元组为单位,通过谓词公式约束所要查找元组的条件,可以表示为 {t |ψ(t)}

    其中,t为元组变量,即查询的目的。ψ称为元组演算的谓词公式,即查询的条件。

  • {t |ψ(t)}表示使为真的元组t的集合。

    ψ(t) 可以通过原子公式、约束变量、自由变量和运算符构成。

  • 若元组演算公式中的一个元组变量前有全称量词存在量词,则称该变量为约束元组变量,否则称为自由元组变量。

五、域关系演算

定义:以元组中的域为单位,按照谓词公式所约束的条件查询所需的元组,表示为

​ {<x1,x2,…xn>|R(x1,x2,…xn)}

  • 其中x1,x2,…xn代表域变量,即元组的分量,R代表由原子构成的公式;
  • R的定义如元组演算关系,同样是反复由原子公式、自由变量、约束变量和运算符构成。
域关系演算语言
QBE(Query By Example)
  • 一种高度的非过程化,基于屏幕表格的查询语言。
  • 用户通过填写表格,并给出查询事例的方式获取结果。
  • 给出的查询事例是域变量。
QBE语言的使用
关系名 属性1 …… 属性n
操作命令 属性值或查询条件 …… 属性值或查询条件
  • 操作命令:P打印或显示、U修改、I插入、D删除
  • 或关系写在两行中
  • 多表查询时,需要给出相同例子的域变量
发布了77 篇原创文章 · 获赞 30 · 访问量 6377

猜你喜欢

转载自blog.csdn.net/weixin_45926367/article/details/104934143