关系操作和关系的完整性

来源:互联网 发布:java cms内容管理系统 编辑:程序博客网 时间:2024/04/28 12:13

关系模型中常用的关系操作:查询操作和插入、删除、修改操作。
查询是关系操作中最重要的部分。

一、关系操作

1. 查询操作分类

选择、投影、连接、除、并、差、交、笛卡尔积等;其中,基本操作有:选择、投影、并、差、笛卡尔积

2. 关系操作的特点

集合操作方式,即操作的对象和结果都是集合,这种方式也称为一次一集合的方式。而非关系数据模型的数据操作方式则为一次一记录的方式。

3. 关系数据语言的分类

早期的关系操作能力通常用代数方式或逻辑方式来表示,分别称为关系代数和关系演算
关系代数用对关系的运算来表达查询要求,关系演算则用谓词来表达查询要求。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域演算。

关系完备性:一个关系数据语言能够表示关系代数可以表示的查询,称为具有完备的表达能力。关系代数、元组关系演算和域关系演算都具有完备的表达能力,它们都是抽象的查询语言。

  1. 关系代数语言(ISBL)
  2. 关系演算语言:元组关系演算语言(ALPHA、QUEL)、域关系演算语言(QBE)
  3. 具有关系代数和关系演算双重特点的语言(SQL)
    其中,SQL语言是一种高度非过程化的语言,用户不必请求数据库管理员为其建立特殊的存取路径,存取路径的选择由关系数据库管理系统的优化机制来完成。它不仅具有丰富的查询功能,而且具有数据定义和数据控制功能,是集查询、数据定义语言、数据操纵语言和数据控制语言(DCL)于一体的关系数据语言。它是关系数据库的标准语言。

二、 关系的完整性

关系模型的完整性规则是对关系的某种约束条件。
关系的两个不变性:实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。

关系模型中有三类完整性约束

1. 实体完整性

关系数据库中每个元组应该是可区分的,是唯一的。

实体完整性规则概述:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值。所谓空值就是“不知道”或“不存在”或“无意义”的值。所以,如果主码由若干属性组成,则所有这些主属性不能取空值。
1)它是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集。
2)现实世界中的实体的分的,即它们具有某种唯一性标识。
3)相应地,关系模型中心主码作为唯一性标识。
4)主码中的属性即主属性不能取空值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体。

2. 参照完整性

外码:设F是基本关系R的一个或一组属性,但不是关系R的码,K是基本关系S的主码。如果F与K相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。R和S不一定是不同的关系。目标关系S的主码K和参照关系R的外码F必须定义在同一个(或同一组)域上。
参照完整性规则概述:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码K相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须或者取空值(F的每个属性值均为空值),或者等于S中某个元组的主码值。其实它就是定义外码与主码之间的引用规则,可以从表之间的主键和外键关系进行理解。

3. 用户定义的完整性

它是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。

用户完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。例如某个属性必须取唯一值、某个非主属性不能取空值等。