学习笔记——DB关系数据库

关系模型的三个组成部分:关系数据结构、关系操作集合和关系完整性约束。

关系数据库系统与非关系数据库系统的区别是,关系系统只有“表”这一种数据结构; 而非关系数据库系统还有其他数据结构,以及对这些数据结构的操作。

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

        关系模型的数据结构非常简单,只包含单一的数据结构关系。

        在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。

1.关系

        若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码(candidate key )。 若一个关系有多个候选码,则选定其中一个为主码(primary key)。候选码的诸属性称为主属性(prime attribute)。不包含在任何候选码中的属性称为非主属性(non-prime attribute)或非码属性(non-key attribute)。

        关系可以有三种类型:基本关系(通常又称为基本表或基表)、查询表和视图表。其中,基本表是实际存在的表,它是实际存储数据的逻辑表示;查询表是查询结果对应的表; 视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

        关系模型要求关系必须是规范化(normalization)的, 即要求关系必须满足一定的规范条件。 这些规范条件中最基本的一条就是, 关系的每一个分量必须是一个不可分的数据项。规范化的关系简称为范式(Normal Form, NF)。

        关系表中不允许还有表,简言之不允许“表中有表”。

2.关系模式

       关系的描述称为关系模式。关系数据库中,关系模式是型,关系是值。

       关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。例如,学生关系模式在不同的学年,学生关系是不同的。

3.关系数据库

       所有关系的集合构成一个关系数据库。
       关系数据库的值是这些关系模式在某一时刻对应的关系的集合, 通常就称为关系数据库。

4.关系模型的存储结构

      有的管理系统中,一个表对应一个文件。

二、关系操作

1.关系操作

       增删改查。关系的查询表达能力很强,是关系操作中最主要的部分。

       查询操作又可以分为选择(select)、投影(project)、连接(join)、除(divide)、并(union)、差(except),交(intersection)、笛卡儿积等。 其中选择、 投影、 并、 差、 笛卡儿积是5种基本操作, 其他操作可以用基本操作来定义和导出。

      关系操作的特点是集合操作方式, 即操作的对象和结果都是集合。 这种操作方式也称为一次一集合(set-at-a-time)的方式。 相应地, 非关系数据模型的数据操作方式则为一次一记录(record-at-a-time)的方式。

2.关系数据语言的分类

       (Structured Query Language, SQL),是一种介于关系代数和关系演算之间的结构化查询语言。SQL不仅具有丰富的查询功能, 而且具有数据定义和数据控制功能, 是集查询、 数据定义语言、 数据操纵语言和数据控制语言(Data Control Language, DCL)于
一体的关系数据语言。

三、关系的完整性

        关系模型中有三类完整性约束:实体完整性(entity integrity)、参照完整性(referential integrity)和用户定义的完整性(user-defined integrity)。

1)实体完整性:若属性(指一个或一组属性)A是基本关系R的主属性, 则A不能取空值(null value)。所谓空值就是“不知道”或“不存在”或“无意义”的值。

2)参照完整性:关系与关系之间存在着相互引用、相互约束的情况。参照完整性规则就是定义外码与主码之间的引用规则。

       设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码(foreign key),并称基本关系R为参照关系(referencing relation)。显然,目标关系S的主码Ks和参照关系R的外码F必须定义在同一个(或同一组) 域上。如下图。

       参照完整性:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须:

                             或者取空值(F的每个属性值均为空值);    #外码属性本身不是主属性

                             或者等于S中某个元组的主码值。

    

      如上图,R中的F必须满足上述条件。

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

四、关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。

关系代数的运算对象是关系,运算结果亦为关系。

运算符:

 

并(union):由属于R或属于S的元组组成。

差(except):由属于R而不属于S的所有元组组成。

交(intersection):由既属于R又属于S的元组组成。

选择(selection):从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。

投影(projection):从R中选择出若干属性列组成新的关系。

连接(join):从两个关系的笛卡儿积中选取属性间满足一定条件的元组。一般从行的角度进行运算,但自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章