域是一组具有相同数据类型的值的集合,代表了属性的取指范围。

属性和码


属性:关系中的每一列为一个属性。
主属性:候选键中的任一属性。
非主属性:不包含在任何候选键的属性。
码(键):表中的某一个属性或一组属性。
主键:候选键中选择的一个键。
候选键:某一个或一组属性的值能够唯一地标识一个元组,真子集不能唯一地标识一个元组(缺一不可)。

关系


关系是元组的集合,对应一张二维表,表示为

类型

  1. 基本关系(基本表):实际存在的表,是实际存储数据的逻辑表示。
  2. 查询结果:查询执行产生的结果对应的临时表。
  3. 视图:由基本表或其他视图导出的虚表,不存储实际数据。

性质

  1. 列是同质的:每一列的分类是同一类型的数据,来自同一个域。
  2. 不同列可以出自同一个域,但列名必须不同。
  3. 列的顺序无关:列的次序可以任意交换,不会改变关系。
  4. 行的顺序无关:行的次序可以任意交换,不会改变关系。
  5. 任意两个元组的码不能相同:不能有相同的行。
  6. 分量必须取原子值:每个分量都是不可分的数据项(不允许表中套表)。

关系模型


关系的描述称为关系模式,表示为,简记为

关系完整性


实体完整性约束

若某个属性是关系的主属性,则该属性不能取空值。若主键为复合主键,所有主属性都不能取空值。

参照完整性约束

若属性或一组属性是一个基本关系的外键,与另一个基本关系的主键相对应,则该基本关系的该外键的值只能:

  1. 取空值。
  2. 对应于另一个基本关系中的主键值。

用户定义的完整性

针对某一具体关系数据库的约束条件。

关系代数


传统的集合运算

要求两个关系具有相同的目(属性数相同),对应的属性的域也相同。

  • 。保留R和S的全部元组并进行去重。
  • 。属于R但不属于S的元组。
  • 。同时属于R和S的元组。
  • 广义笛卡尔积。属性数 = R度数+S度数;元组数(基数)= R行数 ×S行数。

专门的关系运算

  • 选择。从R中选择符合条件的元组。
  • 投影。从R中选择符合条件的属性。投影后出现重复行需要去重。
  • 连接。在笛卡尔积中选取满足条件的元组。
    • 等值连接。在笛卡尔积中选取属性相等的元组。
    • 自然连接。特殊的等值连接。比较的属性是关系中的同名列,并在结果中去除重复列
    • 外连接:不存在公共属性相等的元组被称为悬浮元组,未匹配的属性填NULL。
      • 左外连接:保留左表的悬浮元组。
      • 右外连接:保留右表的悬浮元组。
      • 全外连接:左右表的悬浮元组。
  • :设关系,其中Y是公共属性集。对于R的X的每一种取值x,Y的取值的集合即为x在R上的象集
    1. 找出R中每个x的象集。
    2. 找出S在Y上的投影。
    3. 如果x的象集包含了S在Y上的投影,则x属于结果集。